mirror of
https://github.com/pret/pokegold.git
synced 2026-09-07 16:15:22 -05:00
Add engine/battle/misc.asm
This commit is contained in:
10
data/battle/weather_modifiers.asm
Executable file
10
data/battle/weather_modifiers.asm
Executable file
@@ -0,0 +1,10 @@
|
||||
WeatherTypeModifiers:
|
||||
db WEATHER_RAIN, WATER, MORE_EFFECTIVE
|
||||
db WEATHER_RAIN, FIRE, NOT_VERY_EFFECTIVE
|
||||
db WEATHER_SUN, FIRE, MORE_EFFECTIVE
|
||||
db WEATHER_SUN, WATER, NOT_VERY_EFFECTIVE
|
||||
db -1 ; end
|
||||
|
||||
WeatherMoveModifiers:
|
||||
db WEATHER_RAIN, EFFECT_SOLARBEAM, NOT_VERY_EFFECTIVE
|
||||
db -1 ; end
|
||||
21
data/types/badge_type_boosts.asm
Executable file
21
data/types/badge_type_boosts.asm
Executable file
@@ -0,0 +1,21 @@
|
||||
BadgeTypeBoosts:
|
||||
; entries correspond to wJohtoBadges constants
|
||||
db FLYING ; ZEPHYRBADGE
|
||||
db BUG ; HIVEBADGE
|
||||
db NORMAL ; PLAINBADGE
|
||||
db GHOST ; FOGBADGE
|
||||
db STEEL ; MINERALBADGE
|
||||
db FIGHTING ; STORMBADGE
|
||||
db ICE ; GLACIERBADGE
|
||||
db DRAGON ; RISINGBADGE
|
||||
; fallthrough
|
||||
; entries correspond to wKantoBadges constants
|
||||
db ROCK ; BOULDERBADGE
|
||||
db WATER ; CASCADEBADGE
|
||||
db ELECTRIC ; THUNDERBADGE
|
||||
db GRASS ; RAINBOWBADGE
|
||||
db POISON ; SOULBADGE
|
||||
db PSYCHIC_TYPE ; MARSHBADGE
|
||||
db FIRE ; VOLCANOBADGE
|
||||
db GROUND ; EARTHBADGE
|
||||
db -1 ; end
|
||||
219
engine/battle/misc.asm
Executable file
219
engine/battle/misc.asm
Executable file
@@ -0,0 +1,219 @@
|
||||
_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 a, [wCurDamage]
|
||||
ldh [hMultiplicand + 1], a
|
||||
ld a, [wCurDamage + 1]
|
||||
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
|
||||
|
||||
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"
|
||||
12
main.asm
12
main.asm
@@ -382,17 +382,7 @@ INCLUDE "engine/link/time_capsule_2.asm"
|
||||
INCLUDE "engine/pokedex/unown_dex.asm"
|
||||
INCLUDE "engine/events/magikarp.asm"
|
||||
INCLUDE "engine/battle/hidden_power.asm"
|
||||
|
||||
_DisappearUser::
|
||||
dr $fbe5a, $fbe6f
|
||||
_AppearUserRaiseSub::
|
||||
dr $fbe6f, $fbe77
|
||||
_AppearUserLowerSub::
|
||||
dr $fbe77, $fbeaa
|
||||
DoWeatherModifiers::
|
||||
dr $fbeaa, $fbf2b
|
||||
DoBadgeTypeBoosts::
|
||||
dr $fbf2b, $fbf93
|
||||
INCLUDE "engine/battle/misc.asm"
|
||||
|
||||
|
||||
SECTION "bank3F", ROMX
|
||||
|
||||
Reference in New Issue
Block a user