mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-27 12:47:39 -05:00
Merge pull request #177 from AnonymousRandomPerson/main
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
Decomped special move type funcs
This commit is contained in:
@@ -1,2 +1 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
1
asm/include/overlay_10_rodata_022C48E4.inc
Normal file
1
asm/include/overlay_10_rodata_022C48E4.inc
Normal file
@@ -0,0 +1 @@
|
||||
#pragma once
|
||||
@@ -1,140 +1,10 @@
|
||||
#pragma once
|
||||
.public DoMoveAbsorb
|
||||
.public DoMoveAttract
|
||||
.public DoMoveBeatUp
|
||||
.public DoMoveBlastBurn
|
||||
.public DoMoveBlazeKick
|
||||
.public DoMoveBlock
|
||||
.public DoMoveBlowback
|
||||
.public DoMoveBrickBreak
|
||||
.public DoMoveBrine
|
||||
.public DoMoveCaptivate
|
||||
.public DoMoveChargeBeam
|
||||
.public DoMoveCharm
|
||||
.public DoMoveCloseCombat
|
||||
.public DoMoveConfuse
|
||||
.public DoMoveCopycat
|
||||
.public DoMoveCrunch
|
||||
.public DoMoveCrushClaw
|
||||
.public DoMoveCurse
|
||||
.public DoMoveDamage__02325DC0
|
||||
.public DoMoveDamage__0232A500
|
||||
.public DoMoveDamage__0232B8B0
|
||||
.public DoMoveDamage__0232DD88
|
||||
.public DoMoveDamageBoostAllStats
|
||||
.public DoMoveDamageBurn10FlameWheel
|
||||
.public DoMoveDamageConfuse10
|
||||
.public DoMoveDamageConfuse30
|
||||
.public DoMoveDamageConstrict10
|
||||
.public DoMoveDamageCringe10
|
||||
.public DoMoveDamageCringe20
|
||||
.public DoMoveDamageCringe30
|
||||
.public DoMoveDamageDrain
|
||||
.public DoMoveDamageEatItem
|
||||
.public DoMoveDamageFreeze15
|
||||
.public DoMoveDamageHpDependent
|
||||
.public DoMoveDamageInlined
|
||||
.public DoMoveDamageLowerAccuracy40
|
||||
.public DoMoveDamageLowerSpecialDefense50
|
||||
.public DoMoveDamageLowerSpeed100
|
||||
.public DoMoveDamageLowerSpeed20
|
||||
.public DoMoveDamageMultihitFatigue
|
||||
.public DoMoveDamageParalyze10
|
||||
.public DoMoveDamageParalyze20
|
||||
.public DoMoveDamagePoison18
|
||||
.public DoMoveDamagePoison40
|
||||
.public DoMoveDamageStealItem
|
||||
.public DoMoveDamageWeightDependent
|
||||
.public DoMoveDamageWithRecoil
|
||||
.public DoMoveDefog
|
||||
.public DoMoveDestinyBond
|
||||
.public DoMoveDoubleEdge
|
||||
.public DoMoveDragonRage
|
||||
.public DoMoveDreamEater
|
||||
.public DoMoveDynamicPunch
|
||||
.public DoMoveDamage__02325DC0
|
||||
.public DoMoveEarthquake
|
||||
.public DoMoveEmbargo
|
||||
.public DoMoveEncore
|
||||
.public DoMoveEndeavor
|
||||
.public DoMoveEruption
|
||||
.public DoMoveFacade
|
||||
.public DoMoveFakeOut
|
||||
.public DoMoveFakeTears
|
||||
.public DoMoveFeatherDance
|
||||
.public DoMoveFeint
|
||||
.public DoMoveFireFang
|
||||
.public DoMoveFissure
|
||||
.public DoMoveFlareBlitz
|
||||
.public DoMoveFlatter
|
||||
.public DoMoveFrustration
|
||||
.public DoMoveGastroAcid
|
||||
.public DoMoveGuardSwap
|
||||
.public DoMoveGust
|
||||
.public DoMoveGyroBall
|
||||
.public DoMoveHammerArm
|
||||
.public DoMoveHeadbutt
|
||||
.public DoMoveHeadSmash
|
||||
.public DoMoveHeartSwap
|
||||
.public DoMoveHiddenPower
|
||||
.public DoMoveHornDrill
|
||||
.public DoMoveHurl
|
||||
.public DoMoveIceFang
|
||||
.public DoMoveIronTail
|
||||
.public DoMoveKnockOff
|
||||
.public DoMoveLastResort
|
||||
.public DoMoveLeechSeed
|
||||
.public DoMoveLowerAccuracy1
|
||||
.public DoMoveLowerDefense1
|
||||
.public DoMoveLowerSpeed1
|
||||
.public DoMoveMagnitude
|
||||
.public DoMoveMetalSound
|
||||
.public DoMoveMiracleEye
|
||||
.public DoMoveMistBall
|
||||
.public DoMoveMudSlap
|
||||
.public DoMoveNaturalGift
|
||||
.public DoMoveNightmare
|
||||
.public DoMoveOhko
|
||||
.public DoMovePainSplit
|
||||
.public DoMoveParalyze__02326E80
|
||||
.public DoMoveParalyze__02328230
|
||||
.public DoMoveParalyze__0232B434
|
||||
.public DoMovePause
|
||||
.public DoMovePayDay
|
||||
.public DoMovePoison
|
||||
.public DoMovePoisonFang
|
||||
.public DoMovePoisonTail
|
||||
.public DoMovePowerSwap
|
||||
.public DoMovePresent
|
||||
.public DoMovePsychoShift
|
||||
.public DoMoveRapidSpin
|
||||
.public DoMoveReturn
|
||||
.public DoMoveReversal
|
||||
.public DoMoveRolePlay
|
||||
.public DoMoveSacredFire
|
||||
.public DoMoveSecretPower
|
||||
.public DoMoveSeismicToss
|
||||
.public DoMoveSkillSwap
|
||||
.public DoMoveSmellingSalt
|
||||
.public DoMoveSmokescreen
|
||||
.public DoMoveSpite
|
||||
.public DoMoveSuperFang
|
||||
.public DoMoveSuperpower
|
||||
.public DoMoveSwagger
|
||||
.public DoMoveSwapItems
|
||||
.public DoMoveTaunt
|
||||
.public DoMoveThunderFang
|
||||
.public DoMoveThundershock
|
||||
.public DoMoveThunderWave
|
||||
.public DoMoveTickle
|
||||
.public DoMoveTorment
|
||||
.public DoMoveToxic
|
||||
.public DoMoveTriAttack
|
||||
.public DoMoveTripleKick
|
||||
.public DoMoveTrumpCard
|
||||
.public DoMoveTwineedle
|
||||
.public DoMoveTwister
|
||||
.public DoMoveWakeUpSlap
|
||||
.public DoMoveWhirlpool
|
||||
.public DoMoveWillOWisp
|
||||
.public DoMoveWrap
|
||||
.public DoMoveYawn
|
||||
|
||||
136
asm/include/overlay_10_rodata_022C593C.inc
Normal file
136
asm/include/overlay_10_rodata_022C593C.inc
Normal file
@@ -0,0 +1,136 @@
|
||||
#pragma once
|
||||
.public DoMoveAbsorb
|
||||
.public DoMoveAttract
|
||||
.public DoMoveBeatUp
|
||||
.public DoMoveBlastBurn
|
||||
.public DoMoveBlazeKick
|
||||
.public DoMoveBlock
|
||||
.public DoMoveBlowback
|
||||
.public DoMoveBrickBreak
|
||||
.public DoMoveBrine
|
||||
.public DoMoveCaptivate
|
||||
.public DoMoveChargeBeam
|
||||
.public DoMoveCharm
|
||||
.public DoMoveCloseCombat
|
||||
.public DoMoveConfuse
|
||||
.public DoMoveCopycat
|
||||
.public DoMoveCrunch
|
||||
.public DoMoveCrushClaw
|
||||
.public DoMoveCurse
|
||||
.public DoMoveDamageBoostAllStats
|
||||
.public DoMoveDamageBurn10FlameWheel
|
||||
.public DoMoveDamageConfuse10
|
||||
.public DoMoveDamageConfuse30
|
||||
.public DoMoveDamageConstrict10
|
||||
.public DoMoveDamageCringe10
|
||||
.public DoMoveDamageCringe20
|
||||
.public DoMoveDamageCringe30
|
||||
.public DoMoveDamageDrain
|
||||
.public DoMoveDamageEatItem
|
||||
.public DoMoveDamageHpDependent
|
||||
.public DoMoveDamageLowerAccuracy40
|
||||
.public DoMoveDamageLowerSpecialDefense50
|
||||
.public DoMoveDamageLowerSpeed100
|
||||
.public DoMoveDamageLowerSpeed20
|
||||
.public DoMoveDamageMultihitFatigue
|
||||
.public DoMoveDamageParalyze10
|
||||
.public DoMoveDamageParalyze20
|
||||
.public DoMoveDamagePoison18
|
||||
.public DoMoveDamagePoison40
|
||||
.public DoMoveDamageStealItem
|
||||
.public DoMoveDamageWeightDependent
|
||||
.public DoMoveDamageWithRecoil
|
||||
.public DoMoveDamage__02325DC0
|
||||
.public DoMoveDamage__0232A500
|
||||
.public DoMoveDamage__0232B8B0
|
||||
.public DoMoveDamage__0232DD88
|
||||
.public DoMoveDefog
|
||||
.public DoMoveDestinyBond
|
||||
.public DoMoveDoubleEdge
|
||||
.public DoMoveDragonRage
|
||||
.public DoMoveDreamEater
|
||||
.public DoMoveDynamicPunch
|
||||
.public DoMoveEmbargo
|
||||
.public DoMoveEncore
|
||||
.public DoMoveEndeavor
|
||||
.public DoMoveEruption
|
||||
.public DoMoveFacade
|
||||
.public DoMoveFakeOut
|
||||
.public DoMoveFakeTears
|
||||
.public DoMoveFeatherDance
|
||||
.public DoMoveFeint
|
||||
.public DoMoveFireFang
|
||||
.public DoMoveFissure
|
||||
.public DoMoveFlareBlitz
|
||||
.public DoMoveFlatter
|
||||
.public DoMoveFrustration
|
||||
.public DoMoveGastroAcid
|
||||
.public DoMoveGuardSwap
|
||||
.public DoMoveGust
|
||||
.public DoMoveGyroBall
|
||||
.public DoMoveHammerArm
|
||||
.public DoMoveHeadSmash
|
||||
.public DoMoveHeadbutt
|
||||
.public DoMoveHeartSwap
|
||||
.public DoMoveHiddenPower
|
||||
.public DoMoveHornDrill
|
||||
.public DoMoveHurl
|
||||
.public DoMoveIceFang
|
||||
.public DoMoveIronTail
|
||||
.public DoMoveKnockOff
|
||||
.public DoMoveLastResort
|
||||
.public DoMoveLeechSeed
|
||||
.public DoMoveLowerAccuracy1
|
||||
.public DoMoveLowerDefense1
|
||||
.public DoMoveLowerSpeed1
|
||||
.public DoMoveMagnitude
|
||||
.public DoMoveMetalSound
|
||||
.public DoMoveMiracleEye
|
||||
.public DoMoveMistBall
|
||||
.public DoMoveMudSlap
|
||||
.public DoMoveNaturalGift
|
||||
.public DoMoveNightmare
|
||||
.public DoMoveOhko
|
||||
.public DoMovePainSplit
|
||||
.public DoMoveParalyze__02326E80
|
||||
.public DoMoveParalyze__0232B434
|
||||
.public DoMovePause
|
||||
.public DoMovePayDay
|
||||
.public DoMovePoison
|
||||
.public DoMovePoisonFang
|
||||
.public DoMovePoisonTail
|
||||
.public DoMovePowerSwap
|
||||
.public DoMovePresent
|
||||
.public DoMovePsychoShift
|
||||
.public DoMoveRapidSpin
|
||||
.public DoMoveReturn
|
||||
.public DoMoveReversal
|
||||
.public DoMoveRolePlay
|
||||
.public DoMoveSacredFire
|
||||
.public DoMoveSecretPower
|
||||
.public DoMoveSeismicToss
|
||||
.public DoMoveSkillSwap
|
||||
.public DoMoveSmellingSalt
|
||||
.public DoMoveSmokescreen
|
||||
.public DoMoveSpite
|
||||
.public DoMoveSuperFang
|
||||
.public DoMoveSuperpower
|
||||
.public DoMoveSwagger
|
||||
.public DoMoveSwapItems
|
||||
.public DoMoveTaunt
|
||||
.public DoMoveThunderFang
|
||||
.public DoMoveThunderWave
|
||||
.public DoMoveThundershock
|
||||
.public DoMoveTickle
|
||||
.public DoMoveTorment
|
||||
.public DoMoveToxic
|
||||
.public DoMoveTriAttack
|
||||
.public DoMoveTripleKick
|
||||
.public DoMoveTrumpCard
|
||||
.public DoMoveTwineedle
|
||||
.public DoMoveTwister
|
||||
.public DoMoveWakeUpSlap
|
||||
.public DoMoveWhirlpool
|
||||
.public DoMoveWillOWisp
|
||||
.public DoMoveWrap
|
||||
.public DoMoveYawn
|
||||
@@ -1,20 +1,3 @@
|
||||
#pragma once
|
||||
.public BoostSpeedOneStage
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public EntityIsValid__0231B194
|
||||
.public GetApparentWeather
|
||||
.public GetEntityMoveTargetAndRange
|
||||
.public GetTreasureBoxChances
|
||||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckParticipants
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public NATURAL_GIFT_ITEM_TABLE
|
||||
.public ov29_022E4110
|
||||
.public ov29_022FB9E0
|
||||
.public ov29_0232145C
|
||||
.public ov29_0232E80C
|
||||
.public PrepareItemForPrinting__02345728
|
||||
.public SetActionUseMoveAi
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public WEATHER_BALL_TYPE_TABLE
|
||||
|
||||
15
asm/include/overlay_29_0231AF24.inc
Normal file
15
asm/include/overlay_29_0231AF24.inc
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
.public BoostSpeedOneStage
|
||||
.public DUNGEON_PTR
|
||||
.public EntityIsValid__0231B194
|
||||
.public GetTreasureBoxChances
|
||||
.public IsMonster__0231A9D4
|
||||
.public LogMessageByIdWithPopupCheckParticipants
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public PrepareItemForPrinting__02345728
|
||||
.public SetActionUseMoveAi
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public ov29_022E4110
|
||||
.public ov29_022FB9E0
|
||||
.public ov29_0232145C
|
||||
.public ov29_0232E80C
|
||||
@@ -485,15 +485,3 @@ ov10_022C48CC:
|
||||
.global ov10_022C48D4
|
||||
ov10_022C48D4:
|
||||
.byte 0x4D, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.global WEATHER_BALL_TYPE_TABLE
|
||||
WEATHER_BALL_TYPE_TABLE:
|
||||
.byte 0x01, 0x02, 0x0D, 0x01, 0x03, 0x06, 0x01, 0x06
|
||||
.global ov10_022C48E4
|
||||
ov10_022C48E4:
|
||||
.byte 0x20, 0x00, 0x20, 0x00, 0x47, 0x00, 0x47, 0x00
|
||||
.global ov10_022C48EC
|
||||
ov10_022C48EC:
|
||||
.byte 0x00, 0x00, 0x64, 0x00, 0x1E, 0x00, 0x1E, 0x00
|
||||
.global ov10_022C48F4
|
||||
ov10_022C48F4:
|
||||
.byte 0x7C, 0x05, 0x79, 0x05, 0x7A, 0x05, 0x7B, 0x05, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
13
asm/overlay_10_rodata_022C48E4.s
Normal file
13
asm/overlay_10_rodata_022C48E4.s
Normal file
@@ -0,0 +1,13 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_10_rodata_022C48E4.inc"
|
||||
|
||||
.rodata
|
||||
.global ov10_022C48E4
|
||||
ov10_022C48E4:
|
||||
.byte 0x20, 0x00, 0x20, 0x00, 0x47, 0x00, 0x47, 0x00
|
||||
.global ov10_022C48EC
|
||||
ov10_022C48EC:
|
||||
.byte 0x00, 0x00, 0x64, 0x00, 0x1E, 0x00, 0x1E, 0x00
|
||||
.global ov10_022C48F4
|
||||
ov10_022C48F4:
|
||||
.byte 0x7C, 0x05, 0x79, 0x05, 0x7A, 0x05, 0x7B, 0x05, 0x00, 0x00, 0x00, 0x00
|
||||
File diff suppressed because it is too large
Load Diff
6395
asm/overlay_10_rodata_022C593C.s
Normal file
6395
asm/overlay_10_rodata_022C593C.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -113,269 +113,3 @@ _0231AE54:
|
||||
blo _0231AE54
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end ov29_0231AE3C
|
||||
|
||||
arm_func_start GetEntityNaturalGiftInfo
|
||||
GetEntityNaturalGiftInfo: ; 0x0231AE90
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
ldrne r4, [r4, #0xb4]
|
||||
ldrnesh r0, [r4, #0x66]
|
||||
cmpne r0, #0
|
||||
beq _0231AF00
|
||||
mov ip, #0
|
||||
ldr r3, _0231AF08 ; =NATURAL_GIFT_ITEM_TABLE
|
||||
mov lr, ip
|
||||
mov r1, #6
|
||||
_0231AEC0:
|
||||
smulbb r5, lr, r1
|
||||
ldrsh r2, [r3, r5]
|
||||
cmp r2, #0
|
||||
beq _0231AEF0
|
||||
ldrsh r0, [r4, #0x66]
|
||||
cmp r0, r2
|
||||
moveq ip, #1
|
||||
beq _0231AEF0
|
||||
add r0, lr, #1
|
||||
mov r0, r0, lsl #0x10
|
||||
mov lr, r0, asr #0x10
|
||||
b _0231AEC0
|
||||
_0231AEF0:
|
||||
cmp ip, #0
|
||||
ldrne r0, _0231AF08 ; =NATURAL_GIFT_ITEM_TABLE
|
||||
addne r0, r0, r5
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
_0231AF00:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231AF08: .word NATURAL_GIFT_ITEM_TABLE
|
||||
arm_func_end GetEntityNaturalGiftInfo
|
||||
|
||||
arm_func_start GetEntityWeatherBallType
|
||||
GetEntityWeatherBallType: ; 0x0231AF0C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl GetApparentWeather
|
||||
ldr r1, _0231AF20 ; =WEATHER_BALL_TYPE_TABLE
|
||||
ldrb r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0231AF20: .word WEATHER_BALL_TYPE_TABLE
|
||||
arm_func_end GetEntityWeatherBallType
|
||||
|
||||
arm_func_start ov29_0231AF24
|
||||
ov29_0231AF24: ; 0x0231AF24
|
||||
#ifdef JAPAN
|
||||
#define OV29_0231AF24_OFFSET -4
|
||||
#else
|
||||
#define OV29_0231AF24_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
beq _0231AFAC
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl ov29_022FB9E0
|
||||
mov r1, r0
|
||||
cmp r4, #0
|
||||
beq _0231AF98
|
||||
cmp r1, #0
|
||||
bge _0231AF98
|
||||
ldr r4, [r6, #0xb4]
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
add r0, r4, #0x4a
|
||||
bl SetActionUseMoveAi
|
||||
mov r2, #1
|
||||
strb r2, [r4, #0x124 + OV29_0231AF24_OFFSET]
|
||||
add r0, r4, #0x100
|
||||
mov r1, #0
|
||||
strh r1, [r0, #0x26 + OV29_0231AF24_OFFSET]
|
||||
strh r5, [r0, #0x28 + OV29_0231AF24_OFFSET]
|
||||
strb r2, [r4, #0x12a + OV29_0231AF24_OFFSET]
|
||||
strb r1, [r4, #0x12b + OV29_0231AF24_OFFSET]
|
||||
_0231AF98:
|
||||
mov r3, #0
|
||||
mov r0, r6
|
||||
mov r2, #1
|
||||
str r3, [sp]
|
||||
bl ov29_0232145C
|
||||
_0231AFAC:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
arm_func_end ov29_0231AF24
|
||||
|
||||
arm_func_start ov29_0231AFB4
|
||||
ov29_0231AFB4: ; 0x0231AFB4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov ip, #0
|
||||
ldr r1, _0231B004 ; =DUNGEON_PTR
|
||||
mov r2, ip
|
||||
mov r3, ip
|
||||
_0231AFC8:
|
||||
ldr r0, [r1]
|
||||
mov r4, r3
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add lr, r0, ip, lsl #4
|
||||
_0231AFDC:
|
||||
str r2, [lr, r4, lsl #3]
|
||||
add r0, lr, r4, lsl #3
|
||||
add r4, r4, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r4, #2
|
||||
blt _0231AFDC
|
||||
add ip, ip, #1
|
||||
cmp ip, #2
|
||||
blt _0231AFC8
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0231B004: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231AFB4
|
||||
|
||||
arm_func_start ov29_0231B008
|
||||
ov29_0231B008: ; 0x0231B008
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov lr, #0
|
||||
ldr r1, _0231B05C ; =DUNGEON_PTR
|
||||
mov r3, lr
|
||||
mov r2, #2
|
||||
mov ip, lr
|
||||
_0231B020:
|
||||
ldr r0, [r1]
|
||||
mov r5, ip
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add r4, r0, lr, lsl #4
|
||||
_0231B034:
|
||||
str r3, [r4, r5, lsl #3]
|
||||
add r0, r4, r5, lsl #3
|
||||
add r5, r5, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r5, #2
|
||||
blt _0231B034
|
||||
add lr, lr, #1
|
||||
cmp lr, #2
|
||||
blt _0231B020
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231B05C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231B008
|
||||
|
||||
arm_func_start ActivateMotorDrive
|
||||
ActivateMotorDrive: ; 0x0231B060
|
||||
stmdb sp!, {r3, r4, lr}
|
||||
sub sp, sp, #4
|
||||
#ifdef JAPAN
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
rsb r2, ip, #0x9e0
|
||||
#else
|
||||
ldr r2, _0231B0A0 ; =0x00000C3B
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
#endif
|
||||
mov r1, #0
|
||||
mov r3, #2
|
||||
str ip, [sp]
|
||||
bl LogMessageByIdWithPopupCheckParticipants
|
||||
mov r0, r4
|
||||
mov r1, r4
|
||||
mov r2, #0
|
||||
mov r3, #1
|
||||
bl BoostSpeedOneStage
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, pc}
|
||||
.align 2, 0
|
||||
#ifndef JAPAN
|
||||
_0231B0A0: .word 0x00000C3B
|
||||
#endif
|
||||
arm_func_end ActivateMotorDrive
|
||||
|
||||
arm_func_start TryActivateFrisk
|
||||
TryActivateFrisk: ; 0x0231B0A4
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
sub sp, sp, #8
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
mov r0, r4
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
ldr r0, [r5, #0xb4]
|
||||
ldr r6, [r4, #0xb4]
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _0231B184
|
||||
bl ov29_0232E80C
|
||||
cmp r4, r0
|
||||
ldrneb r0, [r6, #6]
|
||||
cmpne r0, #0
|
||||
beq _0231B184
|
||||
ldrsh r0, [r6, #0x66]
|
||||
cmp r0, #0
|
||||
bne _0231B150
|
||||
ldrsh r0, [r6, #2]
|
||||
add r1, sp, #0
|
||||
bl GetTreasureBoxChances
|
||||
ldrsh r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
ldrlesh r0, [sp, #6]
|
||||
cmple r0, #0
|
||||
ble _0231B184
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _0231B18C ; =0x00000C3D
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _0231B184
|
||||
_0231B150:
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r6, #0x62
|
||||
mov r0, #2
|
||||
bl PrepareItemForPrinting__02345728
|
||||
ldr r2, _0231B190 ; =0x00000C3C
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0231B184:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0231B18C: .word 0x0000097C
|
||||
_0231B190: .word 0x0000097B
|
||||
#else
|
||||
_0231B18C: .word 0x00000C3D
|
||||
_0231B190: .word 0x00000C3C
|
||||
#endif
|
||||
arm_func_end TryActivateFrisk
|
||||
|
||||
220
asm/overlay_29_0231AF24.s
Normal file
220
asm/overlay_29_0231AF24.s
Normal file
@@ -0,0 +1,220 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0231AF24.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0231AF24
|
||||
ov29_0231AF24: ; 0x0231AF24
|
||||
#ifdef JAPAN
|
||||
#define OV29_0231AF24_OFFSET -4
|
||||
#else
|
||||
#define OV29_0231AF24_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl IsMonster__0231A9D4
|
||||
cmp r0, #0
|
||||
beq _0231AFAC
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
bl ov29_022FB9E0
|
||||
mov r1, r0
|
||||
cmp r4, #0
|
||||
beq _0231AF98
|
||||
cmp r1, #0
|
||||
bge _0231AF98
|
||||
ldr r4, [r6, #0xb4]
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
add r0, r4, #0x4a
|
||||
bl SetActionUseMoveAi
|
||||
mov r2, #1
|
||||
strb r2, [r4, #0x124 + OV29_0231AF24_OFFSET]
|
||||
add r0, r4, #0x100
|
||||
mov r1, #0
|
||||
strh r1, [r0, #0x26 + OV29_0231AF24_OFFSET]
|
||||
strh r5, [r0, #0x28 + OV29_0231AF24_OFFSET]
|
||||
strb r2, [r4, #0x12a + OV29_0231AF24_OFFSET]
|
||||
strb r1, [r4, #0x12b + OV29_0231AF24_OFFSET]
|
||||
_0231AF98:
|
||||
mov r3, #0
|
||||
mov r0, r6
|
||||
mov r2, #1
|
||||
str r3, [sp]
|
||||
bl ov29_0232145C
|
||||
_0231AFAC:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
arm_func_end ov29_0231AF24
|
||||
|
||||
arm_func_start ov29_0231AFB4
|
||||
ov29_0231AFB4: ; 0x0231AFB4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov ip, #0
|
||||
ldr r1, _0231B004 ; =DUNGEON_PTR
|
||||
mov r2, ip
|
||||
mov r3, ip
|
||||
_0231AFC8:
|
||||
ldr r0, [r1]
|
||||
mov r4, r3
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add lr, r0, ip, lsl #4
|
||||
_0231AFDC:
|
||||
str r2, [lr, r4, lsl #3]
|
||||
add r0, lr, r4, lsl #3
|
||||
add r4, r4, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r4, #2
|
||||
blt _0231AFDC
|
||||
add ip, ip, #1
|
||||
cmp ip, #2
|
||||
blt _0231AFC8
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0231B004: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231AFB4
|
||||
|
||||
arm_func_start ov29_0231B008
|
||||
ov29_0231B008: ; 0x0231B008
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov lr, #0
|
||||
ldr r1, _0231B05C ; =DUNGEON_PTR
|
||||
mov r3, lr
|
||||
mov r2, #2
|
||||
mov ip, lr
|
||||
_0231B020:
|
||||
ldr r0, [r1]
|
||||
mov r5, ip
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x1840
|
||||
add r0, r0, #0x18000
|
||||
#else
|
||||
add r0, r0, #0xe4
|
||||
add r0, r0, #0x19800
|
||||
#endif
|
||||
add r4, r0, lr, lsl #4
|
||||
_0231B034:
|
||||
str r3, [r4, r5, lsl #3]
|
||||
add r0, r4, r5, lsl #3
|
||||
add r5, r5, #1
|
||||
str r2, [r0, #4]
|
||||
cmp r5, #2
|
||||
blt _0231B034
|
||||
add lr, lr, #1
|
||||
cmp lr, #2
|
||||
blt _0231B020
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0231B05C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0231B008
|
||||
|
||||
arm_func_start ActivateMotorDrive
|
||||
ActivateMotorDrive: ; 0x0231B060
|
||||
stmdb sp!, {r3, r4, lr}
|
||||
sub sp, sp, #4
|
||||
#ifdef JAPAN
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
rsb r2, ip, #0x9e0
|
||||
#else
|
||||
ldr r2, _0231B0A0 ; =0x00000C3B
|
||||
mov ip, #0x66
|
||||
mov r4, r0
|
||||
#endif
|
||||
mov r1, #0
|
||||
mov r3, #2
|
||||
str ip, [sp]
|
||||
bl LogMessageByIdWithPopupCheckParticipants
|
||||
mov r0, r4
|
||||
mov r1, r4
|
||||
mov r2, #0
|
||||
mov r3, #1
|
||||
bl BoostSpeedOneStage
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, pc}
|
||||
.align 2, 0
|
||||
#ifndef JAPAN
|
||||
_0231B0A0: .word 0x00000C3B
|
||||
#endif
|
||||
arm_func_end ActivateMotorDrive
|
||||
|
||||
arm_func_start TryActivateFrisk
|
||||
TryActivateFrisk: ; 0x0231B0A4
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
sub sp, sp, #8
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
mov r0, r4
|
||||
bl EntityIsValid__0231B194
|
||||
cmp r0, #0
|
||||
beq _0231B184
|
||||
ldr r0, [r5, #0xb4]
|
||||
ldr r6, [r4, #0xb4]
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _0231B184
|
||||
bl ov29_0232E80C
|
||||
cmp r4, r0
|
||||
ldrneb r0, [r6, #6]
|
||||
cmpne r0, #0
|
||||
beq _0231B184
|
||||
ldrsh r0, [r6, #0x66]
|
||||
cmp r0, #0
|
||||
bne _0231B150
|
||||
ldrsh r0, [r6, #2]
|
||||
add r1, sp, #0
|
||||
bl GetTreasureBoxChances
|
||||
ldrsh r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
ldrlesh r0, [sp, #6]
|
||||
cmple r0, #0
|
||||
ble _0231B184
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _0231B18C ; =0x00000C3D
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _0231B184
|
||||
_0231B150:
|
||||
mov r0, r5
|
||||
bl ov29_022E4110
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
mov r2, #0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, r6, #0x62
|
||||
mov r0, #2
|
||||
bl PrepareItemForPrinting__02345728
|
||||
ldr r2, _0231B190 ; =0x00000C3C
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_0231B184:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_0231B18C: .word 0x0000097C
|
||||
_0231B190: .word 0x0000097B
|
||||
#else
|
||||
_0231B18C: .word 0x00000C3D
|
||||
_0231B190: .word 0x00000C3C
|
||||
#endif
|
||||
arm_func_end TryActivateFrisk
|
||||
8
include/dungeon_parameters_2.h
Normal file
8
include/dungeon_parameters_2.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef PMDSKY_DUNGEON_PARAMETERS_1_H
|
||||
#define PMDSKY_DUNGEON_PARAMETERS_1_H
|
||||
|
||||
#include "enums.h"
|
||||
|
||||
extern const enum type_id WEATHER_BALL_TYPE_TABLE[8];
|
||||
|
||||
#endif //PMDSKY_DUNGEON_PARAMETERS_1_H
|
||||
@@ -1627,13 +1627,13 @@ struct item {
|
||||
s16 id; // 0x4
|
||||
};
|
||||
|
||||
// The same as the item struct, but with the flags marked as volatile.
|
||||
// Needed to match AiDecideUseItem.
|
||||
// The same as the item struct, but with some fields marked as volatile.
|
||||
// Needed to match some functions like AiDecideUseItem.
|
||||
struct item_volatile {
|
||||
volatile u8 flags;
|
||||
u8 held_by;
|
||||
u16 quantity;
|
||||
enum item_id id; // 0x4
|
||||
volatile s16 id; // 0x4
|
||||
};
|
||||
|
||||
struct bag_items_inner {
|
||||
|
||||
@@ -59,13 +59,4 @@ struct move {
|
||||
u8 ginseng; // 0x7: Ginseng boost
|
||||
};
|
||||
|
||||
struct natural_gift_item_info
|
||||
{
|
||||
enum item_id item_id;
|
||||
enum type_id type_id;
|
||||
// This value is the boost that's added to Natural Gift's default base power of 1
|
||||
// during damage calculation
|
||||
s16 base_power_boost;
|
||||
};
|
||||
|
||||
#endif // PMDSKY_MOVE_H
|
||||
|
||||
18
include/natural_gift_data.h
Normal file
18
include/natural_gift_data.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef PMDSKY_NATURAL_GIFT_DATA_H
|
||||
#define PMDSKY_NATURAL_GIFT_DATA_H
|
||||
|
||||
#include "enums.h"
|
||||
#include "item.h"
|
||||
|
||||
struct natural_gift_item_info
|
||||
{
|
||||
enum item_id item_id;
|
||||
enum type_id type_id;
|
||||
// This value is the boost that's added to Natural Gift's default base power of 1
|
||||
// during damage calculation
|
||||
s16 base_power_boost;
|
||||
};
|
||||
|
||||
extern const struct natural_gift_item_info NATURAL_GIFT_ITEM_TABLE[34];
|
||||
|
||||
#endif //PMDSKY_NATURAL_GIFT_DATA_H
|
||||
@@ -1,8 +1,10 @@
|
||||
#ifndef PREPROCESS_STRING_H
|
||||
#define PREPROCESS_STRING_H
|
||||
|
||||
#include "enums.h"
|
||||
|
||||
struct PPStrValues {
|
||||
u8* weather_0; // 0x0
|
||||
u32 weather_0; // 0x0
|
||||
u32 field_0x4;
|
||||
u32 field_0x8;
|
||||
u32 field_0xB;
|
||||
|
||||
11
include/special_move_types.h
Normal file
11
include/special_move_types.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef PMDSKY_SPECIAL_MOVE_TYPES_H
|
||||
#define PMDSKY_SPECIAL_MOVE_TYPES_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
// Gets the relevant entry in NATURAL_GIFT_ITEM_TABLE based on the entity's held item, if possible.
|
||||
const struct natural_gift_item_info* GetEntityNaturalGiftInfo(struct entity* entity);
|
||||
// Gets the current Weather Ball type for the given entity, based on the apparent weather.
|
||||
enum type_id GetEntityWeatherBallType(struct entity* entity);
|
||||
|
||||
#endif //PMDSKY_SPECIAL_MOVE_TYPES_H
|
||||
6
main.lsf
6
main.lsf
@@ -203,8 +203,12 @@ Overlay OVY_10
|
||||
Object asm/overlay_10_rodata_022C4584.o
|
||||
Object src/dungeon_parameters_1.o
|
||||
Object asm/overlay_10_rodata_022C464C.o
|
||||
Object src/dungeon_parameters_2.o
|
||||
Object asm/overlay_10_rodata_022C48E4.o
|
||||
Object src/dungeon_ai_parameters.o
|
||||
Object asm/overlay_10_rodata_022C490C.o
|
||||
Object src/natural_gift_data.o
|
||||
Object asm/overlay_10_rodata_022C593C.o
|
||||
}
|
||||
Overlay OVY_11
|
||||
{
|
||||
@@ -506,6 +510,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_0231A9F8.o
|
||||
Object src/overlay_29_0231ACAC.o
|
||||
Object asm/overlay_29_0231AD38.o
|
||||
Object src/special_move_types.o
|
||||
Object asm/overlay_29_0231AF24.o
|
||||
Object src/overlay_29_0231B194.o
|
||||
Object asm/overlay_29_0231B1B8.o
|
||||
Object src/overlay_29_0231B318.o
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "main_02014CEC.h"
|
||||
#include "natural_gift_data.h"
|
||||
#include "overlay_29_023000E4.h"
|
||||
#include "special_move_types.h"
|
||||
|
||||
extern struct natural_gift_item_info* GetEntityNaturalGiftInfo(struct entity* entity);
|
||||
extern enum type_id GetEntityWeatherBallType(struct entity* entity);
|
||||
extern enum type_id GetMoveType(struct move* move);
|
||||
|
||||
enum type_id GetMoveTypeForMonster(struct entity *entity, struct move *move)
|
||||
@@ -18,7 +18,7 @@ enum type_id GetMoveTypeForMonster(struct entity *entity, struct move *move)
|
||||
|
||||
if (move->id == MOVE_NATURAL_GIFT)
|
||||
{
|
||||
struct natural_gift_item_info *natural_gift_info = GetEntityNaturalGiftInfo(entity);
|
||||
const struct natural_gift_item_info *natural_gift_info = GetEntityNaturalGiftInfo(entity);
|
||||
if (natural_gift_info != NULL)
|
||||
return natural_gift_info->type_id;
|
||||
}
|
||||
|
||||
12
src/dungeon_parameters_2.c
Normal file
12
src/dungeon_parameters_2.c
Normal file
@@ -0,0 +1,12 @@
|
||||
#include "dungeon_parameters_2.h"
|
||||
|
||||
const enum type_id WEATHER_BALL_TYPE_TABLE[8] = {
|
||||
TYPE_NORMAL,
|
||||
TYPE_FIRE,
|
||||
TYPE_ROCK,
|
||||
TYPE_NORMAL,
|
||||
TYPE_WATER,
|
||||
TYPE_ICE,
|
||||
TYPE_NORMAL,
|
||||
TYPE_ICE
|
||||
};
|
||||
38
src/natural_gift_data.c
Normal file
38
src/natural_gift_data.c
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "natural_gift_data.h"
|
||||
|
||||
const struct natural_gift_item_info NATURAL_GIFT_ITEM_TABLE[34] = {
|
||||
{ ITEM_HEAL_SEED, TYPE_GRASS, 1 },
|
||||
{ ITEM_ORAN_BERRY, TYPE_POISON, 1 },
|
||||
{ ITEM_SITRUS_BERRY, TYPE_PSYCHIC, 3 },
|
||||
{ ITEM_EYEDROP_SEED, TYPE_GHOST, 2 },
|
||||
{ ITEM_REVIVER_SEED, TYPE_GROUND, 1 },
|
||||
{ ITEM_BLINKER_SEED, TYPE_DARK, 2 },
|
||||
{ ITEM_DOOM_SEED, TYPE_STEEL, 1 },
|
||||
{ ITEM_X_EYE_SEED, TYPE_DARK, 2 },
|
||||
{ ITEM_LIFE_SEED, TYPE_FIGHTING, 3 },
|
||||
{ ITEM_RAWST_BERRY, TYPE_GRASS, 2 },
|
||||
{ ITEM_HUNGER_SEED, TYPE_ROCK, 5 },
|
||||
{ ITEM_QUICK_SEED, TYPE_FLYING, 2 },
|
||||
{ ITEM_PECHA_BERRY, TYPE_ELECTRIC, 2 },
|
||||
{ ITEM_CHERI_BERRY, TYPE_FIRE, 2 },
|
||||
{ ITEM_TOTTER_SEED, TYPE_GHOST, 2 },
|
||||
{ ITEM_SLEEP_SEED, TYPE_ICE, 2 },
|
||||
{ ITEM_PLAIN_SEED, TYPE_NORMAL, 15 },
|
||||
{ ITEM_WARP_SEED, TYPE_PSYCHIC, 2 },
|
||||
{ ITEM_BLAST_SEED, TYPE_DRAGON, 5 },
|
||||
{ ITEM_JOY_SEED, TYPE_NORMAL, 3 },
|
||||
{ ITEM_CHESTO_BERRY, TYPE_WATER, 2 },
|
||||
{ ITEM_STUN_SEED, TYPE_BUG, 2 },
|
||||
{ ITEM_GOLDEN_SEED, TYPE_DRAGON, 10 },
|
||||
{ ITEM_VILE_SEED, TYPE_POISON, 5 },
|
||||
{ ITEM_PURE_SEED, TYPE_WATER, 5 },
|
||||
{ ITEM_VIOLENT_SEED, TYPE_FIGHTING, 5 },
|
||||
{ ITEM_VANISH_SEED, TYPE_BUG, 5 },
|
||||
{ ITEM_DROPEYE_SEED, TYPE_GHOST, 2 },
|
||||
{ ITEM_REVISER_SEED, TYPE_GROUND, 10 },
|
||||
{ ITEM_SLIP_SEED, TYPE_ICE, 2 },
|
||||
{ ITEM_VIA_SEED, TYPE_POISON, 2 },
|
||||
{ ITEM_OREN_BERRY, TYPE_POISON, 5 },
|
||||
{ ITEM_DOUGH_SEED, TYPE_STEEL, 1 },
|
||||
{ ITEM_NOTHING, TYPE_NONE, 0 }
|
||||
};
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "dungeon_ai_targeting.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "number_util.h"
|
||||
#include "weather.h"
|
||||
|
||||
extern const u8 DUNGEON_MENU_SWITCH_STR1[];// = "[dungeon:0]";
|
||||
|
||||
@@ -23,7 +24,6 @@ extern void* MemAlloc(u32 size, u32 nmemb);
|
||||
|
||||
extern struct entity* GetLeader(void);
|
||||
extern u32 GetMoneyCarried(void);
|
||||
extern void* GetApparentWeather(u32);
|
||||
extern u32 sub_0204F9E0(void);
|
||||
extern void ov29_022E2A78(u8*, void*, u32); // The third argument isn't actually used in the
|
||||
// function (../asm/overlay_29_022E1A40.s#L1378)
|
||||
@@ -99,7 +99,7 @@ void DrawDungeonMenuStatusWindow(struct Window* window)
|
||||
PreprocessString(str_buff, DRAW_DUNGEON_MENU_STATUS_WINDOW_BUFF_SIZE, str, 0, &str_values);
|
||||
DrawTextInWindow(window, X_OFFSET, LINE_HEIGHT, str_buff);
|
||||
|
||||
str_values.weather_0 = GetApparentWeather(0);
|
||||
str_values.weather_0 = GetApparentWeather(NULL);
|
||||
str = StringFromId(DRAW_DUNGEON_MENU_STATUS_WINDOW_STR_ID_3);
|
||||
PreprocessString(str_buff, DRAW_DUNGEON_MENU_STATUS_WINDOW_BUFF_SIZE, str, 0, &str_values);
|
||||
DrawTextInWindow(window, X_OFFSET, LINE_HEIGHT * 2, str_buff);
|
||||
|
||||
40
src/special_move_types.c
Normal file
40
src/special_move_types.c
Normal file
@@ -0,0 +1,40 @@
|
||||
#include "special_move_types.h"
|
||||
#include "dungeon_parameters_2.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "natural_gift_data.h"
|
||||
#include "overlay_29_0231A9D4.h"
|
||||
#include "weather.h"
|
||||
|
||||
const struct natural_gift_item_info* GetEntityNaturalGiftInfo(struct entity* entity)
|
||||
{
|
||||
if (IsMonster__0231A9D4(entity)) {
|
||||
struct monster *monster = GetEntInfo(entity);
|
||||
if (((struct item_volatile*)(&monster->held_item))->id != ITEM_NOTHING) {
|
||||
bool8 found_item = FALSE;
|
||||
s16 i = 0;
|
||||
s16 natural_gift_item_id;
|
||||
|
||||
loop_start:
|
||||
natural_gift_item_id = ((volatile struct natural_gift_item_info*)NATURAL_GIFT_ITEM_TABLE)[i].item_id;
|
||||
if (natural_gift_item_id != ITEM_NOTHING)
|
||||
{
|
||||
if (monster->held_item.id == natural_gift_item_id)
|
||||
found_item = TRUE;
|
||||
else
|
||||
{
|
||||
i++;
|
||||
goto loop_start;
|
||||
}
|
||||
}
|
||||
|
||||
if (found_item)
|
||||
return &NATURAL_GIFT_ITEM_TABLE[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enum type_id GetEntityWeatherBallType(struct entity* entity)
|
||||
{
|
||||
return WEATHER_BALL_TYPE_TABLE[GetApparentWeather(entity)];
|
||||
}
|
||||
Reference in New Issue
Block a user