_DisappearUser: xor a ldh [hBGMapMode], a ldh a, [hBattleTurn] and a jr z, .player call GetEnemyFrontpicCoords jr .okay .player call GetPlayerBackpicCoords .okay call ClearBox jr FinishAppearDisappearUser _AppearUserRaiseSub: farcall BattleCommand_RaiseSubNoAnim jr AppearUser _AppearUserLowerSub: farcall BattleCommand_LowerSubNoAnim AppearUser: xor a ldh [hBGMapMode], a ldh a, [hBattleTurn] and a jr z, .player call GetEnemyFrontpicCoords xor a jr .okay .player call GetPlayerBackpicCoords ld a, $31 .okay ldh [hGraphicStartTile], a predef PlaceGraphic FinishAppearDisappearUser: ld a, $1 ldh [hBGMapMode], a ret GetEnemyFrontpicCoords: hlcoord 12, 0 lb bc, 7, 7 ret GetPlayerBackpicCoords: hlcoord 2, 6 lb bc, 6, 6 ret DoWeatherModifiers: ld de, WeatherTypeModifiers ld a, [wBattleWeather] ld b, a ld a, [wCurType] ld c, a .CheckWeatherType: ld a, [de] inc de cp -1 jr z, .done_weather_types cp b jr nz, .NextWeatherType ld a, [de] cp c jr z, .ApplyModifier .NextWeatherType: inc de inc de jr .CheckWeatherType .done_weather_types ld de, WeatherMoveModifiers ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar ld c, a .CheckWeatherMove: ld a, [de] inc de cp -1 jr z, .done cp b jr nz, .NextWeatherMove ld a, [de] cp c jr z, .ApplyModifier .NextWeatherMove: inc de inc de jr .CheckWeatherMove .ApplyModifier: xor a ldh [hMultiplicand + 0], a ld hl, wCurDamage ld a, [hli] ldh [hMultiplicand + 1], a ld a, [hl] ldh [hMultiplicand + 2], a inc de ld a, [de] ldh [hMultiplier], a call Multiply ld a, 10 ldh [hDivisor], a ld b, 4 call Divide ldh a, [hQuotient + 1] and a ld bc, -1 jr nz, .Update ldh a, [hQuotient + 2] ld b, a ldh a, [hQuotient + 3] ld c, a or b jr nz, .Update ld bc, 1 .Update: ld a, b ld [wCurDamage], a ld a, c ld [wCurDamage + 1], a .done ret INCLUDE "data/battle/weather_modifiers.asm" DoBadgeTypeBoosts: ld a, [wLinkMode] and a ret nz ld a, [wInBattleTowerBattle] and a ret nz ldh a, [hBattleTurn] and a ret nz push de push bc ld hl, BadgeTypeBoosts ld a, [wKantoBadges] ld b, a ld a, [wJohtoBadges] ld c, a .CheckBadge: ld a, [hl] cp -1 jr z, .done srl b rr c jr nc, .NextBadge ld a, [wCurType] cp [hl] jr z, .ApplyBoost .NextBadge: inc hl jr .CheckBadge .ApplyBoost: ld a, [wCurDamage] ld h, a ld d, a ld a, [wCurDamage + 1] ld l, a ld e, a srl d rr e srl d rr e srl d rr e ld a, e or d jr nz, .done_min ld e, 1 .done_min add hl, de jr nc, .Update ld hl, $ffff .Update: ld a, h ld [wCurDamage], a ld a, l ld [wCurDamage + 1], a .done pop bc pop de ret INCLUDE "data/types/badge_type_boosts.asm"