mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-04 10:20:01 +01:00
Merge branch 'master' into flatten_sprite_pos
This commit is contained in:
commit
a274cc6a76
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -71,4 +71,4 @@ jobs:
|
||||
branch: symbols
|
||||
cwd: "./symbols"
|
||||
add: "*.sym"
|
||||
message: ${{ github.event.commits[0].message }}
|
||||
message: ${{ github.event.pull_request.title }}
|
||||
|
5
Makefile
5
Makefile
@ -28,6 +28,7 @@ LD := $(PREFIX)ld
|
||||
# note: the makefile must be set up so MODERNCC is never called
|
||||
# if MODERN=0
|
||||
MODERNCC := $(PREFIX)gcc
|
||||
PATH_MODERNCC := PATH=$(TOOLCHAIN)/bin:PATH $(MODERNCC)
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
@ -105,11 +106,11 @@ OBJ_DIR := $(OBJ_DIR_NAME)
|
||||
LIBPATH := -L ../../tools/agbcc/lib
|
||||
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
|
||||
else
|
||||
CC1 = $(shell $(MODERNCC) --print-prog-name=cc1) -quiet
|
||||
CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
|
||||
ROM := $(MODERN_ROM_NAME)
|
||||
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
|
||||
LIBPATH := -L "$(dir $(shell $(MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(MODERNCC) -mthumb -print-file-name=libc.a))"
|
||||
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
|
||||
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
|
||||
endif
|
||||
|
||||
|
@ -813,12 +813,12 @@
|
||||
.byte 0x68
|
||||
.endm
|
||||
|
||||
@ Ceases movement for all Objects on-screen.
|
||||
@ Freezes all objects immediately except the player. The player is frozen once their movement is finished.
|
||||
.macro lockall
|
||||
.byte 0x69
|
||||
.endm
|
||||
|
||||
@ If the script was called by an Object, then that Object's movement will cease.
|
||||
@ Freezes all objects immediately except the player and the selected object. The player and selected object are frozen once their movement is finished.
|
||||
.macro lock
|
||||
.byte 0x6a
|
||||
.endm
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -17,243 +17,221 @@
|
||||
|
||||
.align 2
|
||||
gBattleScriptsForMoveEffects:: @ 82D86A8
|
||||
.4byte BattleScript_EffectHit
|
||||
.4byte BattleScript_EffectSleep
|
||||
.4byte BattleScript_EffectPoisonHit
|
||||
.4byte BattleScript_EffectAbsorb
|
||||
.4byte BattleScript_EffectBurnHit
|
||||
.4byte BattleScript_EffectFreezeHit
|
||||
.4byte BattleScript_EffectParalyzeHit
|
||||
.4byte BattleScript_EffectExplosion
|
||||
.4byte BattleScript_EffectDreamEater
|
||||
.4byte BattleScript_EffectMirrorMove
|
||||
.4byte BattleScript_EffectAttackUp
|
||||
.4byte BattleScript_EffectDefenseUp
|
||||
.4byte BattleScript_EffectSpeedUp
|
||||
.4byte BattleScript_EffectSpecialAttackUp
|
||||
.4byte BattleScript_EffectSpecialDefenseUp
|
||||
.4byte BattleScript_EffectAccuracyUp
|
||||
.4byte BattleScript_EffectEvasionUp
|
||||
.4byte BattleScript_EffectAlwaysHit
|
||||
.4byte BattleScript_EffectAttackDown
|
||||
.4byte BattleScript_EffectDefenseDown
|
||||
.4byte BattleScript_EffectSpeedDown
|
||||
.4byte BattleScript_EffectSpecialAttackDown
|
||||
.4byte BattleScript_EffectSpecialDefenseDown
|
||||
.4byte BattleScript_EffectAccuracyDown
|
||||
.4byte BattleScript_EffectEvasionDown
|
||||
.4byte BattleScript_EffectHaze
|
||||
.4byte BattleScript_EffectBide
|
||||
.4byte BattleScript_EffectRampage
|
||||
.4byte BattleScript_EffectRoar
|
||||
.4byte BattleScript_EffectMultiHit
|
||||
.4byte BattleScript_EffectConversion
|
||||
.4byte BattleScript_EffectFlinchHit
|
||||
.4byte BattleScript_EffectRestoreHp
|
||||
.4byte BattleScript_EffectToxic
|
||||
.4byte BattleScript_EffectPayDay
|
||||
.4byte BattleScript_EffectLightScreen
|
||||
.4byte BattleScript_EffectTriAttack
|
||||
.4byte BattleScript_EffectRest
|
||||
.4byte BattleScript_EffectOHKO
|
||||
.4byte BattleScript_EffectRazorWind
|
||||
.4byte BattleScript_EffectSuperFang
|
||||
.4byte BattleScript_EffectDragonRage
|
||||
.4byte BattleScript_EffectTrap
|
||||
.4byte BattleScript_EffectHighCritical
|
||||
.4byte BattleScript_EffectDoubleHit
|
||||
.4byte BattleScript_EffectRecoilIfMiss
|
||||
.4byte BattleScript_EffectMist
|
||||
.4byte BattleScript_EffectFocusEnergy
|
||||
.4byte BattleScript_EffectRecoil
|
||||
.4byte BattleScript_EffectConfuse
|
||||
.4byte BattleScript_EffectAttackUp2
|
||||
.4byte BattleScript_EffectDefenseUp2
|
||||
.4byte BattleScript_EffectSpeedUp2
|
||||
.4byte BattleScript_EffectSpecialAttackUp2
|
||||
.4byte BattleScript_EffectSpecialDefenseUp2
|
||||
.4byte BattleScript_EffectAccuracyUp2
|
||||
.4byte BattleScript_EffectEvasionUp2
|
||||
.4byte BattleScript_EffectTransform
|
||||
.4byte BattleScript_EffectAttackDown2
|
||||
.4byte BattleScript_EffectDefenseDown2
|
||||
.4byte BattleScript_EffectSpeedDown2
|
||||
.4byte BattleScript_EffectSpecialAttackDown2
|
||||
.4byte BattleScript_EffectSpecialDefenseDown2
|
||||
.4byte BattleScript_EffectAccuracyDown2
|
||||
.4byte BattleScript_EffectEvasionDown2
|
||||
.4byte BattleScript_EffectReflect
|
||||
.4byte BattleScript_EffectPoison
|
||||
.4byte BattleScript_EffectParalyze
|
||||
.4byte BattleScript_EffectAttackDownHit
|
||||
.4byte BattleScript_EffectDefenseDownHit
|
||||
.4byte BattleScript_EffectSpeedDownHit
|
||||
.4byte BattleScript_EffectSpecialAttackDownHit
|
||||
.4byte BattleScript_EffectSpecialDefenseDownHit
|
||||
.4byte BattleScript_EffectAccuracyDownHit
|
||||
.4byte BattleScript_EffectEvasionDownHit
|
||||
.4byte BattleScript_EffectSkyAttack
|
||||
.4byte BattleScript_EffectConfuseHit
|
||||
.4byte BattleScript_EffectTwineedle
|
||||
.4byte BattleScript_EffectVitalThrow
|
||||
.4byte BattleScript_EffectSubstitute
|
||||
.4byte BattleScript_EffectRecharge
|
||||
.4byte BattleScript_EffectRage
|
||||
.4byte BattleScript_EffectMimic
|
||||
.4byte BattleScript_EffectMetronome
|
||||
.4byte BattleScript_EffectLeechSeed
|
||||
.4byte BattleScript_EffectSplash
|
||||
.4byte BattleScript_EffectDisable
|
||||
.4byte BattleScript_EffectLevelDamage
|
||||
.4byte BattleScript_EffectPsywave
|
||||
.4byte BattleScript_EffectCounter
|
||||
.4byte BattleScript_EffectEncore
|
||||
.4byte BattleScript_EffectPainSplit
|
||||
.4byte BattleScript_EffectSnore
|
||||
.4byte BattleScript_EffectConversion2
|
||||
.4byte BattleScript_EffectLockOn
|
||||
.4byte BattleScript_EffectSketch
|
||||
.4byte BattleScript_EffectUnused60//Thaw
|
||||
.4byte BattleScript_EffectSleepTalk
|
||||
.4byte BattleScript_EffectDestinyBond
|
||||
.4byte BattleScript_EffectFlail
|
||||
.4byte BattleScript_EffectSpite
|
||||
.4byte BattleScript_EffectFalseSwipe
|
||||
.4byte BattleScript_EffectHealBell
|
||||
.4byte BattleScript_EffectQuickAttack
|
||||
.4byte BattleScript_EffectTripleKick
|
||||
.4byte BattleScript_EffectThief
|
||||
.4byte BattleScript_EffectMeanLook
|
||||
.4byte BattleScript_EffectNightmare
|
||||
.4byte BattleScript_EffectMinimize
|
||||
.4byte BattleScript_EffectCurse
|
||||
.4byte BattleScript_EffectUnused6e
|
||||
.4byte BattleScript_EffectProtect
|
||||
.4byte BattleScript_EffectSpikes
|
||||
.4byte BattleScript_EffectForesight
|
||||
.4byte BattleScript_EffectPerishSong
|
||||
.4byte BattleScript_EffectSandstorm
|
||||
.4byte BattleScript_EffectEndure
|
||||
.4byte BattleScript_EffectRollout
|
||||
.4byte BattleScript_EffectSwagger
|
||||
.4byte BattleScript_EffectFuryCutter
|
||||
.4byte BattleScript_EffectAttract
|
||||
.4byte BattleScript_EffectReturn
|
||||
.4byte BattleScript_EffectPresent
|
||||
.4byte BattleScript_EffectFrustration
|
||||
.4byte BattleScript_EffectSafeguard
|
||||
.4byte BattleScript_EffectThawHit
|
||||
.4byte BattleScript_EffectMagnitude
|
||||
.4byte BattleScript_EffectBatonPass
|
||||
.4byte BattleScript_EffectPursuit
|
||||
.4byte BattleScript_EffectRapidSpin
|
||||
.4byte BattleScript_EffectSonicboom
|
||||
.4byte BattleScript_EffectUnused83
|
||||
.4byte BattleScript_EffectMorningSun
|
||||
.4byte BattleScript_EffectSynthesis
|
||||
.4byte BattleScript_EffectMoonlight
|
||||
.4byte BattleScript_EffectHiddenPower
|
||||
.4byte BattleScript_EffectRainDance
|
||||
.4byte BattleScript_EffectSunnyDay
|
||||
.4byte BattleScript_EffectDefenseUpHit
|
||||
.4byte BattleScript_EffectAttackUpHit
|
||||
.4byte BattleScript_EffectAllStatsUpHit
|
||||
.4byte BattleScript_EffectUnused8d
|
||||
.4byte BattleScript_EffectBellyDrum
|
||||
.4byte BattleScript_EffectPsychUp
|
||||
.4byte BattleScript_EffectMirrorCoat
|
||||
.4byte BattleScript_EffectSkullBash
|
||||
.4byte BattleScript_EffectTwister
|
||||
.4byte BattleScript_EffectEarthquake
|
||||
.4byte BattleScript_EffectFutureSight
|
||||
.4byte BattleScript_EffectGust
|
||||
.4byte BattleScript_EffectStomp
|
||||
.4byte BattleScript_EffectSolarbeam
|
||||
.4byte BattleScript_EffectThunder
|
||||
.4byte BattleScript_EffectTeleport
|
||||
.4byte BattleScript_EffectBeatUp
|
||||
.4byte BattleScript_EffectSemiInvulnerable
|
||||
.4byte BattleScript_EffectDefenseCurl
|
||||
.4byte BattleScript_EffectSoftboiled
|
||||
.4byte BattleScript_EffectFakeOut
|
||||
.4byte BattleScript_EffectUproar
|
||||
.4byte BattleScript_EffectStockpile
|
||||
.4byte BattleScript_EffectSpitUp
|
||||
.4byte BattleScript_EffectSwallow
|
||||
.4byte BattleScript_EffectUnusedA3
|
||||
.4byte BattleScript_EffectHail
|
||||
.4byte BattleScript_EffectTorment
|
||||
.4byte BattleScript_EffectFlatter
|
||||
.4byte BattleScript_EffectWillOWisp
|
||||
.4byte BattleScript_EffectMemento
|
||||
.4byte BattleScript_EffectFacade
|
||||
.4byte BattleScript_EffectFocusPunch
|
||||
.4byte BattleScript_EffectSmellingsalt
|
||||
.4byte BattleScript_EffectFollowMe
|
||||
.4byte BattleScript_EffectNaturePower
|
||||
.4byte BattleScript_EffectCharge
|
||||
.4byte BattleScript_EffectTaunt
|
||||
.4byte BattleScript_EffectHelpingHand
|
||||
.4byte BattleScript_EffectTrick
|
||||
.4byte BattleScript_EffectRolePlay
|
||||
.4byte BattleScript_EffectWish
|
||||
.4byte BattleScript_EffectAssist
|
||||
.4byte BattleScript_EffectIngrain
|
||||
.4byte BattleScript_EffectSuperpower
|
||||
.4byte BattleScript_EffectMagicCoat
|
||||
.4byte BattleScript_EffectRecycle
|
||||
.4byte BattleScript_EffectRevenge
|
||||
.4byte BattleScript_EffectBrickBreak
|
||||
.4byte BattleScript_EffectYawn
|
||||
.4byte BattleScript_EffectKnockOff
|
||||
.4byte BattleScript_EffectEndeavor
|
||||
.4byte BattleScript_EffectEruption
|
||||
.4byte BattleScript_EffectSkillSwap
|
||||
.4byte BattleScript_EffectImprison
|
||||
.4byte BattleScript_EffectRefresh
|
||||
.4byte BattleScript_EffectGrudge
|
||||
.4byte BattleScript_EffectSnatch
|
||||
.4byte BattleScript_EffectLowKick
|
||||
.4byte BattleScript_EffectSecretPower
|
||||
.4byte BattleScript_EffectDoubleEdge
|
||||
.4byte BattleScript_EffectTeeterDance
|
||||
.4byte BattleScript_EffectBlazeKick
|
||||
.4byte BattleScript_EffectMudSport
|
||||
.4byte BattleScript_EffectPoisonFang
|
||||
.4byte BattleScript_EffectWeatherBall
|
||||
.4byte BattleScript_EffectOverheat
|
||||
.4byte BattleScript_EffectTickle
|
||||
.4byte BattleScript_EffectCosmicPower
|
||||
.4byte BattleScript_EffectSkyUppercut
|
||||
.4byte BattleScript_EffectBulkUp
|
||||
.4byte BattleScript_EffectPoisonTail
|
||||
.4byte BattleScript_EffectWaterSport
|
||||
.4byte BattleScript_EffectCalmMind
|
||||
.4byte BattleScript_EffectDragonDance
|
||||
.4byte BattleScript_EffectCamouflage
|
||||
.4byte BattleScript_EffectHit @ EFFECT_HIT
|
||||
.4byte BattleScript_EffectSleep @ EFFECT_SLEEP
|
||||
.4byte BattleScript_EffectPoisonHit @ EFFECT_POISON_HIT
|
||||
.4byte BattleScript_EffectAbsorb @ EFFECT_ABSORB
|
||||
.4byte BattleScript_EffectBurnHit @ EFFECT_BURN_HIT
|
||||
.4byte BattleScript_EffectFreezeHit @ EFFECT_FREEZE_HIT
|
||||
.4byte BattleScript_EffectParalyzeHit @ EFFECT_PARALYZE_HIT
|
||||
.4byte BattleScript_EffectExplosion @ EFFECT_EXPLOSION
|
||||
.4byte BattleScript_EffectDreamEater @ EFFECT_DREAM_EATER
|
||||
.4byte BattleScript_EffectMirrorMove @ EFFECT_MIRROR_MOVE
|
||||
.4byte BattleScript_EffectAttackUp @ EFFECT_ATTACK_UP
|
||||
.4byte BattleScript_EffectDefenseUp @ EFFECT_DEFENSE_UP
|
||||
.4byte BattleScript_EffectHit @ EFFECT_SPEED_UP
|
||||
.4byte BattleScript_EffectSpecialAttackUp @ EFFECT_SPECIAL_ATTACK_UP
|
||||
.4byte BattleScript_EffectHit @ EFFECT_SPECIAL_DEFENSE_UP
|
||||
.4byte BattleScript_EffectHit @ EFFECT_ACCURACY_UP
|
||||
.4byte BattleScript_EffectEvasionUp @ EFFECT_EVASION_UP
|
||||
.4byte BattleScript_EffectHit @ EFFECT_ALWAYS_HIT
|
||||
.4byte BattleScript_EffectAttackDown @ EFFECT_ATTACK_DOWN
|
||||
.4byte BattleScript_EffectDefenseDown @ EFFECT_DEFENSE_DOWN
|
||||
.4byte BattleScript_EffectSpeedDown @ EFFECT_SPEED_DOWN
|
||||
.4byte BattleScript_EffectHit @ EFFECT_SPECIAL_ATTACK_DOWN
|
||||
.4byte BattleScript_EffectHit @ EFFECT_SPECIAL_DEFENSE_DOWN
|
||||
.4byte BattleScript_EffectAccuracyDown @ EFFECT_ACCURACY_DOWN
|
||||
.4byte BattleScript_EffectEvasionDown @ EFFECT_EVASION_DOWN
|
||||
.4byte BattleScript_EffectHaze @ EFFECT_HAZE
|
||||
.4byte BattleScript_EffectBide @ EFFECT_BIDE
|
||||
.4byte BattleScript_EffectRampage @ EFFECT_RAMPAGE
|
||||
.4byte BattleScript_EffectRoar @ EFFECT_ROAR
|
||||
.4byte BattleScript_EffectMultiHit @ EFFECT_MULTI_HIT
|
||||
.4byte BattleScript_EffectConversion @ EFFECT_CONVERSION
|
||||
.4byte BattleScript_EffectFlinchHit @ EFFECT_FLINCH_HIT
|
||||
.4byte BattleScript_EffectRestoreHp @ EFFECT_RESTORE_HP
|
||||
.4byte BattleScript_EffectToxic @ EFFECT_TOXIC
|
||||
.4byte BattleScript_EffectPayDay @ EFFECT_PAY_DAY
|
||||
.4byte BattleScript_EffectLightScreen @ EFFECT_LIGHT_SCREEN
|
||||
.4byte BattleScript_EffectTriAttack @ EFFECT_TRI_ATTACK
|
||||
.4byte BattleScript_EffectRest @ EFFECT_REST
|
||||
.4byte BattleScript_EffectOHKO @ EFFECT_OHKO
|
||||
.4byte BattleScript_EffectRazorWind @ EFFECT_RAZOR_WIND
|
||||
.4byte BattleScript_EffectSuperFang @ EFFECT_SUPER_FANG
|
||||
.4byte BattleScript_EffectDragonRage @ EFFECT_DRAGON_RAGE
|
||||
.4byte BattleScript_EffectTrap @ EFFECT_TRAP
|
||||
.4byte BattleScript_EffectHit @ EFFECT_HIGH_CRITICAL
|
||||
.4byte BattleScript_EffectDoubleHit @ EFFECT_DOUBLE_HIT
|
||||
.4byte BattleScript_EffectRecoilIfMiss @ EFFECT_RECOIL_IF_MISS
|
||||
.4byte BattleScript_EffectMist @ EFFECT_MIST
|
||||
.4byte BattleScript_EffectFocusEnergy @ EFFECT_FOCUS_ENERGY
|
||||
.4byte BattleScript_EffectRecoil @ EFFECT_RECOIL
|
||||
.4byte BattleScript_EffectConfuse @ EFFECT_CONFUSE
|
||||
.4byte BattleScript_EffectAttackUp2 @ EFFECT_ATTACK_UP_2
|
||||
.4byte BattleScript_EffectDefenseUp2 @ EFFECT_DEFENSE_UP_2
|
||||
.4byte BattleScript_EffectSpeedUp2 @ EFFECT_SPEED_UP_2
|
||||
.4byte BattleScript_EffectSpecialAttackUp2 @ EFFECT_SPECIAL_ATTACK_UP_2
|
||||
.4byte BattleScript_EffectSpecialDefenseUp2 @ EFFECT_SPECIAL_DEFENSE_UP_2
|
||||
.4byte BattleScript_EffectHit @ EFFECT_ACCURACY_UP_2
|
||||
.4byte BattleScript_EffectHit @ EFFECT_EVASION_UP_2
|
||||
.4byte BattleScript_EffectTransform @ EFFECT_TRANSFORM
|
||||
.4byte BattleScript_EffectAttackDown2 @ EFFECT_ATTACK_DOWN_2
|
||||
.4byte BattleScript_EffectDefenseDown2 @ EFFECT_DEFENSE_DOWN_2
|
||||
.4byte BattleScript_EffectSpeedDown2 @ EFFECT_SPEED_DOWN_2
|
||||
.4byte BattleScript_EffectHit @ EFFECT_SPECIAL_ATTACK_DOWN_2
|
||||
.4byte BattleScript_EffectSpecialDefenseDown2 @ EFFECT_SPECIAL_DEFENSE_DOWN_2
|
||||
.4byte BattleScript_EffectHit @ EFFECT_ACCURACY_DOWN_2
|
||||
.4byte BattleScript_EffectHit @ EFFECT_EVASION_DOWN_2
|
||||
.4byte BattleScript_EffectReflect @ EFFECT_REFLECT
|
||||
.4byte BattleScript_EffectPoison @ EFFECT_POISON
|
||||
.4byte BattleScript_EffectParalyze @ EFFECT_PARALYZE
|
||||
.4byte BattleScript_EffectAttackDownHit @ EFFECT_ATTACK_DOWN_HIT
|
||||
.4byte BattleScript_EffectDefenseDownHit @ EFFECT_DEFENSE_DOWN_HIT
|
||||
.4byte BattleScript_EffectSpeedDownHit @ EFFECT_SPEED_DOWN_HIT
|
||||
.4byte BattleScript_EffectSpecialAttackDownHit @ EFFECT_SPECIAL_ATTACK_DOWN_HIT
|
||||
.4byte BattleScript_EffectSpecialDefenseDownHit @ EFFECT_SPECIAL_DEFENSE_DOWN_HIT
|
||||
.4byte BattleScript_EffectAccuracyDownHit @ EFFECT_ACCURACY_DOWN_HIT
|
||||
.4byte BattleScript_EffectHit @ EFFECT_EVASION_DOWN_HIT
|
||||
.4byte BattleScript_EffectSkyAttack @ EFFECT_SKY_ATTACK
|
||||
.4byte BattleScript_EffectConfuseHit @ EFFECT_CONFUSE_HIT
|
||||
.4byte BattleScript_EffectTwineedle @ EFFECT_TWINEEDLE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_VITAL_THROW
|
||||
.4byte BattleScript_EffectSubstitute @ EFFECT_SUBSTITUTE
|
||||
.4byte BattleScript_EffectRecharge @ EFFECT_RECHARGE
|
||||
.4byte BattleScript_EffectRage @ EFFECT_RAGE
|
||||
.4byte BattleScript_EffectMimic @ EFFECT_MIMIC
|
||||
.4byte BattleScript_EffectMetronome @ EFFECT_METRONOME
|
||||
.4byte BattleScript_EffectLeechSeed @ EFFECT_LEECH_SEED
|
||||
.4byte BattleScript_EffectSplash @ EFFECT_SPLASH
|
||||
.4byte BattleScript_EffectDisable @ EFFECT_DISABLE
|
||||
.4byte BattleScript_EffectLevelDamage @ EFFECT_LEVEL_DAMAGE
|
||||
.4byte BattleScript_EffectPsywave @ EFFECT_PSYWAVE
|
||||
.4byte BattleScript_EffectCounter @ EFFECT_COUNTER
|
||||
.4byte BattleScript_EffectEncore @ EFFECT_ENCORE
|
||||
.4byte BattleScript_EffectPainSplit @ EFFECT_PAIN_SPLIT
|
||||
.4byte BattleScript_EffectSnore @ EFFECT_SNORE
|
||||
.4byte BattleScript_EffectConversion2 @ EFFECT_CONVERSION_2
|
||||
.4byte BattleScript_EffectLockOn @ EFFECT_LOCK_ON
|
||||
.4byte BattleScript_EffectSketch @ EFFECT_SKETCH
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_60
|
||||
.4byte BattleScript_EffectSleepTalk @ EFFECT_SLEEP_TALK
|
||||
.4byte BattleScript_EffectDestinyBond @ EFFECT_DESTINY_BOND
|
||||
.4byte BattleScript_EffectFlail @ EFFECT_FLAIL
|
||||
.4byte BattleScript_EffectSpite @ EFFECT_SPITE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_FALSE_SWIPE
|
||||
.4byte BattleScript_EffectHealBell @ EFFECT_HEAL_BELL
|
||||
.4byte BattleScript_EffectHit @ EFFECT_QUICK_ATTACK
|
||||
.4byte BattleScript_EffectTripleKick @ EFFECT_TRIPLE_KICK
|
||||
.4byte BattleScript_EffectThief @ EFFECT_THIEF
|
||||
.4byte BattleScript_EffectMeanLook @ EFFECT_MEAN_LOOK
|
||||
.4byte BattleScript_EffectNightmare @ EFFECT_NIGHTMARE
|
||||
.4byte BattleScript_EffectMinimize @ EFFECT_MINIMIZE
|
||||
.4byte BattleScript_EffectCurse @ EFFECT_CURSE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_6E
|
||||
.4byte BattleScript_EffectProtect @ EFFECT_PROTECT
|
||||
.4byte BattleScript_EffectSpikes @ EFFECT_SPIKES
|
||||
.4byte BattleScript_EffectForesight @ EFFECT_FORESIGHT
|
||||
.4byte BattleScript_EffectPerishSong @ EFFECT_PERISH_SONG
|
||||
.4byte BattleScript_EffectSandstorm @ EFFECT_SANDSTORM
|
||||
.4byte BattleScript_EffectEndure @ EFFECT_ENDURE
|
||||
.4byte BattleScript_EffectRollout @ EFFECT_ROLLOUT
|
||||
.4byte BattleScript_EffectSwagger @ EFFECT_SWAGGER
|
||||
.4byte BattleScript_EffectFuryCutter @ EFFECT_FURY_CUTTER
|
||||
.4byte BattleScript_EffectAttract @ EFFECT_ATTRACT
|
||||
.4byte BattleScript_EffectReturn @ EFFECT_RETURN
|
||||
.4byte BattleScript_EffectPresent @ EFFECT_PRESENT
|
||||
.4byte BattleScript_EffectFrustration @ EFFECT_FRUSTRATION
|
||||
.4byte BattleScript_EffectSafeguard @ EFFECT_SAFEGUARD
|
||||
.4byte BattleScript_EffectThawHit @ EFFECT_THAW_HIT
|
||||
.4byte BattleScript_EffectMagnitude @ EFFECT_MAGNITUDE
|
||||
.4byte BattleScript_EffectBatonPass @ EFFECT_BATON_PASS
|
||||
.4byte BattleScript_EffectHit @ EFFECT_PURSUIT
|
||||
.4byte BattleScript_EffectRapidSpin @ EFFECT_RAPID_SPIN
|
||||
.4byte BattleScript_EffectSonicboom @ EFFECT_SONICBOOM
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_83
|
||||
.4byte BattleScript_EffectMorningSun @ EFFECT_MORNING_SUN
|
||||
.4byte BattleScript_EffectSynthesis @ EFFECT_SYNTHESIS
|
||||
.4byte BattleScript_EffectMoonlight @ EFFECT_MOONLIGHT
|
||||
.4byte BattleScript_EffectHiddenPower @ EFFECT_HIDDEN_POWER
|
||||
.4byte BattleScript_EffectRainDance @ EFFECT_RAIN_DANCE
|
||||
.4byte BattleScript_EffectSunnyDay @ EFFECT_SUNNY_DAY
|
||||
.4byte BattleScript_EffectDefenseUpHit @ EFFECT_DEFENSE_UP_HIT
|
||||
.4byte BattleScript_EffectAttackUpHit @ EFFECT_ATTACK_UP_HIT
|
||||
.4byte BattleScript_EffectAllStatsUpHit @ EFFECT_ALL_STATS_UP_HIT
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_8D
|
||||
.4byte BattleScript_EffectBellyDrum @ EFFECT_BELLY_DRUM
|
||||
.4byte BattleScript_EffectPsychUp @ EFFECT_PSYCH_UP
|
||||
.4byte BattleScript_EffectMirrorCoat @ EFFECT_MIRROR_COAT
|
||||
.4byte BattleScript_EffectSkullBash @ EFFECT_SKULL_BASH
|
||||
.4byte BattleScript_EffectTwister @ EFFECT_TWISTER
|
||||
.4byte BattleScript_EffectEarthquake @ EFFECT_EARTHQUAKE
|
||||
.4byte BattleScript_EffectFutureSight @ EFFECT_FUTURE_SIGHT
|
||||
.4byte BattleScript_EffectGust @ EFFECT_GUST
|
||||
.4byte BattleScript_EffectStomp @ EFFECT_FLINCH_MINIMIZE_HIT
|
||||
.4byte BattleScript_EffectSolarbeam @ EFFECT_SOLARBEAM
|
||||
.4byte BattleScript_EffectThunder @ EFFECT_THUNDER
|
||||
.4byte BattleScript_EffectTeleport @ EFFECT_TELEPORT
|
||||
.4byte BattleScript_EffectBeatUp @ EFFECT_BEAT_UP
|
||||
.4byte BattleScript_EffectSemiInvulnerable @ EFFECT_SEMI_INVULNERABLE
|
||||
.4byte BattleScript_EffectDefenseCurl @ EFFECT_DEFENSE_CURL
|
||||
.4byte BattleScript_EffectSoftboiled @ EFFECT_SOFTBOILED
|
||||
.4byte BattleScript_EffectFakeOut @ EFFECT_FAKE_OUT
|
||||
.4byte BattleScript_EffectUproar @ EFFECT_UPROAR
|
||||
.4byte BattleScript_EffectStockpile @ EFFECT_STOCKPILE
|
||||
.4byte BattleScript_EffectSpitUp @ EFFECT_SPIT_UP
|
||||
.4byte BattleScript_EffectSwallow @ EFFECT_SWALLOW
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_A3
|
||||
.4byte BattleScript_EffectHail @ EFFECT_HAIL
|
||||
.4byte BattleScript_EffectTorment @ EFFECT_TORMENT
|
||||
.4byte BattleScript_EffectFlatter @ EFFECT_FLATTER
|
||||
.4byte BattleScript_EffectWillOWisp @ EFFECT_WILL_O_WISP
|
||||
.4byte BattleScript_EffectMemento @ EFFECT_MEMENTO
|
||||
.4byte BattleScript_EffectFacade @ EFFECT_FACADE
|
||||
.4byte BattleScript_EffectFocusPunch @ EFFECT_FOCUS_PUNCH
|
||||
.4byte BattleScript_EffectSmellingsalt @ EFFECT_SMELLINGSALT
|
||||
.4byte BattleScript_EffectFollowMe @ EFFECT_FOLLOW_ME
|
||||
.4byte BattleScript_EffectNaturePower @ EFFECT_NATURE_POWER
|
||||
.4byte BattleScript_EffectCharge @ EFFECT_CHARGE
|
||||
.4byte BattleScript_EffectTaunt @ EFFECT_TAUNT
|
||||
.4byte BattleScript_EffectHelpingHand @ EFFECT_HELPING_HAND
|
||||
.4byte BattleScript_EffectTrick @ EFFECT_TRICK
|
||||
.4byte BattleScript_EffectRolePlay @ EFFECT_ROLE_PLAY
|
||||
.4byte BattleScript_EffectWish @ EFFECT_WISH
|
||||
.4byte BattleScript_EffectAssist @ EFFECT_ASSIST
|
||||
.4byte BattleScript_EffectIngrain @ EFFECT_INGRAIN
|
||||
.4byte BattleScript_EffectSuperpower @ EFFECT_SUPERPOWER
|
||||
.4byte BattleScript_EffectMagicCoat @ EFFECT_MAGIC_COAT
|
||||
.4byte BattleScript_EffectRecycle @ EFFECT_RECYCLE
|
||||
.4byte BattleScript_EffectRevenge @ EFFECT_REVENGE
|
||||
.4byte BattleScript_EffectBrickBreak @ EFFECT_BRICK_BREAK
|
||||
.4byte BattleScript_EffectYawn @ EFFECT_YAWN
|
||||
.4byte BattleScript_EffectKnockOff @ EFFECT_KNOCK_OFF
|
||||
.4byte BattleScript_EffectEndeavor @ EFFECT_ENDEAVOR
|
||||
.4byte BattleScript_EffectEruption @ EFFECT_ERUPTION
|
||||
.4byte BattleScript_EffectSkillSwap @ EFFECT_SKILL_SWAP
|
||||
.4byte BattleScript_EffectImprison @ EFFECT_IMPRISON
|
||||
.4byte BattleScript_EffectRefresh @ EFFECT_REFRESH
|
||||
.4byte BattleScript_EffectGrudge @ EFFECT_GRUDGE
|
||||
.4byte BattleScript_EffectSnatch @ EFFECT_SNATCH
|
||||
.4byte BattleScript_EffectLowKick @ EFFECT_LOW_KICK
|
||||
.4byte BattleScript_EffectSecretPower @ EFFECT_SECRET_POWER
|
||||
.4byte BattleScript_EffectDoubleEdge @ EFFECT_DOUBLE_EDGE
|
||||
.4byte BattleScript_EffectTeeterDance @ EFFECT_TEETER_DANCE
|
||||
.4byte BattleScript_EffectBurnHit @ EFFECT_BLAZE_KICK
|
||||
.4byte BattleScript_EffectMudSport @ EFFECT_MUD_SPORT
|
||||
.4byte BattleScript_EffectPoisonFang @ EFFECT_POISON_FANG
|
||||
.4byte BattleScript_EffectWeatherBall @ EFFECT_WEATHER_BALL
|
||||
.4byte BattleScript_EffectOverheat @ EFFECT_OVERHEAT
|
||||
.4byte BattleScript_EffectTickle @ EFFECT_TICKLE
|
||||
.4byte BattleScript_EffectCosmicPower @ EFFECT_COSMIC_POWER
|
||||
.4byte BattleScript_EffectSkyUppercut @ EFFECT_SKY_UPPERCUT
|
||||
.4byte BattleScript_EffectBulkUp @ EFFECT_BULK_UP
|
||||
.4byte BattleScript_EffectPoisonHit @ EFFECT_POISON_TAIL
|
||||
.4byte BattleScript_EffectWaterSport @ EFFECT_WATER_SPORT
|
||||
.4byte BattleScript_EffectCalmMind @ EFFECT_CALM_MIND
|
||||
.4byte BattleScript_EffectDragonDance @ EFFECT_DRAGON_DANCE
|
||||
.4byte BattleScript_EffectCamouflage @ EFFECT_CAMOUFLAGE
|
||||
|
||||
BattleScript_EffectSpeedUp::
|
||||
BattleScript_EffectSpecialDefenseUp::
|
||||
BattleScript_EffectAccuracyUp::
|
||||
BattleScript_EffectAlwaysHit::
|
||||
BattleScript_EffectSpecialAttackDown::
|
||||
BattleScript_EffectSpecialDefenseDown::
|
||||
BattleScript_EffectHighCritical::
|
||||
BattleScript_EffectAccuracyUp2::
|
||||
BattleScript_EffectEvasionUp2::
|
||||
BattleScript_EffectSpecialAttackDown2::
|
||||
BattleScript_EffectAccuracyDown2::
|
||||
BattleScript_EffectEvasionDown2::
|
||||
BattleScript_EffectEvasionDownHit::
|
||||
BattleScript_EffectVitalThrow::
|
||||
BattleScript_EffectUnused60::
|
||||
BattleScript_EffectFalseSwipe::
|
||||
BattleScript_EffectQuickAttack::
|
||||
BattleScript_EffectUnused6e::
|
||||
BattleScript_EffectPursuit::
|
||||
BattleScript_EffectUnused83::
|
||||
BattleScript_EffectUnused8d::
|
||||
BattleScript_EffectUnusedA3::
|
||||
BattleScript_EffectHit::
|
||||
jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler
|
||||
jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
|
||||
@ -338,7 +316,6 @@ BattleScript_CantMakeAsleep::
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectPoisonHit::
|
||||
BattleScript_EffectPoisonTail::
|
||||
setmoveeffect MOVE_EFFECT_POISON
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
@ -382,7 +359,6 @@ BattleScript_AbsorbTryFainting::
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectBurnHit::
|
||||
BattleScript_EffectBlazeKick::
|
||||
setmoveeffect MOVE_EFFECT_BURN
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
|
@ -563,7 +563,7 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_AddSemifinalAudience:: @ 824C594
|
||||
createvobject OBJ_EVENT_GFX_HEX_MANIAC, 28, 5, 2, 3, DIR_SOUTH
|
||||
createvobject OBJ_EVENT_GFX_SCHOOL_KID_M, 29, 5, 1, 3, DIR_SOUTH
|
||||
createvobject OBJ_EVENT_GFX_MART_EMPLOYEE, 30, 6, 2, 3, DIR_SOUTH
|
||||
createvobject OBJ_EVENT_GFX_WOMAN_5, 31, 8, 2, 3, 1
|
||||
createvobject OBJ_EVENT_GFX_WOMAN_5, 31, 8, 2, 3, DIR_SOUTH
|
||||
return
|
||||
|
||||
BattleFrontier_BattleDomeBattleRoom_EventScript_AddFinalAudience:: @ 824C652
|
||||
|
@ -3,6 +3,8 @@
|
||||
.set LOCALID_ATTENDANT_MULTIS, 8
|
||||
.set LOCALID_ATTENDANT_LINK_MULTIS, 9
|
||||
|
||||
@ Note: LOCALID_BATTLE_TOWER_LOBBY_REPORTER is a local id for this map used elsewhere. It's defined in event_objects.h
|
||||
|
||||
BattleFrontier_BattleTowerLobby_MapScripts:: @ 823E67B
|
||||
map_script MAP_SCRIPT_ON_RESUME, BattleFrontier_BattleTowerLobby_OnResume
|
||||
map_script MAP_SCRIPT_ON_TRANSITION, BattleFrontier_BattleTowerLobby_OnTransition
|
||||
|
@ -1,6 +1,7 @@
|
||||
.set LOCALID_DEOXYS_ROCK, 1
|
||||
.set LOCALID_DEOXYS, 2
|
||||
|
||||
@ Note: LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK is a local id for this map used elsewhere. It's defined in event_objects.h
|
||||
|
||||
BirthIsland_Exterior_MapScripts:: @ 8267F15
|
||||
map_script MAP_SCRIPT_ON_TRANSITION, BirthIsland_Exterior_OnTransition
|
||||
map_script MAP_SCRIPT_ON_RESUME, BirthIsland_Exterior_OnResume
|
||||
@ -68,9 +69,9 @@ BirthIsland_Exterior_EventScript_NotSolved3:: @ 8267FBF
|
||||
|
||||
BirthIsland_Exterior_EventScript_Deoxys:: @ 8267FC1
|
||||
waitse
|
||||
setfieldeffectargument 0, LOCALID_DEOXYS_ROCK
|
||||
setfieldeffectargument 1, 58
|
||||
setfieldeffectargument 2, 26
|
||||
setfieldeffectargument 0, LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK
|
||||
setfieldeffectargument 1, MAP_NUM(BIRTH_ISLAND_EXTERIOR)
|
||||
setfieldeffectargument 2, MAP_GROUP(BIRTH_ISLAND_EXTERIOR)
|
||||
dofieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
|
||||
playbgm MUS_RG_ENCOUNTER_DEOXYS, FALSE
|
||||
waitfieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
|
||||
|
@ -1,4 +1,4 @@
|
||||
.set LOCALID_MEW, 1
|
||||
@ Note: LOCALID_FARAWAY_ISLAND_MEW is a local id for this map used elsewhere. It's defined in event_objects.h
|
||||
|
||||
FarawayIsland_Interior_MapScripts:: @ 8267CFA
|
||||
map_script MAP_SCRIPT_ON_RESUME, FarawayIsland_Interior_OnResume
|
||||
@ -58,13 +58,13 @@ FarawayIsland_Interior_OnFrame: @ 8267D98
|
||||
FarawayIsland_Interior_EventScript_FindMew:: @ 8267DA2
|
||||
lockall
|
||||
playse SE_PIN
|
||||
applymovement LOCALID_MEW, Common_Movement_ExclamationMark
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, Common_Movement_ExclamationMark
|
||||
waitmovement 0
|
||||
applymovement LOCALID_MEW, Common_Movement_Delay48
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, Common_Movement_Delay48
|
||||
waitmovement 0
|
||||
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewMoveAndHide
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, FarawayIsland_Interior_Movement_MewMoveAndHide
|
||||
waitmovement 0
|
||||
copyobjectxytoperm LOCALID_MEW
|
||||
copyobjectxytoperm LOCALID_FARAWAY_ISLAND_MEW
|
||||
setvar VAR_TEMP_1, 1
|
||||
releaseall
|
||||
end
|
||||
@ -120,7 +120,7 @@ FarawayIsland_Interior_Movement_MewFloatUpEast: @ 8267DEB
|
||||
FarawayIsland_Interior_EventScript_Mew:: @ 8267DF2
|
||||
lock
|
||||
faceplayer
|
||||
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewAppear
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, FarawayIsland_Interior_Movement_MewAppear
|
||||
waitmovement 0
|
||||
setvar VAR_0x8004, 0
|
||||
special SetMewAboveGrass
|
||||
@ -171,22 +171,22 @@ FarawayIsland_Interior_EventScript_PlayerOrMewRan:: @ 8267EA4
|
||||
end
|
||||
|
||||
FarawayIsland_Interior_EventScript_FoundMewNorth:: @ 8267EAF
|
||||
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpNorth
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, FarawayIsland_Interior_Movement_MewFloatUpNorth
|
||||
waitmovement 0
|
||||
return
|
||||
|
||||
FarawayIsland_Interior_EventScript_FoundMewSouth:: @ 8267EBA
|
||||
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpSouth
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, FarawayIsland_Interior_Movement_MewFloatUpSouth
|
||||
waitmovement 0
|
||||
return
|
||||
|
||||
FarawayIsland_Interior_EventScript_FoundMewWest:: @ 8267EC5
|
||||
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpWest
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, FarawayIsland_Interior_Movement_MewFloatUpWest
|
||||
waitmovement 0
|
||||
return
|
||||
|
||||
FarawayIsland_Interior_EventScript_FoundMewEast:: @ 8267ED0
|
||||
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpEast
|
||||
applymovement LOCALID_FARAWAY_ISLAND_MEW, FarawayIsland_Interior_Movement_MewFloatUpEast
|
||||
waitmovement 0
|
||||
return
|
||||
|
||||
@ -194,7 +194,7 @@ FarawayIsland_Interior_EventScript_HideMewWhenGrassCut:: @ 8267EDB
|
||||
lockall
|
||||
fadescreenswapbuffers FADE_TO_BLACK
|
||||
setflag FLAG_HIDE_MEW
|
||||
removeobject LOCALID_MEW
|
||||
removeobject LOCALID_FARAWAY_ISLAND_MEW
|
||||
fadescreenswapbuffers FADE_FROM_BLACK
|
||||
msgbox FarawayIsland_Interior_Text_TheFeelingOfBeingWatchedFaded, MSGBOX_DEFAULT
|
||||
closemessage
|
||||
|
@ -2,9 +2,10 @@
|
||||
.set LOCALID_VICTORIA, 2
|
||||
.set LOCALID_VIVI, 3
|
||||
.set LOCALID_VICKY, 4
|
||||
.set LOCALID_PLAYER_FALLING, 45
|
||||
.set LOCALID_ROCK_SMASH_MAN, 46
|
||||
|
||||
@ Note: LOCALID_ROUTE111_PLAYER_FALLING is a local id for this map used elsewhere. It's defined in event_objects.h
|
||||
|
||||
Route111_MapScripts:: @ 81F0CA7
|
||||
map_script MAP_SCRIPT_ON_LOAD, Route111_OnLoad
|
||||
map_script MAP_SCRIPT_ON_TRANSITION, Route111_OnTransition
|
||||
@ -127,11 +128,11 @@ Route111_EventScript_MirageTowerDisappear:: @ 81F0E60
|
||||
waitstate
|
||||
delay 24
|
||||
playse SE_FALL
|
||||
addobject LOCALID_PLAYER_FALLING
|
||||
addobject LOCALID_ROUTE111_PLAYER_FALLING
|
||||
special StartPlayerDescendMirageTower
|
||||
waitstate
|
||||
showobjectat OBJ_EVENT_ID_PLAYER, MAP_LITTLEROOT_TOWN
|
||||
removeobject LOCALID_PLAYER_FALLING
|
||||
removeobject LOCALID_ROUTE111_PLAYER_FALLING
|
||||
delay 16
|
||||
turnobject OBJ_EVENT_ID_PLAYER, DIR_NORTH
|
||||
delay 16
|
||||
|
@ -1,11 +1,4 @@
|
||||
.set LOCALID_UR_PLAYER_4, 2
|
||||
.set LOCALID_UR_PLAYER_8, 3
|
||||
.set LOCALID_UR_PLAYER_7, 4
|
||||
.set LOCALID_UR_PLAYER_6, 5
|
||||
.set LOCALID_UR_PLAYER_5, 6
|
||||
.set LOCALID_UR_PLAYER_3, 7
|
||||
.set LOCALID_UR_PLAYER_2, 8
|
||||
.set LOCALID_UR_PLAYER_1, 9
|
||||
@ Note: LOCALID_UNION_ROOM_PLAYER_# are local ids for this map used elsewhere. They're defined in event_objects.h
|
||||
|
||||
UnionRoom_MapScripts:: @ 823D1A6
|
||||
map_script MAP_SCRIPT_ON_RESUME, UnionRoom_OnResume
|
||||
@ -21,14 +14,14 @@ UnionRoom_OnResume: @ 823D1B1
|
||||
setflag FLAG_HIDE_UNION_ROOM_PLAYER_6
|
||||
setflag FLAG_HIDE_UNION_ROOM_PLAYER_7
|
||||
setflag FLAG_HIDE_UNION_ROOM_PLAYER_8
|
||||
removeobject LOCALID_UR_PLAYER_1
|
||||
removeobject LOCALID_UR_PLAYER_2
|
||||
removeobject LOCALID_UR_PLAYER_3
|
||||
removeobject LOCALID_UR_PLAYER_4
|
||||
removeobject LOCALID_UR_PLAYER_5
|
||||
removeobject LOCALID_UR_PLAYER_6
|
||||
removeobject LOCALID_UR_PLAYER_7
|
||||
removeobject LOCALID_UR_PLAYER_8
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_1
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_2
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_3
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_4
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_5
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_6
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_7
|
||||
removeobject LOCALID_UNION_ROOM_PLAYER_8
|
||||
special RunUnionRoom
|
||||
end
|
||||
|
||||
|
@ -1027,7 +1027,7 @@ gTVPokemonTodaySuccessfulText11:: @ 08283A5F
|
||||
.string "BIG BRO: Remember, it could be your\n"
|
||||
.string "POKéMON in the spotlight next time!$"
|
||||
|
||||
gTVTodaysSmartShopperText00:: @ 08283B05
|
||||
SmartShopper_Text_Intro:: @ 08283B05
|
||||
.string "Hello!\p"
|
||||
.string "It's time for TODAY'S SMART SHOPPER.\p"
|
||||
.string "INTERVIEWER: How are you, viewers?\p"
|
||||
@ -1036,7 +1036,7 @@ gTVTodaysSmartShopperText00:: @ 08283B05
|
||||
.string "Let's check on what the hot sellers\n"
|
||||
.string "have been recently.$"
|
||||
|
||||
gTVTodaysSmartShopperText01:: @ 08283BAF
|
||||
SmartShopper_Text_ClerkNormal:: @ 08283BAF
|
||||
.string "Let's interview the clerk to get the\n"
|
||||
.string "lowdown.\p"
|
||||
.string "Hi, how's your business?\p"
|
||||
@ -1046,7 +1046,7 @@ gTVTodaysSmartShopperText01:: @ 08283BAF
|
||||
.string "Why, just the other day a TRAINER\n"
|
||||
.string "named {STR_VAR_1} bought {STR_VAR_3}.$"
|
||||
|
||||
gTVTodaysSmartShopperText02:: @ 08283C81
|
||||
SmartShopper_Text_RandomComment1:: @ 08283C81
|
||||
.string "INTERVIEWER: The TRAINER bought\n"
|
||||
.string "{STR_VAR_3} {STR_VAR_2}S? That's a haul!\p"
|
||||
.string "If I may say so, {STR_VAR_1} must have\n"
|
||||
@ -1055,13 +1055,13 @@ gTVTodaysSmartShopperText02:: @ 08283C81
|
||||
.string "For traveling, {STR_VAR_2}S are so\n"
|
||||
.string "important!$"
|
||||
|
||||
gTVTodaysSmartShopperText03:: @ 08283D32
|
||||
SmartShopper_Text_RandomComment2:: @ 08283D32
|
||||
.string "INTERVIEWER: Speaking of the item\n"
|
||||
.string "{STR_VAR_2}, I just bought {STR_VAR_3} of\l"
|
||||
.string "them recently.\p"
|
||||
.string "After all, {STR_VAR_2}'s a great item!$"
|
||||
|
||||
gTVTodaysSmartShopperText04:: @ 08283D99
|
||||
SmartShopper_Text_RandomComment3:: @ 08283D99
|
||||
.string "INTERVIEWER: {STR_VAR_2}?!\n"
|
||||
.string "But {STR_VAR_3} of them?!\p"
|
||||
.string "I didn't think there would be anyone\n"
|
||||
@ -1069,7 +1069,7 @@ gTVTodaysSmartShopperText04:: @ 08283D99
|
||||
.string "My goodness, I can only afford one or\n"
|
||||
.string "two at a time…$"
|
||||
|
||||
gTVTodaysSmartShopperText05:: @ 08283E28
|
||||
SmartShopper_Text_RandomComment4:: @ 08283E28
|
||||
.string "INTERVIEWER: One time, I bought\n"
|
||||
.string "a whole lot of the item {STR_VAR_2}.\p"
|
||||
.string "But it turned out to be too many.\n"
|
||||
@ -1079,21 +1079,21 @@ gTVTodaysSmartShopperText05:: @ 08283E28
|
||||
.string "Oops!\p"
|
||||
.string "There's no point talking about me!$"
|
||||
|
||||
gTVTodaysSmartShopperText06:: @ 08283F01
|
||||
SmartShopper_Text_SecondItem:: @ 08283F01
|
||||
.string "CLERK: {STR_VAR_1} also bought the item\n"
|
||||
.string "{STR_VAR_2} in bulk, taking {STR_VAR_3}.\p"
|
||||
.string "INTERVIEWER: Oh, that's smart.\n"
|
||||
.string "{STR_VAR_2}'s a very good item, too.$"
|
||||
|
||||
gTVTodaysSmartShopperText07:: @ 08283F72
|
||||
SmartShopper_Text_ThirdItem:: @ 08283F72
|
||||
.string "CLERK: And, the TRAINER also bought\n"
|
||||
.string "{STR_VAR_3} of the item {STR_VAR_2}.$"
|
||||
|
||||
gTVTodaysSmartShopperText08:: @ 08283FA9
|
||||
SmartShopper_Text_DuringSale:: @ 08283FA9
|
||||
.string "CLERK: Plus, it was during a big sale.\n"
|
||||
.string "That's smart shopping.$"
|
||||
|
||||
gTVTodaysSmartShopperText09:: @ 08283FE7
|
||||
SmartShopper_Text_OutroNormal:: @ 08283FE7
|
||||
.string "INTERVIEWER: Hmm… {STR_VAR_1} sounds like\n"
|
||||
.string "quite the shrewd bargain hunter!\p"
|
||||
.string "In total, {STR_VAR_1}'s purchases came to…\p"
|
||||
@ -1102,11 +1102,11 @@ gTVTodaysSmartShopperText09:: @ 08283FE7
|
||||
.string "Oops! We're out of time!\n"
|
||||
.string "See you on our next broadcast!$"
|
||||
|
||||
gTVTodaysSmartShopperText10:: @ 0828409E
|
||||
SmartShopper_Text_IsVIP:: @ 0828409E
|
||||
.string "CLERK: {STR_VAR_1} is a VIP customer,\n"
|
||||
.string "no doubt about it.$"
|
||||
|
||||
gTVTodaysSmartShopperText11:: @ 082840CE
|
||||
SmartShopper_Text_ClerkMax:: @ 082840CE
|
||||
.string "Let's interview the clerk to get the\n"
|
||||
.string "lowdown.\p"
|
||||
.string "Hi, how's your business?\p"
|
||||
@ -1127,7 +1127,7 @@ gTVTodaysSmartShopperText11:: @ 082840CE
|
||||
.string "CLERK: {STR_VAR_1} is a VIP customer,\n"
|
||||
.string "no doubt about it.$"
|
||||
|
||||
gTVTodaysSmartShopperText12:: @ 082842E6
|
||||
SmartShopper_Text_OutroMax:: @ 082842E6
|
||||
.string "INTERVIEWER: Hmm…\n"
|
||||
.string "That is amazing.\p"
|
||||
.string "But why would the TRAINER need to buy\n"
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 298 B |
@ -29,24 +29,24 @@
|
||||
#define AI_WEATHER_HAIL 3
|
||||
|
||||
// get_how_powerful_move_is
|
||||
#define MOVE_POWER_DISCOURAGED 0
|
||||
#define MOVE_POWER_OTHER 0
|
||||
#define MOVE_NOT_MOST_POWERFUL 1
|
||||
#define MOVE_MOST_POWERFUL 2
|
||||
|
||||
// script's table id to bit
|
||||
#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
|
||||
#define AI_SCRIPT_TRY_TO_FAINT (1 << 1)
|
||||
#define AI_SCRIPT_CHECK_VIABILITY (1 << 2)
|
||||
#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)
|
||||
#define AI_SCRIPT_RISKY (1 << 4)
|
||||
#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5)
|
||||
#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6)
|
||||
#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7)
|
||||
#define AI_SCRIPT_HP_AWARE (1 << 8)
|
||||
#define AI_SCRIPT_UNKNOWN (1 << 9)
|
||||
#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
|
||||
#define AI_SCRIPT_TRY_TO_FAINT (1 << 1)
|
||||
#define AI_SCRIPT_CHECK_VIABILITY (1 << 2)
|
||||
#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)
|
||||
#define AI_SCRIPT_RISKY (1 << 4)
|
||||
#define AI_SCRIPT_PREFER_POWER_EXTREMES (1 << 5)
|
||||
#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6)
|
||||
#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7)
|
||||
#define AI_SCRIPT_HP_AWARE (1 << 8)
|
||||
#define AI_SCRIPT_TRY_SUNNY_DAY_START (1 << 9)
|
||||
// 10 - 28 are not used
|
||||
#define AI_SCRIPT_ROAMING (1 << 29)
|
||||
#define AI_SCRIPT_SAFARI (1 << 30)
|
||||
#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
|
||||
#define AI_SCRIPT_ROAMING (1 << 29)
|
||||
#define AI_SCRIPT_SAFARI (1 << 30)
|
||||
#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_AI_H
|
||||
|
@ -279,7 +279,37 @@
|
||||
|
||||
#define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL
|
||||
|
||||
// Special object event local ids
|
||||
#define OBJ_EVENT_ID_PLAYER 0xFF
|
||||
#define OBJ_EVENT_ID_CAMERA 0x7F
|
||||
|
||||
// Object event local ids referenced in C files
|
||||
#define LOCALID_ROUTE111_PLAYER_FALLING 45
|
||||
#define LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK 1
|
||||
#define LOCALID_FARAWAY_ISLAND_MEW 1
|
||||
#define LOCALID_UNION_ROOM_PLAYER_4 2
|
||||
#define LOCALID_UNION_ROOM_PLAYER_8 3
|
||||
#define LOCALID_UNION_ROOM_PLAYER_7 4
|
||||
#define LOCALID_UNION_ROOM_PLAYER_6 5
|
||||
#define LOCALID_UNION_ROOM_PLAYER_5 6
|
||||
#define LOCALID_UNION_ROOM_PLAYER_3 7
|
||||
#define LOCALID_UNION_ROOM_PLAYER_2 8
|
||||
#define LOCALID_UNION_ROOM_PLAYER_1 9
|
||||
#define LOCALID_BATTLE_TOWER_LOBBY_REPORTER 5
|
||||
#define LOCALID_TRUCK_BOX_TOP 1
|
||||
#define LOCALID_TRUCK_BOX_BOTTOM_L 2
|
||||
#define LOCALID_TRUCK_BOX_BOTTOM_R 3
|
||||
#define LOCALID_OLDALE_MART_CLERK 1
|
||||
#define LOCALID_LAVARIDGE_MART_CLERK 1
|
||||
#define LOCALID_FALLARBOR_MART_CLERK 1
|
||||
#define LOCALID_VERDANTURF_MART_CLERK 1
|
||||
#define LOCALID_PETALBURG_MART_CLERK 1
|
||||
#define LOCALID_SLATEPORT_MART_CLERK 1
|
||||
#define LOCALID_MAUVILLE_MART_CLERK 1
|
||||
#define LOCALID_RUSTBORO_MART_CLERK 1
|
||||
#define LOCALID_FORTREE_MART_CLERK 1
|
||||
#define LOCALID_MOSSDEEP_MART_CLERK 1
|
||||
#define LOCALID_SOOTOPOLIS_MART_CLERK 1
|
||||
#define LOCALID_BATTLE_FRONTIER_MART_CLERK 1
|
||||
|
||||
#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H
|
||||
|
@ -249,6 +249,21 @@
|
||||
#define CONTESTLADYLIVE_STATE_LOST 2
|
||||
#define CONTESTLADYLIVE_STATE_LOST_BADLY 3
|
||||
|
||||
// TV Show states for Smart Shopper
|
||||
#define SMARTSHOPPER_STATE_INTRO 0
|
||||
#define SMARTSHOPPER_STATE_CLERK_NORMAL 1
|
||||
#define SMARTSHOPPER_STATE_RAND_COMMENT_1 2
|
||||
#define SMARTSHOPPER_STATE_RAND_COMMENT_2 3
|
||||
#define SMARTSHOPPER_STATE_RAND_COMMENT_3 4
|
||||
#define SMARTSHOPPER_STATE_RAND_COMMENT_4 5
|
||||
#define SMARTSHOPPER_STATE_SECOND_ITEM 6
|
||||
#define SMARTSHOPPER_STATE_THIRD_ITEM 7
|
||||
#define SMARTSHOPPER_STATE_DURING_SALE 8
|
||||
#define SMARTSHOPPER_STATE_OUTRO_NORMAL 9
|
||||
#define SMARTSHOPPER_STATE_IS_VIP 10
|
||||
#define SMARTSHOPPER_STATE_CLERK_MAX 11
|
||||
#define SMARTSHOPPER_STATE_OUTRO_MAX 12
|
||||
|
||||
#define SMARTSHOPPER_NUM_ITEMS 3
|
||||
|
||||
#endif //GUARD_CONSTANTS_TV_H
|
||||
|
@ -2,9 +2,9 @@
|
||||
#define GUARD_EVENT_OBJECT_LOCK_H
|
||||
|
||||
bool8 IsFreezePlayerFinished(void);
|
||||
void ScriptFreezeObjectEvents(void);
|
||||
bool8 IsFreezeSelectedObjectAndPlayerFinished(void);
|
||||
void LockSelectedObjectEvent(void);
|
||||
void FreezeObjects_WaitForPlayer(void);
|
||||
void FreezeObjects_WaitForPlayerAndSelected(void);
|
||||
void FreezeForApproachingTrainers(void);
|
||||
bool8 IsFreezeObjectAndPlayerFinished(void);
|
||||
void ScriptUnfreezeObjectEvents(void);
|
||||
|
@ -108,19 +108,19 @@ extern const u8 gTVPokemonTodaySuccessfulText08[];
|
||||
extern const u8 gTVPokemonTodaySuccessfulText09[];
|
||||
extern const u8 gTVPokemonTodaySuccessfulText10[];
|
||||
extern const u8 gTVPokemonTodaySuccessfulText11[];
|
||||
extern const u8 gTVTodaysSmartShopperText00[];
|
||||
extern const u8 gTVTodaysSmartShopperText01[];
|
||||
extern const u8 gTVTodaysSmartShopperText02[];
|
||||
extern const u8 gTVTodaysSmartShopperText03[];
|
||||
extern const u8 gTVTodaysSmartShopperText04[];
|
||||
extern const u8 gTVTodaysSmartShopperText05[];
|
||||
extern const u8 gTVTodaysSmartShopperText06[];
|
||||
extern const u8 gTVTodaysSmartShopperText07[];
|
||||
extern const u8 gTVTodaysSmartShopperText08[];
|
||||
extern const u8 gTVTodaysSmartShopperText09[];
|
||||
extern const u8 gTVTodaysSmartShopperText10[];
|
||||
extern const u8 gTVTodaysSmartShopperText11[];
|
||||
extern const u8 gTVTodaysSmartShopperText12[];
|
||||
extern const u8 SmartShopper_Text_Intro[];
|
||||
extern const u8 SmartShopper_Text_ClerkNormal[];
|
||||
extern const u8 SmartShopper_Text_RandomComment1[];
|
||||
extern const u8 SmartShopper_Text_RandomComment2[];
|
||||
extern const u8 SmartShopper_Text_RandomComment3[];
|
||||
extern const u8 SmartShopper_Text_RandomComment4[];
|
||||
extern const u8 SmartShopper_Text_SecondItem[];
|
||||
extern const u8 SmartShopper_Text_ThirdItem[];
|
||||
extern const u8 SmartShopper_Text_DuringSale[];
|
||||
extern const u8 SmartShopper_Text_OutroNormal[];
|
||||
extern const u8 SmartShopper_Text_IsVIP[];
|
||||
extern const u8 SmartShopper_Text_ClerkMax[];
|
||||
extern const u8 SmartShopper_Text_OutroMax[];
|
||||
extern const u8 gTVWorldOfMastersText00[];
|
||||
extern const u8 gTVWorldOfMastersText01[];
|
||||
extern const u8 gTVWorldOfMastersText02[];
|
||||
|
@ -31,7 +31,7 @@ struct ListMenuTemplate
|
||||
{
|
||||
const struct ListMenuItem *items;
|
||||
void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list);
|
||||
void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y);
|
||||
void (* itemPrintFunc)(u8 windowId, u32 itemId, u8 y);
|
||||
u16 totalItems;
|
||||
u16 maxShowed;
|
||||
u8 windowId;
|
||||
|
@ -111,7 +111,7 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y);
|
||||
void CB2_OpenFlyMap(void);
|
||||
bool8 IsRegionMapZoomed(void);
|
||||
void TrySetPlayerIconBlink(void);
|
||||
void sub_8123030(u16 color, u32 coeff);
|
||||
void BlendRegionMap(u16 color, u32 coeff);
|
||||
void SetRegionMapDataForZoom(void);
|
||||
|
||||
extern const struct RegionMapLocation gRegionMapEntries[];
|
||||
|
@ -263,7 +263,10 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
|
||||
Cmd_if_holds_item, // 0x62
|
||||
};
|
||||
|
||||
static const u16 sDiscouragedPowerfulMoveEffects[] =
|
||||
// For the purposes of determining the most powerful move in a moveset, these
|
||||
// moves are treated the same as having a power of 0 or 1
|
||||
#define IGNORED_MOVES_END 0xFFFF
|
||||
static const u16 sIgnoredPowerfulMoveEffects[] =
|
||||
{
|
||||
EFFECT_EXPLOSION,
|
||||
EFFECT_DREAM_EATER,
|
||||
@ -277,7 +280,7 @@ static const u16 sDiscouragedPowerfulMoveEffects[] =
|
||||
EFFECT_SUPERPOWER,
|
||||
EFFECT_ERUPTION,
|
||||
EFFECT_OVERHEAT,
|
||||
0xFFFF
|
||||
IGNORED_MOVES_END
|
||||
};
|
||||
|
||||
// code
|
||||
@ -1177,14 +1180,14 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
s32 i, checkedMove;
|
||||
s32 moveDmgs[MAX_MON_MOVES];
|
||||
|
||||
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
|
||||
for (i = 0; sIgnoredPowerfulMoveEffects[i] != IGNORED_MOVES_END; i++)
|
||||
{
|
||||
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
|
||||
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sIgnoredPowerfulMoveEffects[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
|
||||
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
|
||||
&& sIgnoredPowerfulMoveEffects[i] == IGNORED_MOVES_END)
|
||||
{
|
||||
gDynamicBasePower = 0;
|
||||
*(&gBattleStruct->dynamicMoveType) = 0;
|
||||
@ -1192,16 +1195,18 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
gMoveResultFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
|
||||
// Considered move has power and is not in sIgnoredPowerfulMoveEffects
|
||||
// Check all other moves and calculate their power
|
||||
for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
|
||||
{
|
||||
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
|
||||
for (i = 0; sIgnoredPowerfulMoveEffects[i] != IGNORED_MOVES_END; i++)
|
||||
{
|
||||
if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
|
||||
if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sIgnoredPowerfulMoveEffects[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (gBattleMons[sBattler_AI].moves[checkedMove] != MOVE_NONE
|
||||
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
|
||||
&& sIgnoredPowerfulMoveEffects[i] == IGNORED_MOVES_END
|
||||
&& gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].power > 1)
|
||||
{
|
||||
gCurrentMove = gBattleMons[sBattler_AI].moves[checkedMove];
|
||||
@ -1217,6 +1222,7 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Is the considered move the most powerful move available?
|
||||
for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
|
||||
{
|
||||
if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex])
|
||||
@ -1224,13 +1230,14 @@ static void Cmd_get_how_powerful_move_is(void)
|
||||
}
|
||||
|
||||
if (checkedMove == MAX_MON_MOVES)
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL; // Is the most powerful.
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL;
|
||||
else
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL; // Not the most powerful.
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL;
|
||||
}
|
||||
else
|
||||
{
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_POWER_DISCOURAGED; // Highly discouraged in terms of power.
|
||||
// Move has a power of 0/1, or is in the group sIgnoredPowerfulMoveEffects
|
||||
AI_THINKING_STRUCT->funcResult = MOVE_POWER_OTHER;
|
||||
}
|
||||
|
||||
gAIScriptPtr++;
|
||||
|
@ -1211,8 +1211,8 @@ static const u8 gUnknown_0860D1A0[DOME_TOURNAMENT_TRAINERS_COUNT / 2][DOME_ROUND
|
||||
|
||||
static const u8 gUnknown_0860D1C0[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 15, 8, 7, 3, 12, 11, 4, 1, 14, 9, 6, 2, 13, 10, 5};
|
||||
|
||||
// Each tourney trainer has a text describing their potential to win, depending on their seed ranking for the current tourney
|
||||
// Dome Ace Tucker has their own separate potential text
|
||||
// The first line of text on a trainers info card. It describes their potential to win, based on their seed in the tournament tree.
|
||||
// Dome Ace Tucker has their own separate potential text.
|
||||
static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT + 1] =
|
||||
{
|
||||
BattleDome_Text_Potential1, // Highest potential
|
||||
@ -1234,7 +1234,7 @@ static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT
|
||||
BattleDome_Text_PotentialDomeAceTucker,
|
||||
};
|
||||
|
||||
// The first line of text on a trainers info card that gives information about their battle style (dependent on their party's moves)
|
||||
// The second line of text on a trainers info card. It gives information about their battle style (dependent on their party's moves).
|
||||
static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] =
|
||||
{
|
||||
[DOME_BATTLE_STYLE_RISKY] = BattleDome_Text_StyleRiskDisaster,
|
||||
@ -1271,7 +1271,7 @@ static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] =
|
||||
[DOME_BATTLE_STYLE_UNUSED4] = BattleDome_Text_StyleSampleMessage4,
|
||||
};
|
||||
|
||||
// The second line of text on a trainers info card that gives information about their party's stat spread
|
||||
// The third line of text on a trainers info card. It that gives information about their party's stat spread (based on their Pokémon's effort values and Nature).
|
||||
static const u8 *const sBattleDomeOpponentStatsTexts[] =
|
||||
{
|
||||
BattleDome_Text_EmphasizesHPAndAtk, // DOME_TEXT_TWO_GOOD_STATS and DOME_TEXT_HP start here
|
||||
|
@ -106,7 +106,7 @@ static void BagAction_Give(u8);
|
||||
static void BagAction_Cancel(u8);
|
||||
static void BagAction_UseInBattle(u8);
|
||||
static void BagCursorMoved(s32, bool8, struct ListMenu *);
|
||||
static void PrintItemQuantity(u8, s32, u8);
|
||||
static void PrintItemQuantity(u8 windowId, u32 itemId, u8 y);
|
||||
static void TossItem(u8);
|
||||
static void DontTossItem(u8);
|
||||
|
||||
@ -651,7 +651,7 @@ static void BagCursorMoved(s32 itemIndex, bool8 onInit, struct ListMenu *list)
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
|
||||
static void PrintItemQuantity(u8 windowId, u32 itemIndex, u8 y)
|
||||
{
|
||||
s32 xAlign;
|
||||
if (itemIndex == LIST_CANCEL)
|
||||
|
@ -1246,7 +1246,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
|
||||
break;
|
||||
case PTS_REFLECT:
|
||||
// If hit Reflect with damaging physical move
|
||||
if (type < TYPE_MYSTERY && power != 0 && tvPtr->side[defSide].reflectMonId != 0)
|
||||
if (IS_TYPE_PHYSICAL(type) && power != 0 && tvPtr->side[defSide].reflectMonId != 0)
|
||||
{
|
||||
u32 id = (tvPtr->side[defSide].reflectMonId - 1) * 4;
|
||||
movePoints->points[defSide][id + tvPtr->side[defSide].reflectMoveSlot] += sPointsArray[caseId][0];
|
||||
@ -1254,7 +1254,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
|
||||
break;
|
||||
case PTS_LIGHT_SCREEN:
|
||||
// If hit Light Screen with damaging special move
|
||||
if (type >= TYPE_MYSTERY && power != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
|
||||
if (!IS_TYPE_PHYSICAL(type) && power != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
|
||||
{
|
||||
u32 id = (tvPtr->side[defSide].lightScreenMonId - 1) * 4;
|
||||
movePoints->points[defSide][id + tvPtr->side[defSide].lightScreenMoveSlot] += sPointsArray[caseId][0];
|
||||
|
@ -29,7 +29,7 @@ extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
|
||||
static void ClearDaycareMonMail(struct DaycareMail *mail);
|
||||
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
|
||||
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
|
||||
static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
|
||||
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y);
|
||||
|
||||
// RAM buffers used to assist with BuildEggMoveset()
|
||||
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
|
||||
@ -1226,7 +1226,7 @@ static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycare
|
||||
DaycareAddTextPrinter(windowId, lvlText, x, y);
|
||||
}
|
||||
|
||||
static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
|
||||
static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y)
|
||||
{
|
||||
if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
|
||||
{
|
||||
|
@ -147,7 +147,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId);
|
||||
static void ExitTraderDecorationMenu(u8 taskId);
|
||||
static void CopyDecorationMenuItemName(u8 *dest, u16 decoration);
|
||||
static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct ListMenu *menu);
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y);
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, u32 itemIndex, u8 y);
|
||||
static void ShowDecorationItemsWindow(u8 taskId);
|
||||
static void HandleDecorationItemsMenuInput(u8 taskId);
|
||||
static void PrintDecorationItemDescription(s32 itemIndex);
|
||||
@ -912,9 +912,9 @@ static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct L
|
||||
PrintDecorationItemDescription(itemIndex);
|
||||
}
|
||||
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y)
|
||||
static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, u32 itemIndex, u8 y)
|
||||
{
|
||||
if (itemIndex != -2)
|
||||
if (itemIndex != LIST_CANCEL)
|
||||
{
|
||||
if (IsDecorationIndexInSecretBase(itemIndex + 1) == TRUE)
|
||||
BlitMenuInfoIcon(windowId, MENU_INFO_ICON_BALL_RED, 92, y + 2);
|
||||
|
@ -40,7 +40,7 @@ bool8 IsFreezePlayerFinished(void)
|
||||
}
|
||||
|
||||
|
||||
void ScriptFreezeObjectEvents(void)
|
||||
void FreezeObjects_WaitForPlayer(void)
|
||||
{
|
||||
FreezeObjectEvents();
|
||||
CreateTask(Task_FreezePlayer, 80);
|
||||
@ -82,7 +82,9 @@ bool8 IsFreezeSelectedObjectAndPlayerFinished(void)
|
||||
}
|
||||
}
|
||||
|
||||
void LockSelectedObjectEvent(void)
|
||||
// Freeze all objects immediately except the selected object and the player.
|
||||
// The selected object and player are frozen once their movement is finished.
|
||||
void FreezeObjects_WaitForPlayerAndSelected(void)
|
||||
{
|
||||
u8 taskId;
|
||||
FreezeObjectEventsExceptOne(gSelectedObjectEvent);
|
||||
@ -144,6 +146,8 @@ static void Task_FreezeObjectAndPlayer(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
// Freeze all objects immediately except the player and the approaching trainers.
|
||||
// The approaching trainers and player are frozen once their movement is finished
|
||||
void FreezeForApproachingTrainers(void)
|
||||
{
|
||||
u8 trainerObjectId1, trainerObjectId2, taskId;
|
||||
|
@ -38,7 +38,7 @@ static const s16 sFarawayIslandRockCoords[4][2] =
|
||||
static u8 GetMewObjectEventId(void)
|
||||
{
|
||||
u8 objectEventId;
|
||||
TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
TryGetObjectEventIdByLocalIdAndMap(LOCALID_FARAWAY_ISLAND_MEW, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
return objectEventId;
|
||||
}
|
||||
|
||||
|
@ -72,12 +72,12 @@ void Task_Truck1(u8 taskId)
|
||||
s16 cameraXpan = 0, cameraYpan = 0;
|
||||
s16 box1, box2, box3;
|
||||
|
||||
box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
box1 = GetTruckBoxMovement(data[0] + 30) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
box2 = GetTruckBoxMovement(data[0]) * 2;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
box3 = GetTruckBoxMovement(data[0]) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
|
||||
if (++data[0] == SECONDS(500)) // this will never run
|
||||
data[0] = 0; // reset the timer if it gets stuck.
|
||||
@ -116,11 +116,11 @@ void Task_Truck2(u8 taskId)
|
||||
cameraYpan = GetTruckCameraBobbingY(data[2]);
|
||||
SetCameraPanning(cameraXpan, cameraYpan);
|
||||
box1 = GetTruckBoxMovement(data[2] + 30) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
|
||||
box2 = GetTruckBoxMovement(data[2]) * 2;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
|
||||
box3 = GetTruckBoxMovement(data[2]) * 4;
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,9 +147,9 @@ static void Task_Truck3(u8 taskId)
|
||||
cameraXpan = gTruckCamera_HorizontalTable[data[1]];
|
||||
cameraYpan = 0;
|
||||
SetCameraPanning(cameraXpan, 0);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
|
||||
}
|
||||
}
|
||||
|
||||
@ -242,9 +242,9 @@ void EndTruckSequence(u8 taskId)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_HandleTruckSequence))
|
||||
{
|
||||
SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
|
||||
SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3429,7 +3429,7 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
|
||||
{
|
||||
u8 objectEventId;
|
||||
LoadPalette(&sDeoxysRockPalettes[rockLevel], 0x1A0, 8);
|
||||
TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
TryGetObjectEventIdByLocalIdAndMap(LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
|
||||
if (rockLevel == 0)
|
||||
PlaySE(SE_M_CONFUSE_RAY);
|
||||
@ -3437,9 +3437,9 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
|
||||
PlaySE(SE_RG_DEOXYS_MOVE);
|
||||
|
||||
CreateTask(WaitForDeoxysRockMovement, 8);
|
||||
gFieldEffectArguments[0] = 1;
|
||||
gFieldEffectArguments[1] = 58;
|
||||
gFieldEffectArguments[2] = 26;
|
||||
gFieldEffectArguments[0] = LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK;
|
||||
gFieldEffectArguments[1] = MAP_NUM(BIRTH_ISLAND_EXTERIOR);
|
||||
gFieldEffectArguments[2] = MAP_GROUP(BIRTH_ISLAND_EXTERIOR);
|
||||
gFieldEffectArguments[3] = sDeoxysRockCoords[rockLevel][0];
|
||||
gFieldEffectArguments[4] = sDeoxysRockCoords[rockLevel][1];
|
||||
|
||||
@ -3686,18 +3686,18 @@ u32 GetMartEmployeeObjectEventId(void)
|
||||
{
|
||||
static const u8 sPokeMarts[][3] =
|
||||
{
|
||||
{ MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), 1 },
|
||||
{ MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), 1 },
|
||||
{ MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), 1 },
|
||||
{ MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), 1 },
|
||||
{ MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), 1 },
|
||||
{ MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), 1 },
|
||||
{ MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), 1 },
|
||||
{ MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), 1 },
|
||||
{ MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), 1 }
|
||||
{ MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), LOCALID_OLDALE_MART_CLERK },
|
||||
{ MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), LOCALID_LAVARIDGE_MART_CLERK },
|
||||
{ MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), LOCALID_FALLARBOR_MART_CLERK },
|
||||
{ MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), LOCALID_VERDANTURF_MART_CLERK },
|
||||
{ MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), LOCALID_PETALBURG_MART_CLERK },
|
||||
{ MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), LOCALID_SLATEPORT_MART_CLERK },
|
||||
{ MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), LOCALID_MAUVILLE_MART_CLERK },
|
||||
{ MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), LOCALID_RUSTBORO_MART_CLERK },
|
||||
{ MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), LOCALID_FORTREE_MART_CLERK },
|
||||
{ MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), LOCALID_MOSSDEEP_MART_CLERK },
|
||||
{ MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), LOCALID_SOOTOPOLIS_MART_CLERK },
|
||||
{ MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), LOCALID_BATTLE_FRONTIER_MART_CLERK }
|
||||
};
|
||||
|
||||
u8 i;
|
||||
|
@ -66,13 +66,12 @@ static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void ClearVramOamPltt_LoadHofPal(void);
|
||||
static void LoadHofGfx(void);
|
||||
static void InitHofBgs(void);
|
||||
static bool8 CreateHofConfettiSprite(void);
|
||||
static void StartCredits(void);
|
||||
static bool8 sub_8175024(void);
|
||||
static bool8 LoadHofBgs(void);
|
||||
static void Task_Hof_InitMonData(u8 taskId);
|
||||
static void Task_Hof_InitTeamSaveData(u8 taskId);
|
||||
static void Task_Hof_SetMonDisplayTask(u8 taskId);
|
||||
@ -104,7 +103,6 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
|
||||
static void Task_DoDomeConfetti(u8 taskId);
|
||||
static void SpriteCB_HofConfetti(struct Sprite* sprite);
|
||||
|
||||
// const rom data
|
||||
static const struct BgTemplate sHof_BgTemplates[] =
|
||||
{
|
||||
{
|
||||
@ -136,12 +134,19 @@ static const struct BgTemplate sHof_BgTemplates[] =
|
||||
},
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sHof_WindowTemplate = {0, 2, 2, 0xE, 6, 0xE, 1};
|
||||
static const struct WindowTemplate sHof_WindowTemplate = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 14,
|
||||
.height = 6,
|
||||
.paletteNum = 14,
|
||||
.baseBlock = 1
|
||||
};
|
||||
|
||||
static const u8 sMonInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY};
|
||||
static const u8 sPlayerInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
|
||||
|
||||
static const u8 sUnused_085E538C[] = {4, 5, 0, 0};
|
||||
static const u8 sUnusedTextColors[4] = {TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_TRANSPARENT};
|
||||
|
||||
static const struct CompressedSpriteSheet sSpriteSheet_Confetti[] =
|
||||
{
|
||||
@ -383,7 +388,7 @@ static bool8 InitHallOfFameScreen(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_8175024())
|
||||
if (!LoadHofBgs())
|
||||
{
|
||||
SetVBlankCallback(VBlankCB_HallOfFame);
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
|
||||
@ -819,7 +824,7 @@ void CB2_DoHallOfFamePC(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_8175024())
|
||||
if (!LoadHofBgs())
|
||||
{
|
||||
struct HallofFameTeam *fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
|
||||
fameTeam->mon[0] = sDummyFameMon;
|
||||
@ -1301,7 +1306,7 @@ static void InitHofBgs(void)
|
||||
ChangeBgY(3, 0, 0);
|
||||
}
|
||||
|
||||
static bool8 sub_8175024(void)
|
||||
static bool8 LoadHofBgs(void)
|
||||
{
|
||||
switch (sHofGfxPtr->state)
|
||||
{
|
||||
|
@ -133,7 +133,7 @@ void UpdatePocketScrollPositions(void);
|
||||
u8 CreateBagInputHandlerTask(u8);
|
||||
void sub_81AC23C(u8);
|
||||
void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu*);
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 a);
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 a);
|
||||
void ItemMenu_UseOutOfBattle(u8 taskId);
|
||||
void ItemMenu_Toss(u8 taskId);
|
||||
void ItemMenu_Register(u8 taskId);
|
||||
@ -893,7 +893,7 @@ void BagMenu_MoveCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *li
|
||||
}
|
||||
}
|
||||
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 y)
|
||||
void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 y)
|
||||
{
|
||||
u16 itemId;
|
||||
u16 itemQuantity;
|
||||
|
@ -244,7 +244,7 @@ static const struct OamData sBerryPicRotatingOamData =
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_857FBD8[] =
|
||||
static const union AnimCmd sAnim_BerryPic[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 0),
|
||||
ANIMCMD_END
|
||||
@ -252,7 +252,7 @@ static const union AnimCmd sSpriteAnim_857FBD8[] =
|
||||
|
||||
static const union AnimCmd *const sBerryPicSpriteAnimTable[] =
|
||||
{
|
||||
sSpriteAnim_857FBD8
|
||||
sAnim_BerryPic
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sBerryPicSpriteImageTable[] =
|
||||
|
@ -253,7 +253,7 @@ static u8 sub_81D1D34(u8 a0)
|
||||
return sUnknown_0203CF48[a0];
|
||||
}
|
||||
|
||||
static void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
|
||||
static void sub_81D1D44(u8 windowId, u32 itemId, u8 y)
|
||||
{
|
||||
u8 buffer[30];
|
||||
u16 length;
|
||||
|
@ -14,12 +14,14 @@
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "window.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
|
||||
struct MirageTowerPulseBlend {
|
||||
struct MirageTowerPulseBlend
|
||||
{
|
||||
u8 taskId;
|
||||
struct PulseBlend pulseBlend;
|
||||
};
|
||||
@ -37,59 +39,51 @@ struct BgRegOffsets
|
||||
u16 bgVOFS;
|
||||
};
|
||||
|
||||
struct Struct203CF10
|
||||
struct FallAnim_Tower
|
||||
{
|
||||
u8 *buffer;
|
||||
u8 currIndex;
|
||||
u8 *disintegrateRand;
|
||||
u8 disintegrateIdx;
|
||||
};
|
||||
|
||||
struct DynamicSpriteFrameImage
|
||||
{
|
||||
u8 *data;
|
||||
u16 size;
|
||||
};
|
||||
|
||||
struct Struct203CF0C
|
||||
struct FallAnim_Fossil
|
||||
{
|
||||
u8 *frameImageTiles;
|
||||
struct DynamicSpriteFrameImage *frameImage;
|
||||
struct SpriteFrameImage *frameImage;
|
||||
u8 spriteId;
|
||||
u16 *unkC;
|
||||
u16 unk10;
|
||||
u16 *disintegrateRand;
|
||||
u16 disintegrateIdx;
|
||||
};
|
||||
|
||||
#define TAG_CEILING_CRUMBLE 4000
|
||||
|
||||
#define MIRAGE_TOWER_GFX_LENGTH (sizeof(sBlankTile_Gfx) + sizeof(sMirageTower_Gfx))
|
||||
#define ROOT_FOSSIL_GFX_LENGTH sizeof(sRootFossil_Gfx)
|
||||
#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
|
||||
#define FOSSIL_DISINTEGRATE_LENGTH 0x100
|
||||
|
||||
// extern data
|
||||
extern const struct SpriteSheet gMirageTowerCeilingCrumbleSpriteSheets[];
|
||||
extern const s16 sCeilingCrumblePositions[][3];
|
||||
static const struct SpriteSheet sCeilingCrumbleSpriteSheets[];
|
||||
static const s16 sCeilingCrumblePositions[][3];
|
||||
|
||||
// static functions
|
||||
static void PlayerDescendMirageTower(u8 taskId);
|
||||
static void DoScreenShake(u8 taskId);
|
||||
static void PlayerDescendMirageTower(u8);
|
||||
static void DoScreenShake(u8);
|
||||
static void IncrementCeilingCrumbleFinishedCount(void);
|
||||
static void WaitCeilingCrumble(u8 taskId);
|
||||
static void FinishCeilingCrumbleTask(u8 taskId);
|
||||
static void WaitCeilingCrumble(u8);
|
||||
static void FinishCeilingCrumbleTask(u8);
|
||||
static void CreateCeilingCrumbleSprites(void);
|
||||
static void MoveCeilingCrumbleSprite(struct Sprite* sprite);
|
||||
static void DoMirageTowerDisintegration(u8 taskId);
|
||||
static void InitMirageTowerShake(u8 taskId);
|
||||
static void DoFossilFallAndSink(u8 taskId);
|
||||
static void sub_81BF248(struct Sprite *);
|
||||
static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
|
||||
static void SpriteCB_CeilingCrumble(struct Sprite*);
|
||||
static void DoMirageTowerDisintegration(u8);
|
||||
static void InitMirageTowerShake(u8);
|
||||
static void Task_FossilFallAndSink(u8);
|
||||
static void SpriteCB_FallingFossil(struct Sprite *);
|
||||
static void UpdateDisintegrationEffect(u8*, u16, u8, u8, u8);
|
||||
|
||||
// rodata
|
||||
static const u8 sBlankTile_Gfx[32] = {0};
|
||||
static const u8 sMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
|
||||
static const u16 sMirageTowerTilemap[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
|
||||
static const u16 sRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
|
||||
static const u8 sRootFossil_Gfx[] = INCBIN_U8("graphics/misc/fossil.4bpp");
|
||||
static const u16 sFossil_Pal[] = INCBIN_U16("graphics/object_events/pics/misc/fossil.gbapal"); // Unused
|
||||
static const u8 sFossil_Gfx[] = INCBIN_U8("graphics/object_events/pics/misc/fossil.4bpp"); // Duplicate of gObjectEventPic_Fossil
|
||||
static const u8 sMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower_crumbles.4bpp");
|
||||
static const u16 sMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
|
||||
|
||||
const s16 sCeilingCrumblePositions[][3] =
|
||||
static const s16 sCeilingCrumblePositions[][3] =
|
||||
{
|
||||
{ 0, 10, 65},
|
||||
{ 17, 3, 50},
|
||||
@ -101,10 +95,10 @@ const s16 sCeilingCrumblePositions[][3] =
|
||||
{-24, -4, 65},
|
||||
};
|
||||
|
||||
const struct SpriteSheet gMirageTowerCeilingCrumbleSpriteSheets[] =
|
||||
static const struct SpriteSheet sCeilingCrumbleSpriteSheets[] =
|
||||
{
|
||||
{sMirageTowerCrumbles_Gfx, 0x0080, 4000},
|
||||
{NULL}
|
||||
{sMirageTowerCrumbles_Gfx, 0x80, TAG_CEILING_CRUMBLE},
|
||||
{}
|
||||
};
|
||||
|
||||
static const struct MetatileCoords sInvisibleMirageTowerMetatiles[] =
|
||||
@ -129,13 +123,13 @@ static const struct MetatileCoords sInvisibleMirageTowerMetatiles[] =
|
||||
{20, 58, METATILE_General_SandPit_Center},
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8617DEC[] =
|
||||
static const union AnimCmd sAnim_FallingFossil[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const struct OamData gOamData_8617DF4 =
|
||||
static const struct OamData sOamData_FallingFossil =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
@ -152,14 +146,20 @@ static const struct OamData gOamData_8617DF4 =
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
|
||||
static const union AnimCmd *const sAnims_FallingFossil[] =
|
||||
{
|
||||
gSpriteAnim_8617DEC,
|
||||
sAnim_FallingFossil,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_08617E00 =
|
||||
static const struct SpriteTemplate sSpriteTemplate_FallingFossil =
|
||||
{
|
||||
0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 0xFFFF,
|
||||
.oam = &sOamData_FallingFossil,
|
||||
.anims = sAnims_FallingFossil,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy
|
||||
};
|
||||
|
||||
const struct PulseBlendSettings gMirageTowerPulseBlendSettings = {
|
||||
@ -174,18 +174,18 @@ const struct PulseBlendSettings gMirageTowerPulseBlendSettings = {
|
||||
.unk7_7 = 1,
|
||||
};
|
||||
|
||||
static const union AnimCmd sCeilingCrumble2AnimCmd[] =
|
||||
static const union AnimCmd sAnim_CeilingCrumbleSmall[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 12),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sCeilingCrumble2AnimCmds[] =
|
||||
static const union AnimCmd *const sAnims_CeilingCrumbleSmall[] =
|
||||
{
|
||||
sCeilingCrumble2AnimCmd,
|
||||
sAnim_CeilingCrumbleSmall,
|
||||
};
|
||||
|
||||
static const struct OamData sCeilingCrumble2OamData =
|
||||
static const struct OamData sOamData_CeilingCrumbleSmall =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
@ -202,28 +202,28 @@ static const struct OamData sCeilingCrumble2OamData =
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sCeilingCrumbleSpriteTemplate2 = {
|
||||
.tileTag = 4000,
|
||||
static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleSmall = {
|
||||
.tileTag = TAG_CEILING_CRUMBLE,
|
||||
.paletteTag = 0xFFFF,
|
||||
.oam = &sCeilingCrumble2OamData,
|
||||
.anims = sCeilingCrumble2AnimCmds,
|
||||
.oam = &sOamData_CeilingCrumbleSmall,
|
||||
.anims = sAnims_CeilingCrumbleSmall,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = MoveCeilingCrumbleSprite
|
||||
.callback = SpriteCB_CeilingCrumble
|
||||
};
|
||||
|
||||
static const union AnimCmd sCeilingCrumble1AnimCmd[] =
|
||||
static const union AnimCmd sAnim_CeilingCrumbleLarge[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 12),
|
||||
ANIMCMD_JUMP(0),
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sCeilingCrumble1AnimCmds[] =
|
||||
static const union AnimCmd *const sAnims_CeilingCrumbleLarge[] =
|
||||
{
|
||||
sCeilingCrumble1AnimCmd,
|
||||
sAnim_CeilingCrumbleLarge,
|
||||
};
|
||||
|
||||
static const struct OamData sCeilingCrumble1OamData =
|
||||
static const struct OamData sOamData_CeilingCrumbleLarge =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
@ -240,24 +240,26 @@ static const struct OamData sCeilingCrumble1OamData =
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sCeilingCrumbleSpriteTemplate1 = {
|
||||
.tileTag = 4000,
|
||||
static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleLarge = {
|
||||
.tileTag = TAG_CEILING_CRUMBLE,
|
||||
.paletteTag = 0xFFFF,
|
||||
.oam = &sCeilingCrumble1OamData,
|
||||
.anims = sCeilingCrumble1AnimCmds,
|
||||
.oam = &sOamData_CeilingCrumbleLarge,
|
||||
.anims = sAnims_CeilingCrumbleLarge,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = MoveCeilingCrumbleSprite
|
||||
.callback = SpriteCB_CeilingCrumble
|
||||
};
|
||||
|
||||
EWRAM_DATA static u8* sMirageTowerGfxBuffer = NULL;
|
||||
EWRAM_DATA static u8* sMirageTowerTilemapBuffer = NULL;
|
||||
EWRAM_DATA static struct Struct203CF0C *sUnknown_0203CF0C = NULL;
|
||||
EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
|
||||
EWRAM_DATA static struct FallAnim_Fossil *sFallingFossil = NULL;
|
||||
EWRAM_DATA static struct FallAnim_Tower *sFallingTower = NULL;
|
||||
EWRAM_DATA static struct BgRegOffsets *sBgShakeOffsets = NULL;
|
||||
EWRAM_DATA struct MirageTowerPulseBlend *sMirageTowerPulseBlend = NULL;
|
||||
EWRAM_DATA static struct MirageTowerPulseBlend *sMirageTowerPulseBlend = NULL;
|
||||
|
||||
static u16 gUnknown_030012A8[8];
|
||||
// Holds data about the disintegration effect for Mirage Tower / the unchosen fossil.
|
||||
// Never read, presumably for debugging
|
||||
static u16 sDebug_DisintegrationData[8];
|
||||
|
||||
bool8 IsMirageTowerVisible(void)
|
||||
{
|
||||
@ -319,6 +321,7 @@ void SetMirageTowerVisibility(void)
|
||||
|
||||
if (VarGet(VAR_MIRAGE_TOWER_STATE))
|
||||
{
|
||||
// Mirage Tower event has already been completed, hide it
|
||||
FlagClear(FLAG_MIRAGE_TOWER_VISIBLE);
|
||||
return;
|
||||
}
|
||||
@ -343,32 +346,40 @@ void StartPlayerDescendMirageTower(void)
|
||||
CreateTask(PlayerDescendMirageTower, 8);
|
||||
}
|
||||
|
||||
// As the tower disintegrates, a duplicate object event of the player
|
||||
// is created at the top of the tower and moved down to show the player falling
|
||||
static void PlayerDescendMirageTower(u8 taskId)
|
||||
{
|
||||
u8 objectEventId;
|
||||
struct ObjectEvent *fakePlayerObjectEvent;
|
||||
struct ObjectEvent *playerObjectEvent;
|
||||
struct ObjectEvent *fallingPlayer;
|
||||
struct ObjectEvent *player;
|
||||
|
||||
TryGetObjectEventIdByLocalIdAndMap(45, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
fakePlayerObjectEvent = &gObjectEvents[objectEventId];
|
||||
gSprites[fakePlayerObjectEvent->spriteId].y2 += 4;
|
||||
playerObjectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
if ((gSprites[fakePlayerObjectEvent->spriteId].y + gSprites[fakePlayerObjectEvent->spriteId].y2) >=
|
||||
(gSprites[playerObjectEvent->spriteId].y + gSprites[playerObjectEvent->spriteId].y2))
|
||||
TryGetObjectEventIdByLocalIdAndMap(LOCALID_ROUTE111_PLAYER_FALLING, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
|
||||
fallingPlayer = &gObjectEvents[objectEventId];
|
||||
gSprites[fallingPlayer->spriteId].y2 += 4;
|
||||
player = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
if ((gSprites[fallingPlayer->spriteId].y + gSprites[fallingPlayer->spriteId].y2) >=
|
||||
(gSprites[player->spriteId].y + gSprites[player->spriteId].y2))
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
}
|
||||
|
||||
#define tXShakeOffset data[0]
|
||||
#define tTimer data[1]
|
||||
#define tNumShakes data[2]
|
||||
#define tShakeDelay data[3]
|
||||
#define tYShakeOffset data[4]
|
||||
|
||||
static void StartScreenShake(u8 yShakeOffset, u8 xShakeOffset, u8 numShakes, u8 shakeDelay)
|
||||
{
|
||||
u8 taskId = CreateTask(DoScreenShake, 9);
|
||||
gTasks[taskId].data[0] = xShakeOffset;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = numShakes;
|
||||
gTasks[taskId].data[3] = shakeDelay;
|
||||
gTasks[taskId].data[4] = yShakeOffset;
|
||||
gTasks[taskId].tXShakeOffset = xShakeOffset;
|
||||
gTasks[taskId].tTimer = 0;
|
||||
gTasks[taskId].tNumShakes = numShakes;
|
||||
gTasks[taskId].tShakeDelay = shakeDelay;
|
||||
gTasks[taskId].tYShakeOffset = yShakeOffset;
|
||||
SetCameraPanningCallback(NULL);
|
||||
PlaySE(SE_M_STRENGTH);
|
||||
}
|
||||
@ -378,15 +389,15 @@ static void DoScreenShake(u8 taskId)
|
||||
s16 *data;
|
||||
|
||||
data = gTasks[taskId].data;
|
||||
data[1]++;
|
||||
if (data[1] % data[3] == 0)
|
||||
tTimer++;
|
||||
if (tTimer % tShakeDelay == 0)
|
||||
{
|
||||
data[1] = 0;
|
||||
data[2]--;
|
||||
data[0] = -data[0];
|
||||
data[4] = -data[4];
|
||||
SetCameraPanning(data[0], data[4]);
|
||||
if (data[2] == 0)
|
||||
tTimer = 0;
|
||||
tNumShakes--;
|
||||
tXShakeOffset = -tXShakeOffset;
|
||||
tYShakeOffset = -tYShakeOffset;
|
||||
SetCameraPanning(tXShakeOffset, tYShakeOffset);
|
||||
if (tNumShakes == 0)
|
||||
{
|
||||
IncrementCeilingCrumbleFinishedCount();
|
||||
DestroyTask(taskId);
|
||||
@ -395,6 +406,12 @@ static void DoScreenShake(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#undef tXShakeOffset
|
||||
#undef tTimer
|
||||
#undef tNumShakes
|
||||
#undef tShakeDelay
|
||||
#undef tYShakeOffset
|
||||
|
||||
static void IncrementCeilingCrumbleFinishedCount(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(WaitCeilingCrumble);
|
||||
@ -404,7 +421,7 @@ static void IncrementCeilingCrumbleFinishedCount(void)
|
||||
|
||||
void DoMirageTowerCeilingCrumble(void)
|
||||
{
|
||||
LoadSpriteSheets(gMirageTowerCeilingCrumbleSpriteSheets);
|
||||
LoadSpriteSheets(sCeilingCrumbleSpriteSheets);
|
||||
CreateCeilingCrumbleSprites();
|
||||
CreateTask(WaitCeilingCrumble, 8);
|
||||
StartScreenShake(2, 1, 16, 3);
|
||||
@ -421,7 +438,7 @@ static void WaitCeilingCrumble(u8 taskId)
|
||||
|
||||
static void FinishCeilingCrumbleTask(u8 taskId)
|
||||
{
|
||||
FreeSpriteTilesByTag(4000);
|
||||
FreeSpriteTilesByTag(TAG_CEILING_CRUMBLE);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
@ -433,21 +450,21 @@ static void CreateCeilingCrumbleSprites(void)
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sCeilingCrumbleSpriteTemplate1, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8);
|
||||
spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleLarge, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8);
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
gSprites[spriteId].oam.paletteNum = 0;
|
||||
gSprites[spriteId].data[0] = i;
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
spriteId = CreateSprite(&sCeilingCrumbleSpriteTemplate2, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8);
|
||||
spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleSmall, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8);
|
||||
gSprites[spriteId].oam.priority = 0;
|
||||
gSprites[spriteId].oam.paletteNum = 0;
|
||||
gSprites[spriteId].data[0] = i;
|
||||
}
|
||||
}
|
||||
|
||||
static void MoveCeilingCrumbleSprite(struct Sprite* sprite)
|
||||
static void SpriteCB_CeilingCrumble(struct Sprite* sprite)
|
||||
{
|
||||
sprite->data[1] += 2;
|
||||
sprite->y2 = sprite->data[1] / 2;
|
||||
@ -478,7 +495,7 @@ void StartMirageTowerShake(void)
|
||||
|
||||
void StartMirageTowerFossilFallAndSink(void)
|
||||
{
|
||||
CreateTask(DoFossilFallAndSink, 9);
|
||||
CreateTask(Task_FossilFallAndSink, 9);
|
||||
}
|
||||
|
||||
static void SetBgShakeOffsets(void)
|
||||
@ -501,42 +518,44 @@ static void UpdateBgShake(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#define tState data[0]
|
||||
|
||||
static void InitMirageTowerShake(u8 taskId)
|
||||
{
|
||||
u8 zero;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 0:
|
||||
FreeAllWindowBuffers();
|
||||
SetBgAttribute(0, BG_ATTR_PRIORITY, 2);
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
case 1:
|
||||
sMirageTowerGfxBuffer = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
|
||||
sMirageTowerTilemapBuffer = (u8 *)AllocZeroed(BG_SCREEN_SIZE);
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
case 2:
|
||||
CpuSet(sBlankTile_Gfx, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH / 2);
|
||||
LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
case 3:
|
||||
SetBgTilemapBuffer(0, sMirageTowerTilemapBuffer);
|
||||
CopyToBgTilemapBufferRect_ChangePalette(0, &sMirageTowerTilemap, 12, 29, 6, 12, 17);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
case 4:
|
||||
ShowBg(0);
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
case 5:
|
||||
SetInvisibleMirageTowerMetatiles();
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
break;
|
||||
case 6:
|
||||
sBgShakeOffsets = Alloc(sizeof(*sBgShakeOffsets));
|
||||
@ -558,27 +577,29 @@ static void DoMirageTowerDisintegration(u8 taskId)
|
||||
u16 i;
|
||||
u8 index;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 1:
|
||||
sUnknown_0203CF10 = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
|
||||
sFallingTower = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct FallAnim_Tower));
|
||||
break;
|
||||
case 3:
|
||||
if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
if (gTasks[taskId].data[1] > 1)
|
||||
{
|
||||
// Initialize disintegration pattern
|
||||
index = gTasks[taskId].data[3];
|
||||
sUnknown_0203CF10[index].buffer = Alloc(INNER_BUFFER_LENGTH);
|
||||
sFallingTower[index].disintegrateRand = Alloc(INNER_BUFFER_LENGTH);
|
||||
for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
sUnknown_0203CF10[index].buffer[i] = i;
|
||||
sFallingTower[index].disintegrateRand[i] = i;
|
||||
|
||||
// Randomize disintegration pattern
|
||||
for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
{
|
||||
u16 rand1, rand2, temp;
|
||||
|
||||
rand1 = Random() % 0x30;
|
||||
rand2 = Random() % 0x30;
|
||||
SWAP(sUnknown_0203CF10[index].buffer[rand2], sUnknown_0203CF10[index].buffer[rand1], temp);
|
||||
rand1 = Random() % INNER_BUFFER_LENGTH;
|
||||
rand2 = Random() % INNER_BUFFER_LENGTH;
|
||||
SWAP(sFallingTower[index].disintegrateRand[rand2], sFallingTower[index].disintegrateRand[rand1], temp);
|
||||
}
|
||||
if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
gTasks[taskId].data[3]++;
|
||||
@ -591,20 +612,20 @@ static void DoMirageTowerDisintegration(u8 taskId)
|
||||
{
|
||||
for (j = 0; j < 1; j++)
|
||||
{
|
||||
sub_81BF2B8(sMirageTowerGfxBuffer,
|
||||
((((OUTER_BUFFER_LENGTH - 1) - i) * INNER_BUFFER_LENGTH) + sUnknown_0203CF10[i].buffer[(sUnknown_0203CF10[i].currIndex)++]),
|
||||
UpdateDisintegrationEffect(sMirageTowerGfxBuffer,
|
||||
(OUTER_BUFFER_LENGTH - 1 - i) * INNER_BUFFER_LENGTH + sFallingTower[i].disintegrateRand[sFallingTower[i].disintegrateIdx++],
|
||||
0, INNER_BUFFER_LENGTH, 1);
|
||||
}
|
||||
if (sUnknown_0203CF10[i].currIndex > (INNER_BUFFER_LENGTH - 1))
|
||||
if (sFallingTower[i].disintegrateIdx > (INNER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF10[i].buffer);
|
||||
FREE_AND_SET_NULL(sFallingTower[i].disintegrateRand);
|
||||
gTasks[taskId].data[2]++;
|
||||
if ((i % 2) == 1)
|
||||
sBgShakeOffsets->bgVOFS--;
|
||||
}
|
||||
}
|
||||
LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
if (sUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].currIndex > (INNER_BUFFER_LENGTH - 1))
|
||||
if (sFallingTower[OUTER_BUFFER_LENGTH - 1].disintegrateIdx > INNER_BUFFER_LENGTH - 1)
|
||||
break;
|
||||
return;
|
||||
case 4:
|
||||
@ -617,7 +638,7 @@ static void DoMirageTowerDisintegration(u8 taskId)
|
||||
break;
|
||||
case 5:
|
||||
FREE_AND_SET_NULL(sBgShakeOffsets);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF10);
|
||||
FREE_AND_SET_NULL(sFallingTower);
|
||||
FREE_AND_SET_NULL(sMirageTowerGfxBuffer);
|
||||
FREE_AND_SET_NULL(sMirageTowerTilemapBuffer);
|
||||
break;
|
||||
@ -635,127 +656,128 @@ static void DoMirageTowerDisintegration(u8 taskId)
|
||||
EnableBothScriptContexts();
|
||||
break;
|
||||
}
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
|
||||
static void DoFossilFallAndSink(u8 taskId)
|
||||
static void Task_FossilFallAndSink(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
u8 *buffer;
|
||||
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
case 1:
|
||||
sUnknown_0203CF0C = AllocZeroed(sizeof(*sUnknown_0203CF0C));
|
||||
sUnknown_0203CF0C->frameImageTiles = AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
|
||||
sUnknown_0203CF0C->frameImage = AllocZeroed(sizeof(*sUnknown_0203CF0C->frameImage));
|
||||
sUnknown_0203CF0C->unkC = AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
|
||||
sUnknown_0203CF0C->unk10 = 0;
|
||||
sFallingFossil = AllocZeroed(sizeof(*sFallingFossil));
|
||||
sFallingFossil->frameImageTiles = AllocZeroed(sizeof(sFossil_Gfx));
|
||||
sFallingFossil->frameImage = AllocZeroed(sizeof(*sFallingFossil->frameImage));
|
||||
sFallingFossil->disintegrateRand = AllocZeroed(FOSSIL_DISINTEGRATE_LENGTH * sizeof(u16));
|
||||
sFallingFossil->disintegrateIdx = 0;
|
||||
break;
|
||||
case 2:
|
||||
buffer = sUnknown_0203CF0C->frameImageTiles;
|
||||
for (i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
|
||||
*buffer = sRootFossil_Gfx[i];
|
||||
buffer = sFallingFossil->frameImageTiles;
|
||||
for (i = 0; i < sizeof(sFossil_Gfx); i++, buffer++)
|
||||
*buffer = sFossil_Gfx[i];
|
||||
break;
|
||||
case 3:
|
||||
sUnknown_0203CF0C->frameImage->data = sUnknown_0203CF0C->frameImageTiles;
|
||||
sUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
|
||||
sFallingFossil->frameImage->data = sFallingFossil->frameImageTiles;
|
||||
sFallingFossil->frameImage->size = sizeof(sFossil_Gfx);
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
struct SpriteTemplate fossilTemplate;
|
||||
|
||||
fossilTemplate = gUnknown_08617E00;
|
||||
fossilTemplate.images = (struct SpriteFrameImage *)(sUnknown_0203CF0C->frameImage);
|
||||
sUnknown_0203CF0C->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
|
||||
gSprites[sUnknown_0203CF0C->spriteId].centerToCornerVecX = 0;
|
||||
gSprites[sUnknown_0203CF0C->spriteId].data[0] = gSprites[sUnknown_0203CF0C->spriteId].x;
|
||||
gSprites[sUnknown_0203CF0C->spriteId].data[1] = 1;
|
||||
struct SpriteTemplate fossilTemplate = sSpriteTemplate_FallingFossil;
|
||||
fossilTemplate.images = sFallingFossil->frameImage;
|
||||
sFallingFossil->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
|
||||
gSprites[sFallingFossil->spriteId].centerToCornerVecX = 0;
|
||||
gSprites[sFallingFossil->spriteId].data[0] = gSprites[sFallingFossil->spriteId].x;
|
||||
gSprites[sFallingFossil->spriteId].data[1] = 1;
|
||||
}
|
||||
case 5:
|
||||
for (i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
|
||||
sUnknown_0203CF0C->unkC[i] = i;
|
||||
// Initialize disintegration pattern
|
||||
for (i = 0; i < FOSSIL_DISINTEGRATE_LENGTH; i++)
|
||||
sFallingFossil->disintegrateRand[i] = i;
|
||||
break;
|
||||
case 6:
|
||||
for (i = 0; i < (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)); i++)
|
||||
// Randomize disintegration pattern
|
||||
for (i = 0; i < FOSSIL_DISINTEGRATE_LENGTH * sizeof(u16); i++)
|
||||
{
|
||||
u16 rand1, rand2, temp;
|
||||
|
||||
rand1 = Random() % 0x100;
|
||||
rand2 = Random() % 0x100;
|
||||
SWAP(sUnknown_0203CF0C->unkC[rand2], sUnknown_0203CF0C->unkC[rand1], temp);
|
||||
rand1 = Random() % FOSSIL_DISINTEGRATE_LENGTH;
|
||||
rand2 = Random() % FOSSIL_DISINTEGRATE_LENGTH;
|
||||
SWAP(sFallingFossil->disintegrateRand[rand2], sFallingFossil->disintegrateRand[rand1], temp);
|
||||
}
|
||||
gSprites[sUnknown_0203CF0C->spriteId].callback = sub_81BF248;
|
||||
gSprites[sFallingFossil->spriteId].callback = SpriteCB_FallingFossil;
|
||||
break;
|
||||
case 7:
|
||||
if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
|
||||
// Wait for fossil to finish falling / disintegrating
|
||||
if (gSprites[sFallingFossil->spriteId].callback != SpriteCallbackDummy)
|
||||
return;
|
||||
DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);;
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImage);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImageTiles);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C);
|
||||
DestroySprite(&gSprites[sFallingFossil->spriteId]);
|
||||
FREE_AND_SET_NULL(sFallingFossil->disintegrateRand);;
|
||||
FREE_AND_SET_NULL(sFallingFossil->frameImage);
|
||||
FREE_AND_SET_NULL(sFallingFossil->frameImageTiles);
|
||||
FREE_AND_SET_NULL(sFallingFossil);
|
||||
break;
|
||||
case 8:
|
||||
EnableBothScriptContexts();
|
||||
break;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
|
||||
static void sub_81BF248(struct Sprite *sprite)
|
||||
static void SpriteCB_FallingFossil(struct Sprite *sprite)
|
||||
{
|
||||
if (sUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
|
||||
if (sFallingFossil->disintegrateIdx >= FOSSIL_DISINTEGRATE_LENGTH)
|
||||
{
|
||||
// End animation
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
else if (sprite->y >= 96)
|
||||
{
|
||||
// Fossil has reached the ground, update disintegration animation
|
||||
u8 i;
|
||||
for (i = 0; i < 2; i++)
|
||||
sub_81BF2B8(sUnknown_0203CF0C->frameImageTiles, sUnknown_0203CF0C->unkC[sUnknown_0203CF0C->unk10++], 0, 16, 0);
|
||||
UpdateDisintegrationEffect(sFallingFossil->frameImageTiles, sFallingFossil->disintegrateRand[sFallingFossil->disintegrateIdx++], 0, 16, 0);
|
||||
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fossil is still falling
|
||||
sprite->y++;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
|
||||
static void UpdateDisintegrationEffect(u8* tiles, u16 randId, u8 c, u8 size, u8 offset)
|
||||
{
|
||||
u8 r5, r4, r0, r2;
|
||||
u16 var, var2;
|
||||
u8 r2_1, r4_1;
|
||||
u8 b2, c2;
|
||||
u8 heightTiles, height, widthTiles, width;
|
||||
u16 var, baseOffset;
|
||||
u8 col, row;
|
||||
u8 flag, tileMask;
|
||||
|
||||
r4 = b / d;
|
||||
gUnknown_030012A8[0] = r4;
|
||||
height = randId / size;
|
||||
sDebug_DisintegrationData[0] = height;
|
||||
|
||||
r2 = b % d;
|
||||
gUnknown_030012A8[1] = r2;
|
||||
width = randId % size;
|
||||
sDebug_DisintegrationData[1] = width;
|
||||
|
||||
r4_1 = r4 & 7;
|
||||
r2_1 = r2 & 7;
|
||||
gUnknown_030012A8[2] = r4 & 7; //should be using r4_1, but that doesn't match
|
||||
gUnknown_030012A8[3] = r2 & 7; //"
|
||||
row = height & 7;
|
||||
col = width & 7;
|
||||
sDebug_DisintegrationData[2] = height & 7;
|
||||
sDebug_DisintegrationData[3] = width & 7;
|
||||
|
||||
r0 = r2 / 8;
|
||||
r5 = r4 / 8;
|
||||
|
||||
gUnknown_030012A8[4] = r2 / 8; //should be using r0, but that doesn't match
|
||||
gUnknown_030012A8[5] = r4 / 8; //should be using r5, but that doesn't match
|
||||
widthTiles = width / 8;
|
||||
heightTiles = height / 8;
|
||||
sDebug_DisintegrationData[4] = width / 8;
|
||||
sDebug_DisintegrationData[5] = height / 8;
|
||||
|
||||
var = (d / 8) * (r5 * 64) + (r0 * 64);
|
||||
gUnknown_030012A8[6] = var;
|
||||
var = (size / 8) * (heightTiles * 64) + (widthTiles * 64);
|
||||
sDebug_DisintegrationData[6] = var;
|
||||
|
||||
var2 = var + ((r4_1 * 8) + r2_1);
|
||||
var2 /= 2;
|
||||
gUnknown_030012A8[7] = var + ((r4_1 * 8) + r2_1); //should be using var2 with var2 being divided afterwards, but that doesn't match
|
||||
baseOffset = var + ((row * 8) + col);
|
||||
baseOffset /= 2;
|
||||
sDebug_DisintegrationData[7] = var + ((row * 8) + col);
|
||||
|
||||
b2 = ((b % 2) ^ 1);
|
||||
c2 = (c << (b2 << 2)) | 15 << (((b2 ^ 1) << 2));
|
||||
a[var2 + (e * 32)] &= c2;
|
||||
flag = ((randId % 2) ^ 1);
|
||||
tileMask = (c << (flag << 2)) | 15 << (((flag ^ 1) << 2));
|
||||
tiles[baseOffset + (offset * 32)] &= tileMask;
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ static void sub_816C060(u16 itemId);
|
||||
static void sub_816BEF0(s32 id);
|
||||
static void sub_816B4DC(u8 taskId);
|
||||
static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu * thisMenu);
|
||||
static void fish4_goto_x5_or_x6(u8 windowId, s32 id, u8 yOffset);
|
||||
static void fish4_goto_x5_or_x6(u8 windowId, u32 id, u8 yOffset);
|
||||
|
||||
// EWRAM
|
||||
static EWRAM_DATA const u8 *gPcItemMenuOptionOrder = NULL;
|
||||
@ -943,7 +943,7 @@ static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu *thisMenu)
|
||||
if (gUnknown_0203BCC4->unk666 == 0xFF)
|
||||
{
|
||||
sub_816C0C8();
|
||||
if (id != -2)
|
||||
if (id != LIST_CANCEL)
|
||||
sub_816C060(gSaveBlock1Ptr->pcItems[id].itemId);
|
||||
else
|
||||
sub_816C060(ITEMPC_GO_BACK_TO_PREV);
|
||||
@ -951,9 +951,9 @@ static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu *thisMenu)
|
||||
}
|
||||
}
|
||||
|
||||
static void fish4_goto_x5_or_x6(u8 windowId, s32 id, u8 yOffset)
|
||||
static void fish4_goto_x5_or_x6(u8 windowId, u32 id, u8 yOffset)
|
||||
{
|
||||
if (id != -2)
|
||||
if (id != LIST_CANCEL)
|
||||
{
|
||||
if (gUnknown_0203BCC4->unk666 != 0xFF)
|
||||
{
|
||||
|
@ -264,7 +264,7 @@ static const union AnimCmd *const sSpriteAnimTable_PokeblockCase[] =
|
||||
sSpriteAnim_PokeblockCase
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sSpriteAffineAnim_85B26C8[] =
|
||||
static const union AffineAnimCmd sAffineAnim_PokeblockCaseShake[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0, 0, -2, 2),
|
||||
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
|
||||
@ -273,9 +273,9 @@ static const union AffineAnimCmd sSpriteAffineAnim_85B26C8[] =
|
||||
AFFINEANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd *const sSpriteAffineAnimTable_85B26F0[] =
|
||||
static const union AffineAnimCmd *const sAffineAnims_PokeblockCaseShake[] =
|
||||
{
|
||||
sSpriteAffineAnim_85B26C8
|
||||
sAffineAnim_PokeblockCaseShake
|
||||
};
|
||||
|
||||
const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet =
|
||||
@ -955,7 +955,7 @@ static void SpriteCB_ShakePokeblockCase(struct Sprite *sprite)
|
||||
{
|
||||
case 0:
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
sprite->affineAnims = sSpriteAffineAnimTable_85B26F0;
|
||||
sprite->affineAnims = sAffineAnims_PokeblockCaseShake;
|
||||
InitSpriteAffineAnim(sprite);
|
||||
sprite->sState = 1;
|
||||
sprite->sTimer = 0;
|
||||
|
@ -327,7 +327,9 @@ static u32 LoopedTask_OpenRegionMap(s32 taskState)
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8123030(RGB_BLACK, 6);
|
||||
// Dim the region map when zoom is disabled
|
||||
// (when the player is off the map)
|
||||
BlendRegionMap(RGB_BLACK, 6);
|
||||
}
|
||||
return LT_INC_AND_PAUSE;
|
||||
case 2:
|
||||
|
@ -71,7 +71,7 @@ static EWRAM_DATA struct {
|
||||
bool8 choseFlyLocation;
|
||||
} *sFlyMap = NULL;
|
||||
|
||||
static bool32 gUnknown_03001180;
|
||||
static bool32 sDrawFlyDestTextWindow;
|
||||
|
||||
// Static ROM declarations
|
||||
|
||||
@ -621,7 +621,7 @@ bool8 LoadRegionMapGfx(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8123030(u16 color, u32 coeff)
|
||||
void BlendRegionMap(u16 color, u32 coeff)
|
||||
{
|
||||
BlendPalettes(0x380, coeff, color);
|
||||
CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60);
|
||||
@ -1696,7 +1696,7 @@ void CB2_OpenFlyMap(void)
|
||||
CreateRegionMapPlayerIcon(1, 1);
|
||||
sFlyMap->mapSecId = sFlyMap->regionMap.mapSecId;
|
||||
StringFill(sFlyMap->nameBuffer, CHAR_SPACE, MAP_NAME_LENGTH);
|
||||
gUnknown_03001180 = TRUE;
|
||||
sDrawFlyDestTextWindow = TRUE;
|
||||
DrawFlyDestTextWindow();
|
||||
gMain.state++;
|
||||
break;
|
||||
@ -1782,30 +1782,32 @@ static void DrawFlyDestTextWindow(void)
|
||||
name = sMultiNameFlyDestinations[i].name[sFlyMap->regionMap.posWithinMapSec];
|
||||
AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 96), 17, 0, NULL);
|
||||
ScheduleBgCopyTilemapToVram(0);
|
||||
gUnknown_03001180 = TRUE;
|
||||
sDrawFlyDestTextWindow = TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!namePrinted)
|
||||
{
|
||||
if (gUnknown_03001180 == TRUE)
|
||||
if (sDrawFlyDestTextWindow == TRUE)
|
||||
{
|
||||
ClearStdWindowAndFrameToTransparent(1, FALSE);
|
||||
DrawStdFrameWithCustomTileAndPalette(0, FALSE, 101, 13);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Window is already drawn, just empty it
|
||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||
}
|
||||
AddTextPrinterParameterized(0, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
|
||||
ScheduleBgCopyTilemapToVram(0);
|
||||
gUnknown_03001180 = FALSE;
|
||||
sDrawFlyDestTextWindow = FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gUnknown_03001180 == TRUE)
|
||||
// Selection is on MAPSECTYPE_NONE, draw empty fly destination text window
|
||||
if (sDrawFlyDestTextWindow == TRUE)
|
||||
{
|
||||
ClearStdWindowAndFrameToTransparent(1, FALSE);
|
||||
DrawStdFrameWithCustomTileAndPalette(0, FALSE, 101, 13);
|
||||
@ -1813,7 +1815,7 @@ static void DrawFlyDestTextWindow(void)
|
||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||
CopyWindowToVram(0, 2);
|
||||
ScheduleBgCopyTilemapToVram(0);
|
||||
gUnknown_03001180 = FALSE;
|
||||
sDrawFlyDestTextWindow = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
10
src/scrcmd.c
10
src/scrcmd.c
@ -1203,6 +1203,8 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// lockall freezes all object events except the player immediately.
|
||||
// The player is frozen after waiting for their current movement to finish.
|
||||
bool8 ScrCmd_lockall(struct ScriptContext *ctx)
|
||||
{
|
||||
if (IsUpdateLinkStateCBActive())
|
||||
@ -1211,12 +1213,14 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
|
||||
}
|
||||
else
|
||||
{
|
||||
ScriptFreezeObjectEvents();
|
||||
FreezeObjects_WaitForPlayer();
|
||||
SetupNativeScript(ctx, IsFreezePlayerFinished);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
// lock freezes all object events except the player and the selected object immediately.
|
||||
// The player and selected object are frozen after waiting for their current movement to finish.
|
||||
bool8 ScrCmd_lock(struct ScriptContext *ctx)
|
||||
{
|
||||
if (IsUpdateLinkStateCBActive())
|
||||
@ -1227,12 +1231,12 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
|
||||
{
|
||||
if (gObjectEvents[gSelectedObjectEvent].active)
|
||||
{
|
||||
LockSelectedObjectEvent();
|
||||
FreezeObjects_WaitForPlayerAndSelected();
|
||||
SetupNativeScript(ctx, IsFreezeSelectedObjectAndPlayerFinished);
|
||||
}
|
||||
else
|
||||
{
|
||||
ScriptFreezeObjectEvents();
|
||||
FreezeObjects_WaitForPlayer();
|
||||
SetupNativeScript(ctx, IsFreezePlayerFinished);
|
||||
}
|
||||
return TRUE;
|
||||
|
10
src/shop.c
10
src/shop.c
@ -91,7 +91,7 @@ static void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId);
|
||||
static void Task_HandleShopMenuBuy(u8 taskId);
|
||||
static void Task_HandleShopMenuSell(u8 taskId);
|
||||
static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list);
|
||||
static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y);
|
||||
static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y);
|
||||
|
||||
static const struct YesNoFuncTable sShopPurchaseYesNoFuncs =
|
||||
{
|
||||
@ -552,17 +552,17 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, s
|
||||
BuyMenuPrint(2, description, 3, 1, 0, 0);
|
||||
}
|
||||
|
||||
static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
|
||||
static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y)
|
||||
{
|
||||
u8 x;
|
||||
|
||||
if (item != LIST_CANCEL)
|
||||
if (itemId != LIST_CANCEL)
|
||||
{
|
||||
if (sMartInfo.martType == MART_TYPE_NORMAL)
|
||||
{
|
||||
ConvertIntToDecimalStringN(
|
||||
gStringVar1,
|
||||
ItemId_GetPrice(item) >> GetPriceReduction(POKENEWS_SLATEPORT),
|
||||
ItemId_GetPrice(itemId) >> GetPriceReduction(POKENEWS_SLATEPORT),
|
||||
STR_CONV_MODE_LEFT_ALIGN,
|
||||
5);
|
||||
}
|
||||
@ -570,7 +570,7 @@ static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
|
||||
{
|
||||
ConvertIntToDecimalStringN(
|
||||
gStringVar1,
|
||||
gDecorations[item].price,
|
||||
gDecorations[itemId].price,
|
||||
STR_CONV_MODE_LEFT_ALIGN,
|
||||
5);
|
||||
}
|
||||
|
102
src/tv.c
102
src/tv.c
@ -36,6 +36,7 @@
|
||||
#include "data.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/contest.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/layouts.h"
|
||||
#include "constants/lilycove_lady.h"
|
||||
@ -335,19 +336,19 @@ static const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
|
||||
};
|
||||
|
||||
static const u8 *const sTVTodaysSmartShopperTextGroup[] = {
|
||||
gTVTodaysSmartShopperText00,
|
||||
gTVTodaysSmartShopperText01,
|
||||
gTVTodaysSmartShopperText02,
|
||||
gTVTodaysSmartShopperText03,
|
||||
gTVTodaysSmartShopperText04,
|
||||
gTVTodaysSmartShopperText05,
|
||||
gTVTodaysSmartShopperText06,
|
||||
gTVTodaysSmartShopperText07,
|
||||
gTVTodaysSmartShopperText08,
|
||||
gTVTodaysSmartShopperText09,
|
||||
gTVTodaysSmartShopperText10,
|
||||
gTVTodaysSmartShopperText11,
|
||||
gTVTodaysSmartShopperText12
|
||||
[SMARTSHOPPER_STATE_INTRO] = SmartShopper_Text_Intro,
|
||||
[SMARTSHOPPER_STATE_CLERK_NORMAL] = SmartShopper_Text_ClerkNormal,
|
||||
[SMARTSHOPPER_STATE_RAND_COMMENT_1] = SmartShopper_Text_RandomComment1,
|
||||
[SMARTSHOPPER_STATE_RAND_COMMENT_2] = SmartShopper_Text_RandomComment2,
|
||||
[SMARTSHOPPER_STATE_RAND_COMMENT_3] = SmartShopper_Text_RandomComment3,
|
||||
[SMARTSHOPPER_STATE_RAND_COMMENT_4] = SmartShopper_Text_RandomComment4,
|
||||
[SMARTSHOPPER_STATE_SECOND_ITEM] = SmartShopper_Text_SecondItem,
|
||||
[SMARTSHOPPER_STATE_THIRD_ITEM] = SmartShopper_Text_ThirdItem,
|
||||
[SMARTSHOPPER_STATE_DURING_SALE] = SmartShopper_Text_DuringSale,
|
||||
[SMARTSHOPPER_STATE_OUTRO_NORMAL] = SmartShopper_Text_OutroNormal,
|
||||
[SMARTSHOPPER_STATE_IS_VIP] = SmartShopper_Text_IsVIP,
|
||||
[SMARTSHOPPER_STATE_CLERK_MAX] = SmartShopper_Text_ClerkMax,
|
||||
[SMARTSHOPPER_STATE_OUTRO_MAX] = SmartShopper_Text_OutroMax
|
||||
};
|
||||
|
||||
static const u8 *const sTVBravoTrainerTextGroup[] = {
|
||||
@ -2785,7 +2786,7 @@ size_t CountDigits(int value)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void sub_80EF40C(u8 varIdx, TVShow *show)
|
||||
static void SmartShopper_BufferPurchaseTotal(u8 varIdx, TVShow *show)
|
||||
{
|
||||
u8 i;
|
||||
int price;
|
||||
@ -3421,7 +3422,7 @@ void GetMomOrDadStringForTVMessage(void)
|
||||
void HideBattleTowerReporter(void)
|
||||
{
|
||||
VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
|
||||
RemoveObjectEventByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
RemoveObjectEventByLocalIdAndMap(LOCALID_BATTLE_TOWER_LOBBY_REPORTER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
FlagSet(FLAG_HIDE_BATTLE_TOWER_REPORTER);
|
||||
}
|
||||
|
||||
@ -4460,78 +4461,85 @@ static void DoTVShowTodaysSmartShopper(void)
|
||||
state = sTVShowState;
|
||||
switch(state)
|
||||
{
|
||||
case 0:
|
||||
case SMARTSHOPPER_STATE_INTRO:
|
||||
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
|
||||
GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0);
|
||||
if (show->smartshopperShow.itemAmounts[0] >= 255)
|
||||
sTVShowState = 11;
|
||||
sTVShowState = SMARTSHOPPER_STATE_CLERK_MAX;
|
||||
else
|
||||
sTVShowState = 1;
|
||||
sTVShowState = SMARTSHOPPER_STATE_CLERK_NORMAL;
|
||||
break;
|
||||
case 1:
|
||||
case SMARTSHOPPER_STATE_CLERK_NORMAL:
|
||||
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
|
||||
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
|
||||
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0]);
|
||||
sTVShowState += 1 + (Random() % 4);
|
||||
// Pick a random comment (SMARTSHOPPER_STATE_RAND_COMMENT_#)
|
||||
sTVShowState += SMARTSHOPPER_STATE_CLERK_NORMAL + (Random() % (SMARTSHOPPER_STATE_RAND_COMMENT_4 - SMARTSHOPPER_STATE_RAND_COMMENT_1 + 1));
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
case 5:
|
||||
case SMARTSHOPPER_STATE_RAND_COMMENT_1:
|
||||
case SMARTSHOPPER_STATE_RAND_COMMENT_3:
|
||||
case SMARTSHOPPER_STATE_RAND_COMMENT_4:
|
||||
if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
|
||||
sTVShowState = 6;
|
||||
sTVShowState = SMARTSHOPPER_STATE_SECOND_ITEM;
|
||||
else
|
||||
sTVShowState = 10;
|
||||
sTVShowState = SMARTSHOPPER_STATE_IS_VIP;
|
||||
break;
|
||||
case 3:
|
||||
case SMARTSHOPPER_STATE_RAND_COMMENT_2:
|
||||
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0] + 1);
|
||||
if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
|
||||
sTVShowState = 6;
|
||||
sTVShowState = SMARTSHOPPER_STATE_SECOND_ITEM;
|
||||
else
|
||||
sTVShowState = 10;
|
||||
sTVShowState = SMARTSHOPPER_STATE_IS_VIP;
|
||||
break;
|
||||
case 6:
|
||||
case SMARTSHOPPER_STATE_SECOND_ITEM:
|
||||
// Clerk describes 2nd type of item player purchased
|
||||
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1]));
|
||||
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[1]);
|
||||
if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
|
||||
sTVShowState = 7;
|
||||
sTVShowState = SMARTSHOPPER_STATE_THIRD_ITEM;
|
||||
else if (show->smartshopperShow.priceReduced == TRUE)
|
||||
sTVShowState = 8;
|
||||
sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
|
||||
else
|
||||
sTVShowState = 9;
|
||||
sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
|
||||
break;
|
||||
case 7:
|
||||
case SMARTSHOPPER_STATE_THIRD_ITEM:
|
||||
// Clerk describes 3rd type of item player purchased
|
||||
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2]));
|
||||
ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[2]);
|
||||
if (show->smartshopperShow.priceReduced == TRUE)
|
||||
sTVShowState = 8;
|
||||
sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
|
||||
else
|
||||
sTVShowState = 9;
|
||||
sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
|
||||
break;
|
||||
case 8:
|
||||
case SMARTSHOPPER_STATE_DURING_SALE:
|
||||
if (show->smartshopperShow.itemAmounts[0] >= 255)
|
||||
sTVShowState = 12;
|
||||
sTVShowState = SMARTSHOPPER_STATE_OUTRO_MAX;
|
||||
else
|
||||
sTVShowState = 9;
|
||||
sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
|
||||
break;
|
||||
case 9:
|
||||
sub_80EF40C(1, show);
|
||||
case SMARTSHOPPER_STATE_OUTRO_NORMAL:
|
||||
SmartShopper_BufferPurchaseTotal(1, show);
|
||||
TVShowDone();
|
||||
break;
|
||||
case 10:
|
||||
case SMARTSHOPPER_STATE_IS_VIP:
|
||||
// Clerk says customer is a VIP
|
||||
// Said if player only purchased one type of item
|
||||
if (show->smartshopperShow.priceReduced == TRUE)
|
||||
sTVShowState = 8;
|
||||
sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
|
||||
else
|
||||
sTVShowState = 9;
|
||||
sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
|
||||
break;
|
||||
case 11:
|
||||
case SMARTSHOPPER_STATE_CLERK_MAX:
|
||||
// Clerk's comments if player purchased maximum number of 1st item
|
||||
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
|
||||
StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
|
||||
if (show->smartshopperShow.priceReduced == TRUE)
|
||||
sTVShowState = 8;
|
||||
sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
|
||||
else
|
||||
sTVShowState = 12;
|
||||
sTVShowState = SMARTSHOPPER_STATE_OUTRO_MAX;
|
||||
break;
|
||||
case 12:
|
||||
case SMARTSHOPPER_STATE_OUTRO_MAX:
|
||||
// Outro comments if player purchased maximum number of 1st item
|
||||
TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
|
||||
TVShowDone();
|
||||
break;
|
||||
|
@ -253,10 +253,10 @@ static bool32 UR_PrintFieldMessage(const u8 *);
|
||||
static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *);
|
||||
static void Task_InitUnionRoom(u8 taskId);
|
||||
static bool8 AreGnameUnameDifferent(struct WirelessGnameUnamePair*, const struct WirelessGnameUnamePair*);
|
||||
static void ItemPrintFunc_PossibleGroupMembers(u8, s32, u8);
|
||||
static void ListMenuItemPrintFunc_UnionRoomGroups(u8, s32, u8);
|
||||
static void TradeBoardListMenuItemPrintFunc(u8, s32, u8);
|
||||
static void nullsub_14(u8, s32, u8);
|
||||
static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, u32 id, u8 y);
|
||||
static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, u32 id, u8 y);
|
||||
static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 id, u8 y);
|
||||
static void nullsub_14(u8 windowId, u32 id, u8 y);
|
||||
|
||||
#include "data/union_room.h"
|
||||
|
||||
@ -835,7 +835,7 @@ static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 id, u8 y)
|
||||
static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, u32 id, u8 y)
|
||||
{
|
||||
struct WirelessLink_Leader *data = sWirelessLinkMain.leader;
|
||||
u8 colorIdx = UR_COLOR_DKE_WHT_LTE;
|
||||
@ -1363,7 +1363,7 @@ static u8 URoomGroupListGetTextColor(struct WirelessLink_Group *data, u32 id)
|
||||
return UR_COLOR_DKE_WHT_LTE;
|
||||
}
|
||||
|
||||
static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, s32 id, u8 y)
|
||||
static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, u32 id, u8 y)
|
||||
{
|
||||
struct WirelessLink_Group *data = sWirelessLinkMain.group;
|
||||
u8 colorId = URoomGroupListGetTextColor(data, id);
|
||||
@ -4074,9 +4074,8 @@ static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 *main0,
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_14(u8 windowId, s32 itemId, u8 y)
|
||||
void nullsub_14(u8 windowId, u32 itemId, u8 y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct GFtgtGname * gname, const u8 * uname, u8 colorIdx)
|
||||
@ -4100,7 +4099,7 @@ static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct GFtgtGname * gname
|
||||
}
|
||||
}
|
||||
|
||||
static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y)
|
||||
static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 itemId, u8 y)
|
||||
{
|
||||
struct WirelessLink_Leader *data = sWirelessLinkMain.leader;
|
||||
struct GFtgtGname *rfu;
|
||||
@ -4420,7 +4419,7 @@ static void HandleCancelActivity(bool32 setData)
|
||||
static void UR_EnableScriptContext2AndFreezeObjectEvents(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
ScriptFreezeObjectEvents();
|
||||
FreezeObjects_WaitForPlayer();
|
||||
}
|
||||
|
||||
static u8 GetActivePartnerSpriteGenderParam(struct WirelessLink_URoom *data)
|
||||
|
@ -77,18 +77,27 @@ static const u8 sNextFacingDirection[] = {
|
||||
[DIR_EAST] = DIR_NORTH
|
||||
};
|
||||
|
||||
// Local id 1 is the Nurse/Attendant, 2-9 are link players
|
||||
static const u8 sUnionRoomLocalIds[] = { 9, 8, 7, 2, 6, 5, 4, 3 };
|
||||
static const u8 sUnionRoomLocalIds[] = {
|
||||
LOCALID_UNION_ROOM_PLAYER_1,
|
||||
LOCALID_UNION_ROOM_PLAYER_2,
|
||||
LOCALID_UNION_ROOM_PLAYER_3,
|
||||
LOCALID_UNION_ROOM_PLAYER_4,
|
||||
LOCALID_UNION_ROOM_PLAYER_5,
|
||||
LOCALID_UNION_ROOM_PLAYER_6,
|
||||
LOCALID_UNION_ROOM_PLAYER_7,
|
||||
LOCALID_UNION_ROOM_PLAYER_8
|
||||
};
|
||||
|
||||
static const u16 sUnknown[] = {
|
||||
0x2BF,
|
||||
0x2C0,
|
||||
0x2C1,
|
||||
0x2C2,
|
||||
0x2C3,
|
||||
0x2C4,
|
||||
0x2C5,
|
||||
0x2C6
|
||||
// Unused
|
||||
static const u16 sHidePlayerFlags[] = {
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_1,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_2,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_3,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_4,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_5,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_6,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_7,
|
||||
FLAG_HIDE_UNION_ROOM_PLAYER_8
|
||||
};
|
||||
|
||||
static const u8 sMovement_UnionPlayerExit[2] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user