mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-16 18:20:50 +12:00
Complete Inverse implementation, fix type matchups
Issues occurred resulting from an incomplete implementation of Inverse Battles from Commit #e59cc2b3292f3da336e89ef23b15b234bf469368. Attempts to fix have been made through completing the implementation, which also accounts for proto-Fairy. Additionally, some semi-invulnerable glitches have attempts made to resolve them, involving a generic list and 16bitification of the compare commands. Damage processing seems iffy but this needs more testing. Type matchups function correctly, though.
This commit is contained in:
parent
90fe97fcb1
commit
a14e978b98
|
@ -96,6 +96,7 @@ DEF SPDSPCDV_SHINY EQU $AA
|
|||
const BATTLETYPE_FORCEITEM
|
||||
const BATTLETYPE_CELEBI
|
||||
const BATTLETYPE_SUICUNE
|
||||
const BATTLETYPE_INVERSE
|
||||
|
||||
; BattleVarPairs indexes (see home/battle_vars.asm)
|
||||
const_def
|
||||
|
|
|
@ -1,132 +1,253 @@
|
|||
TypeMatchups:
|
||||
; attacker, defender, *=
|
||||
db NORMAL, ROCK, NOT_VERY_EFFECTIVE
|
||||
db NORMAL, STEEL, NOT_VERY_EFFECTIVE
|
||||
db FIRE, FIRE, NOT_VERY_EFFECTIVE
|
||||
db FIRE, WATER, NOT_VERY_EFFECTIVE
|
||||
db FIRE, GRASS, SUPER_EFFECTIVE
|
||||
db FIRE, ICE, SUPER_EFFECTIVE
|
||||
db FIRE, BUG, SUPER_EFFECTIVE
|
||||
db FIRE, ROCK, NOT_VERY_EFFECTIVE
|
||||
db FIRE, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db FIRE, STEEL, SUPER_EFFECTIVE
|
||||
db FIRE, FAIRY, SUPER_EFFECTIVE
|
||||
db WATER, FIRE, SUPER_EFFECTIVE
|
||||
db WATER, WATER, NOT_VERY_EFFECTIVE
|
||||
db WATER, GRASS, NOT_VERY_EFFECTIVE
|
||||
db WATER, GROUND, SUPER_EFFECTIVE
|
||||
db WATER, ROCK, SUPER_EFFECTIVE
|
||||
db WATER, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, WATER, SUPER_EFFECTIVE
|
||||
db ELECTRIC, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, GRASS, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, GROUND, NO_EFFECT
|
||||
db ELECTRIC, FLYING, SUPER_EFFECTIVE
|
||||
db ELECTRIC, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db GRASS, FIRE, NOT_VERY_EFFECTIVE
|
||||
db GRASS, WATER, SUPER_EFFECTIVE
|
||||
db GRASS, GRASS, NOT_VERY_EFFECTIVE
|
||||
db GRASS, POISON, NOT_VERY_EFFECTIVE
|
||||
db GRASS, GROUND, SUPER_EFFECTIVE
|
||||
db GRASS, FLYING, NOT_VERY_EFFECTIVE
|
||||
db GRASS, BUG, NOT_VERY_EFFECTIVE
|
||||
db GRASS, ROCK, SUPER_EFFECTIVE
|
||||
db GRASS, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db GRASS, STEEL, NOT_VERY_EFFECTIVE
|
||||
db ICE, WATER, NOT_VERY_EFFECTIVE
|
||||
db ICE, GRASS, SUPER_EFFECTIVE
|
||||
db ICE, ICE, NOT_VERY_EFFECTIVE
|
||||
db ICE, GROUND, SUPER_EFFECTIVE
|
||||
db ICE, FLYING, SUPER_EFFECTIVE
|
||||
db ICE, DRAGON, SUPER_EFFECTIVE
|
||||
db ICE, STEEL, NOT_VERY_EFFECTIVE
|
||||
db ICE, FAIRY, SUPER_EFFECTIVE
|
||||
db ICE, FIRE, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, NORMAL, SUPER_EFFECTIVE
|
||||
db FIGHTING, ICE, SUPER_EFFECTIVE
|
||||
db FIGHTING, POISON, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, FLYING, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, BUG, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, ROCK, SUPER_EFFECTIVE
|
||||
db FIGHTING, DARK, SUPER_EFFECTIVE
|
||||
db FIGHTING, STEEL, SUPER_EFFECTIVE
|
||||
db FIGHTING, FAIRY, NOT_VERY_EFFECTIVE
|
||||
db POISON, GRASS, SUPER_EFFECTIVE
|
||||
db POISON, POISON, NOT_VERY_EFFECTIVE
|
||||
db POISON, GROUND, NOT_VERY_EFFECTIVE
|
||||
db POISON, ROCK, NOT_VERY_EFFECTIVE
|
||||
db POISON, GHOST, NOT_VERY_EFFECTIVE
|
||||
db POISON, STEEL, NO_EFFECT
|
||||
db GROUND, FIRE, SUPER_EFFECTIVE
|
||||
db GROUND, ELECTRIC, SUPER_EFFECTIVE
|
||||
db GROUND, GRASS, NOT_VERY_EFFECTIVE
|
||||
db GROUND, POISON, SUPER_EFFECTIVE
|
||||
db GROUND, FLYING, NO_EFFECT
|
||||
db GROUND, BUG, NOT_VERY_EFFECTIVE
|
||||
db GROUND, ROCK, SUPER_EFFECTIVE
|
||||
db GROUND, STEEL, SUPER_EFFECTIVE
|
||||
db FLYING, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db FLYING, GRASS, SUPER_EFFECTIVE
|
||||
db FLYING, FIGHTING, SUPER_EFFECTIVE
|
||||
db FLYING, BUG, SUPER_EFFECTIVE
|
||||
db FLYING, ROCK, NOT_VERY_EFFECTIVE
|
||||
db FLYING, STEEL, NOT_VERY_EFFECTIVE
|
||||
db PSYCHIC_TYPE, FIGHTING, SUPER_EFFECTIVE
|
||||
db PSYCHIC_TYPE, POISON, SUPER_EFFECTIVE
|
||||
; attacker, defender, *=
|
||||
db NORMAL, ROCK, NOT_VERY_EFFECTIVE
|
||||
db NORMAL, STEEL, NOT_VERY_EFFECTIVE
|
||||
db FIRE, FIRE, NOT_VERY_EFFECTIVE
|
||||
db FIRE, WATER, NOT_VERY_EFFECTIVE
|
||||
db FIRE, GRASS, SUPER_EFFECTIVE
|
||||
db FIRE, ICE, SUPER_EFFECTIVE
|
||||
db FIRE, BUG, SUPER_EFFECTIVE
|
||||
db FIRE, ROCK, NOT_VERY_EFFECTIVE
|
||||
db FIRE, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db FIRE, STEEL, SUPER_EFFECTIVE
|
||||
db FIRE, FAIRY, SUPER_EFFECTIVE
|
||||
db WATER, FIRE, SUPER_EFFECTIVE
|
||||
db WATER, WATER, NOT_VERY_EFFECTIVE
|
||||
db WATER, GRASS, NOT_VERY_EFFECTIVE
|
||||
db WATER, GROUND, SUPER_EFFECTIVE
|
||||
db WATER, ROCK, SUPER_EFFECTIVE
|
||||
db WATER, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, WATER, SUPER_EFFECTIVE
|
||||
db ELECTRIC, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, GRASS, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, GROUND, NO_EFFECT
|
||||
db ELECTRIC, FLYING, SUPER_EFFECTIVE
|
||||
db ELECTRIC, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db GRASS, FIRE, NOT_VERY_EFFECTIVE
|
||||
db GRASS, WATER, SUPER_EFFECTIVE
|
||||
db GRASS, GRASS, NOT_VERY_EFFECTIVE
|
||||
db GRASS, POISON, NOT_VERY_EFFECTIVE
|
||||
db GRASS, GROUND, SUPER_EFFECTIVE
|
||||
db GRASS, FLYING, NOT_VERY_EFFECTIVE
|
||||
db GRASS, BUG, NOT_VERY_EFFECTIVE
|
||||
db GRASS, ROCK, SUPER_EFFECTIVE
|
||||
db GRASS, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db GRASS, STEEL, NOT_VERY_EFFECTIVE
|
||||
db ICE, WATER, NOT_VERY_EFFECTIVE
|
||||
db ICE, GRASS, SUPER_EFFECTIVE
|
||||
db ICE, ICE, NOT_VERY_EFFECTIVE
|
||||
db ICE, GROUND, SUPER_EFFECTIVE
|
||||
db ICE, FLYING, SUPER_EFFECTIVE
|
||||
db ICE, DRAGON, SUPER_EFFECTIVE
|
||||
db ICE, STEEL, NOT_VERY_EFFECTIVE
|
||||
db ICE, FAIRY, SUPER_EFFECTIVE
|
||||
db ICE, FIRE, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, NORMAL, SUPER_EFFECTIVE
|
||||
db FIGHTING, ICE, SUPER_EFFECTIVE
|
||||
db FIGHTING, POISON, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, FLYING, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, BUG, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, ROCK, SUPER_EFFECTIVE
|
||||
db FIGHTING, DARK, SUPER_EFFECTIVE
|
||||
db FIGHTING, STEEL, SUPER_EFFECTIVE
|
||||
db FIGHTING, FAIRY, NOT_VERY_EFFECTIVE
|
||||
db POISON, GRASS, SUPER_EFFECTIVE
|
||||
db POISON, POISON, NOT_VERY_EFFECTIVE
|
||||
db POISON, GROUND, NOT_VERY_EFFECTIVE
|
||||
db POISON, ROCK, NOT_VERY_EFFECTIVE
|
||||
db POISON, GHOST, NOT_VERY_EFFECTIVE
|
||||
db POISON, STEEL, NO_EFFECT
|
||||
db GROUND, FIRE, SUPER_EFFECTIVE
|
||||
db GROUND, ELECTRIC, SUPER_EFFECTIVE
|
||||
db GROUND, GRASS, NOT_VERY_EFFECTIVE
|
||||
db GROUND, POISON, SUPER_EFFECTIVE
|
||||
db GROUND, FLYING, NO_EFFECT
|
||||
db GROUND, BUG, NOT_VERY_EFFECTIVE
|
||||
db GROUND, ROCK, SUPER_EFFECTIVE
|
||||
db GROUND, STEEL, SUPER_EFFECTIVE
|
||||
db FLYING, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db FLYING, GRASS, SUPER_EFFECTIVE
|
||||
db FLYING, FIGHTING, SUPER_EFFECTIVE
|
||||
db FLYING, BUG, SUPER_EFFECTIVE
|
||||
db FLYING, ROCK, NOT_VERY_EFFECTIVE
|
||||
db FLYING, STEEL, NOT_VERY_EFFECTIVE
|
||||
db PSYCHIC_TYPE, FIGHTING, SUPER_EFFECTIVE
|
||||
db PSYCHIC_TYPE, POISON, SUPER_EFFECTIVE
|
||||
db PSYCHIC_TYPE, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
|
||||
db PSYCHIC_TYPE, DARK, NO_EFFECT
|
||||
db PSYCHIC_TYPE, STEEL, NOT_VERY_EFFECTIVE
|
||||
db BUG, FIRE, NOT_VERY_EFFECTIVE
|
||||
db BUG, GRASS, SUPER_EFFECTIVE
|
||||
db BUG, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db BUG, POISON, NOT_VERY_EFFECTIVE
|
||||
db BUG, FLYING, NOT_VERY_EFFECTIVE
|
||||
db BUG, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db BUG, GHOST, NOT_VERY_EFFECTIVE
|
||||
db BUG, DARK, SUPER_EFFECTIVE
|
||||
db BUG, STEEL, NOT_VERY_EFFECTIVE
|
||||
db BUG, FAIRY, NOT_VERY_EFFECTIVE
|
||||
db ROCK, FIRE, SUPER_EFFECTIVE
|
||||
db ROCK, ICE, SUPER_EFFECTIVE
|
||||
db ROCK, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db ROCK, GROUND, NOT_VERY_EFFECTIVE
|
||||
db ROCK, FLYING, SUPER_EFFECTIVE
|
||||
db ROCK, BUG, SUPER_EFFECTIVE
|
||||
db ROCK, STEEL, NOT_VERY_EFFECTIVE
|
||||
db GHOST, NORMAL, NO_EFFECT
|
||||
db GHOST, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db GHOST, DARK, NOT_VERY_EFFECTIVE
|
||||
db GHOST, STEEL, NOT_VERY_EFFECTIVE
|
||||
db GHOST, GHOST, SUPER_EFFECTIVE
|
||||
db DRAGON, DRAGON, SUPER_EFFECTIVE
|
||||
db DRAGON, STEEL, NOT_VERY_EFFECTIVE
|
||||
db DRAGON, FAIRY, NO_EFFECT
|
||||
db DARK, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db DARK, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db DARK, GHOST, SUPER_EFFECTIVE
|
||||
db DARK, DARK, NOT_VERY_EFFECTIVE
|
||||
db DARK, STEEL, NOT_VERY_EFFECTIVE
|
||||
db DARK, FAIRY, NOT_VERY_EFFECTIVE
|
||||
db STEEL, FIRE, NOT_VERY_EFFECTIVE
|
||||
db STEEL, WATER, NOT_VERY_EFFECTIVE
|
||||
db STEEL, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db STEEL, ICE, SUPER_EFFECTIVE
|
||||
db STEEL, ROCK, SUPER_EFFECTIVE
|
||||
db STEEL, STEEL, NOT_VERY_EFFECTIVE
|
||||
db STEEL, FAIRY, SUPER_EFFECTIVE
|
||||
db FAIRY, FIRE, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, BUG, SUPER_EFFECTIVE
|
||||
db FAIRY, FIGHTING, SUPER_EFFECTIVE
|
||||
db FAIRY, ICE, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, DRAGON, SUPER_EFFECTIVE
|
||||
db FAIRY, DARK, SUPER_EFFECTIVE
|
||||
db FAIRY, STEEL, NOT_VERY_EFFECTIVE
|
||||
db PSYCHIC_TYPE, DARK, NO_EFFECT
|
||||
db PSYCHIC_TYPE, STEEL, NOT_VERY_EFFECTIVE
|
||||
db BUG, FIRE, NOT_VERY_EFFECTIVE
|
||||
db BUG, GRASS, SUPER_EFFECTIVE
|
||||
db BUG, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db BUG, POISON, NOT_VERY_EFFECTIVE
|
||||
db BUG, FLYING, NOT_VERY_EFFECTIVE
|
||||
db BUG, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db BUG, GHOST, NOT_VERY_EFFECTIVE
|
||||
db BUG, DARK, SUPER_EFFECTIVE
|
||||
db BUG, STEEL, NOT_VERY_EFFECTIVE
|
||||
db BUG, FAIRY, NOT_VERY_EFFECTIVE
|
||||
db ROCK, FIRE, SUPER_EFFECTIVE
|
||||
db ROCK, ICE, SUPER_EFFECTIVE
|
||||
db ROCK, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db ROCK, GROUND, NOT_VERY_EFFECTIVE
|
||||
db ROCK, FLYING, SUPER_EFFECTIVE
|
||||
db ROCK, BUG, SUPER_EFFECTIVE
|
||||
db ROCK, STEEL, NOT_VERY_EFFECTIVE
|
||||
db GHOST, NORMAL, NO_EFFECT
|
||||
db GHOST, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db GHOST, DARK, NOT_VERY_EFFECTIVE
|
||||
db GHOST, STEEL, NOT_VERY_EFFECTIVE
|
||||
db GHOST, GHOST, SUPER_EFFECTIVE
|
||||
db DRAGON, DRAGON, SUPER_EFFECTIVE
|
||||
db DRAGON, STEEL, NOT_VERY_EFFECTIVE
|
||||
db DRAGON, FAIRY, NO_EFFECT
|
||||
db DARK, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db DARK, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db DARK, GHOST, SUPER_EFFECTIVE
|
||||
db DARK, DARK, NOT_VERY_EFFECTIVE
|
||||
db DARK, STEEL, NOT_VERY_EFFECTIVE
|
||||
db DARK, FAIRY, NOT_VERY_EFFECTIVE
|
||||
db STEEL, FIRE, NOT_VERY_EFFECTIVE
|
||||
db STEEL, WATER, NOT_VERY_EFFECTIVE
|
||||
db STEEL, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db STEEL, ICE, SUPER_EFFECTIVE
|
||||
db STEEL, ROCK, SUPER_EFFECTIVE
|
||||
db STEEL, STEEL, NOT_VERY_EFFECTIVE
|
||||
db STEEL, FAIRY, SUPER_EFFECTIVE
|
||||
db FAIRY, FIRE, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, BUG, SUPER_EFFECTIVE
|
||||
db FAIRY, FIGHTING, SUPER_EFFECTIVE
|
||||
db FAIRY, ICE, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, DRAGON, SUPER_EFFECTIVE
|
||||
db FAIRY, DARK, SUPER_EFFECTIVE
|
||||
db FAIRY, STEEL, NOT_VERY_EFFECTIVE
|
||||
|
||||
db -2 ; end (with Foresight)
|
||||
|
||||
; Foresight removes Ghost's immunities.
|
||||
db NORMAL, GHOST, NO_EFFECT
|
||||
db FIGHTING, GHOST, NO_EFFECT
|
||||
db NORMAL, GHOST, NO_EFFECT
|
||||
db FIGHTING, GHOST, NO_EFFECT
|
||||
|
||||
db -1 ; end
|
||||
|
||||
InverseTypeMatchups:
|
||||
; attacker, defender, *=
|
||||
db NORMAL, ROCK, SUPER_EFFECTIVE
|
||||
db NORMAL, STEEL, SUPER_EFFECTIVE
|
||||
db FIRE, FIRE, SUPER_EFFECTIVE
|
||||
db FIRE, WATER, SUPER_EFFECTIVE
|
||||
db FIRE, GRASS, NOT_VERY_EFFECTIVE
|
||||
db FIRE, ICE, NOT_VERY_EFFECTIVE
|
||||
db FIRE, BUG, NOT_VERY_EFFECTIVE
|
||||
db FIRE, ROCK, SUPER_EFFECTIVE
|
||||
db FIRE, DRAGON, SUPER_EFFECTIVE
|
||||
db FIRE, STEEL, NOT_VERY_EFFECTIVE
|
||||
db WATER, FIRE, NOT_VERY_EFFECTIVE
|
||||
db WATER, WATER, SUPER_EFFECTIVE
|
||||
db WATER, GRASS, SUPER_EFFECTIVE
|
||||
db WATER, GROUND, NOT_VERY_EFFECTIVE
|
||||
db WATER, ROCK, NOT_VERY_EFFECTIVE
|
||||
db WATER, DRAGON, SUPER_EFFECTIVE
|
||||
db ELECTRIC, WATER, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, ELECTRIC, SUPER_EFFECTIVE
|
||||
db ELECTRIC, GRASS, SUPER_EFFECTIVE
|
||||
db ELECTRIC, GROUND, SUPER_EFFECTIVE
|
||||
db ELECTRIC, FLYING, NOT_VERY_EFFECTIVE
|
||||
db ELECTRIC, DRAGON, SUPER_EFFECTIVE
|
||||
db GRASS, FIRE, SUPER_EFFECTIVE
|
||||
db GRASS, WATER, NOT_VERY_EFFECTIVE
|
||||
db GRASS, GRASS, SUPER_EFFECTIVE
|
||||
db GRASS, POISON, SUPER_EFFECTIVE
|
||||
db GRASS, GROUND, NOT_VERY_EFFECTIVE
|
||||
db GRASS, FLYING, SUPER_EFFECTIVE
|
||||
db GRASS, BUG, SUPER_EFFECTIVE
|
||||
db GRASS, ROCK, NOT_VERY_EFFECTIVE
|
||||
db GRASS, DRAGON, SUPER_EFFECTIVE
|
||||
db GRASS, STEEL, SUPER_EFFECTIVE
|
||||
db ICE, WATER, SUPER_EFFECTIVE
|
||||
db ICE, GRASS, NOT_VERY_EFFECTIVE
|
||||
db ICE, ICE, SUPER_EFFECTIVE
|
||||
db ICE, GROUND, NOT_VERY_EFFECTIVE
|
||||
db ICE, FLYING, NOT_VERY_EFFECTIVE
|
||||
db ICE, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db ICE, STEEL, SUPER_EFFECTIVE
|
||||
db ICE, FIRE, SUPER_EFFECTIVE
|
||||
db FIGHTING, NORMAL, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, ICE, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, POISON, SUPER_EFFECTIVE
|
||||
db FIGHTING, FLYING, SUPER_EFFECTIVE
|
||||
db FIGHTING, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db FIGHTING, BUG, SUPER_EFFECTIVE
|
||||
db FIGHTING, ROCK, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, DARK, NOT_VERY_EFFECTIVE
|
||||
db FIGHTING, STEEL, NOT_VERY_EFFECTIVE
|
||||
db POISON, GRASS, NOT_VERY_EFFECTIVE
|
||||
db POISON, POISON, SUPER_EFFECTIVE
|
||||
db POISON, GROUND, SUPER_EFFECTIVE
|
||||
db POISON, ROCK, SUPER_EFFECTIVE
|
||||
db POISON, GHOST, SUPER_EFFECTIVE
|
||||
db POISON, STEEL, SUPER_EFFECTIVE
|
||||
db GROUND, FIRE, NOT_VERY_EFFECTIVE
|
||||
db GROUND, ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db GROUND, GRASS, SUPER_EFFECTIVE
|
||||
db GROUND, POISON, NOT_VERY_EFFECTIVE
|
||||
db GROUND, FLYING, SUPER_EFFECTIVE
|
||||
db GROUND, BUG, SUPER_EFFECTIVE
|
||||
db GROUND, ROCK, NOT_VERY_EFFECTIVE
|
||||
db GROUND, STEEL, NOT_VERY_EFFECTIVE
|
||||
db FLYING, ELECTRIC, SUPER_EFFECTIVE
|
||||
db FLYING, GRASS, NOT_VERY_EFFECTIVE
|
||||
db FLYING, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db FLYING, BUG, NOT_VERY_EFFECTIVE
|
||||
db FLYING, ROCK, SUPER_EFFECTIVE
|
||||
db FLYING, STEEL, SUPER_EFFECTIVE
|
||||
db PSYCHIC_TYPE, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db PSYCHIC_TYPE, POISON, NOT_VERY_EFFECTIVE
|
||||
db PSYCHIC_TYPE, PSYCHIC_TYPE, SUPER_EFFECTIVE
|
||||
db PSYCHIC_TYPE, DARK, SUPER_EFFECTIVE
|
||||
db PSYCHIC_TYPE, STEEL, SUPER_EFFECTIVE
|
||||
db BUG, FIRE, SUPER_EFFECTIVE
|
||||
db BUG, GRASS, NOT_VERY_EFFECTIVE
|
||||
db BUG, FIGHTING, SUPER_EFFECTIVE
|
||||
db BUG, POISON, SUPER_EFFECTIVE
|
||||
db BUG, FLYING, SUPER_EFFECTIVE
|
||||
db BUG, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
|
||||
db BUG, GHOST, SUPER_EFFECTIVE
|
||||
db BUG, DARK, NOT_VERY_EFFECTIVE
|
||||
db BUG, STEEL, SUPER_EFFECTIVE
|
||||
db ROCK, FIRE, NOT_VERY_EFFECTIVE
|
||||
db ROCK, ICE, NOT_VERY_EFFECTIVE
|
||||
db ROCK, FIGHTING, SUPER_EFFECTIVE
|
||||
db ROCK, GROUND, SUPER_EFFECTIVE
|
||||
db ROCK, FLYING, NOT_VERY_EFFECTIVE
|
||||
db ROCK, BUG, NOT_VERY_EFFECTIVE
|
||||
db ROCK, STEEL, SUPER_EFFECTIVE
|
||||
db GHOST, NORMAL, SUPER_EFFECTIVE
|
||||
db GHOST, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
|
||||
db GHOST, DARK, SUPER_EFFECTIVE
|
||||
db GHOST, STEEL, SUPER_EFFECTIVE
|
||||
db GHOST, GHOST, NOT_VERY_EFFECTIVE
|
||||
db DRAGON, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db DRAGON, STEEL, SUPER_EFFECTIVE
|
||||
db DARK, FIGHTING, SUPER_EFFECTIVE
|
||||
db DARK, PSYCHIC_TYPE, NOT_VERY_EFFECTIVE
|
||||
db DARK, GHOST, NOT_VERY_EFFECTIVE
|
||||
db DARK, DARK, SUPER_EFFECTIVE
|
||||
db DARK, STEEL, SUPER_EFFECTIVE
|
||||
db STEEL, FIRE, SUPER_EFFECTIVE
|
||||
db STEEL, WATER, SUPER_EFFECTIVE
|
||||
db STEEL, ELECTRIC, SUPER_EFFECTIVE
|
||||
db STEEL, ICE, NOT_VERY_EFFECTIVE
|
||||
db STEEL, ROCK, NOT_VERY_EFFECTIVE
|
||||
db STEEL, STEEL, SUPER_EFFECTIVE
|
||||
db NORMAL, GHOST, SUPER_EFFECTIVE
|
||||
db FIGHTING, GHOST, SUPER_EFFECTIVE
|
||||
db FAIRY, FIRE, SUPER_EFFECTIVE
|
||||
db FAIRY, BUG, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, ICE, SUPER_EFFECTIVE
|
||||
db FAIRY, DRAGON, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, DARK, NOT_VERY_EFFECTIVE
|
||||
db FAIRY, STEEL, SUPER_EFFECTIVE
|
||||
db -1 ; end
|
||||
|
|
|
@ -359,7 +359,7 @@ CantMove:
|
|||
ld a, BATTLE_VARS_MOVE_ANIM
|
||||
call GetBattleVar
|
||||
push hl
|
||||
ld hl, .fly_dig_moves
|
||||
ld hl, FlyDigMoves
|
||||
call CheckMoveInList
|
||||
pop hl
|
||||
ret nc
|
||||
|
@ -371,13 +371,6 @@ CantMove:
|
|||
res SUBSTATUS_UNDERWATER, [hl]
|
||||
jp AppearUserRaiseSub
|
||||
|
||||
.fly_dig_moves
|
||||
dw FLY
|
||||
dw DIG
|
||||
dw BOUNCE
|
||||
dw WATER_SPORT
|
||||
dw -1
|
||||
|
||||
OpponentCantMove:
|
||||
call BattleCommand_SwitchTurn
|
||||
call CantMove
|
||||
|
@ -1370,7 +1363,13 @@ BattleCommand_Stab:
|
|||
ld a, BATTLE_VARS_MOVE_TYPE
|
||||
call GetBattleVar
|
||||
ld b, a
|
||||
ld a, [wBattleType]
|
||||
cp BATTLETYPE_INVERSE
|
||||
jr z, .inverse
|
||||
ld hl, TypeMatchups
|
||||
jr .TypesLoop
|
||||
.inverse
|
||||
ld hl, InverseTypeMatchups
|
||||
|
||||
.TypesLoop:
|
||||
; ld a, [hli]
|
||||
|
@ -1497,7 +1496,13 @@ CheckTypeMatchup:
|
|||
ld c, [hl]
|
||||
ld a, EFFECTIVE
|
||||
ld [wTypeMatchup], a
|
||||
ld a, [wBattleType]
|
||||
cp BATTLETYPE_INVERSE
|
||||
jr z, .inverse
|
||||
ld hl, TypeMatchups
|
||||
jr .TypesLoop
|
||||
.inverse
|
||||
ld hl, InverseTypeMatchups
|
||||
.TypesLoop:
|
||||
; ld a, [hli]
|
||||
call GetNextTypeMatchupsByte
|
||||
|
@ -1511,7 +1516,6 @@ CheckTypeMatchup:
|
|||
bit SUBSTATUS_IDENTIFIED, a
|
||||
jr nz, .End
|
||||
jr .TypesLoop
|
||||
|
||||
.Next:
|
||||
cp d
|
||||
jr nz, .Nope
|
||||
|
@ -1788,6 +1792,7 @@ BattleCommand_CheckHit:
|
|||
call GetBattleVar
|
||||
and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
|
||||
jr nz, .flying_or_underground
|
||||
|
||||
ld a, BATTLE_VARS_SUBSTATUS4_OPP
|
||||
call GetBattleVar
|
||||
and 1 << SUBSTATUS_UNDERWATER
|
||||
|
@ -1795,12 +1800,34 @@ BattleCommand_CheckHit:
|
|||
|
||||
ld a, BATTLE_VARS_MOVE_ANIM
|
||||
call GetBattleVar
|
||||
cp SURF
|
||||
ld hl, SURF
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(SURF)
|
||||
cp HIGH(SURF)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(SURF)
|
||||
ret z
|
||||
cp WHIRLPOOL
|
||||
ld hl, WHIRLPOOL
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(WHIRLPOOL)
|
||||
cp HIGH(WHIRLPOOL)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(WHIRLPOOL)
|
||||
ret
|
||||
.flying_or_underground
|
||||
|
||||
.flying_or_underground
|
||||
bit SUBSTATUS_FLYING, a
|
||||
ld hl, .FlyMoves
|
||||
jr z, .check_move_in_list
|
||||
|
@ -2071,18 +2098,11 @@ BattleCommand_MoveAnimNoSub:
|
|||
|
||||
ld a, BATTLE_VARS_MOVE_ANIM
|
||||
call GetBattleVar
|
||||
ld hl, .fly_dig_moves
|
||||
ld hl, FlyDigMoves
|
||||
call CheckMoveInList
|
||||
ret nc
|
||||
jp AppearUserLowerSub
|
||||
|
||||
.fly_dig_moves
|
||||
dw FLY
|
||||
dw DIG
|
||||
dw BOUNCE
|
||||
dw WATER_SPORT
|
||||
dw -1
|
||||
|
||||
.alternate_anim
|
||||
ld a, [wBattleAnimParam]
|
||||
and 1
|
||||
|
@ -2167,7 +2187,7 @@ BattleCommand_FailureText:
|
|||
call GetBattleVarAddr
|
||||
|
||||
push hl
|
||||
ld hl, .fly_dig_moves
|
||||
ld hl, FlyDigMoves
|
||||
call CheckMoveInList
|
||||
pop hl
|
||||
jr c, .fly_dig
|
||||
|
@ -2200,13 +2220,6 @@ BattleCommand_FailureText:
|
|||
call AppearUserRaiseSub
|
||||
jp EndMoveEffect
|
||||
|
||||
.fly_dig_moves
|
||||
dw FLY
|
||||
dw DIG
|
||||
dw WATER_SPORT
|
||||
dw BOUNCE
|
||||
dw -1
|
||||
|
||||
BattleCommand_ApplyDamage:
|
||||
ld a, BATTLE_VARS_SUBSTATUS1_OPP
|
||||
call GetBattleVar
|
||||
|
@ -5645,26 +5658,134 @@ BattleCommand_Charge:
|
|||
call LoadMoveAnim
|
||||
ld a, BATTLE_VARS_MOVE_ANIM
|
||||
call GetBattleVar
|
||||
|
||||
ld hl, .fly_dig_moves ; attempt to resolve 16-bit issue with bounce and water sport - this can probably be made more efficient with a farcallable list
|
||||
call CheckMoveInList
|
||||
ld hl, WATER_SPORT
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(WATER_SPORT)
|
||||
cp HIGH(WATER_SPORT)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
jr c, .got_move_type
|
||||
ret nz
|
||||
cp LOW(WATER_SPORT)
|
||||
jp z, .set_diving
|
||||
ld hl, FLY
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(FLY)
|
||||
cp HIGH(FLY)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(FLY)
|
||||
jr z, .set_flying
|
||||
ld hl, BOUNCE
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(BOUNCE)
|
||||
cp HIGH(BOUNCE)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(BOUNCE)
|
||||
jr z, .set_flying
|
||||
ld hl, DIG
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(DIG)
|
||||
cp HIGH(DIG)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(DIG)
|
||||
jr z, .set_flying
|
||||
call BattleCommand_RaiseSub
|
||||
xor a
|
||||
jr .not_flying
|
||||
|
||||
.got_move_type
|
||||
; a will contain the substatus 3 bit to set (1 << bit), or 0 if none (not flying/digging underground)
|
||||
and a
|
||||
ld l, a
|
||||
push hl
|
||||
call nz, DisappearUser
|
||||
.flying
|
||||
call DisappearUser
|
||||
.not_flying
|
||||
ld a, BATTLE_VARS_SUBSTATUS3
|
||||
call GetBattleVarAddr
|
||||
pop bc
|
||||
ld a, c
|
||||
or [hl]
|
||||
ld [hl], a
|
||||
ld a, BATTLE_VARS_MOVE_ANIM
|
||||
call GetBattleVar
|
||||
ld b, a
|
||||
ld hl, WATER_SPORT
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(WATER_SPORT)
|
||||
cp HIGH(WATER_SPORT)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(WATER_SPORT)
|
||||
jr z, .set_diving
|
||||
ld hl, FLY
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(FLY)
|
||||
cp HIGH(FLY)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(FLY)
|
||||
jr z, .set_flying
|
||||
ld hl, BOUNCE
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(BOUNCE)
|
||||
cp HIGH(BOUNCE)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(BOUNCE)
|
||||
jr z, .set_flying
|
||||
ld hl, DIG
|
||||
call GetMoveIDFromIndex
|
||||
ld a, h
|
||||
if HIGH(DIG)
|
||||
cp HIGH(DIG)
|
||||
else
|
||||
and a
|
||||
endc
|
||||
ld a, l
|
||||
pop hl
|
||||
ret nz
|
||||
cp LOW(DIG)
|
||||
jr z, .set_flying
|
||||
jr nz, .dont_set_digging
|
||||
set SUBSTATUS_UNDERGROUND, [hl]
|
||||
jr .dont_set_digging
|
||||
|
||||
.set_diving
|
||||
ld a, BATTLE_VARS_SUBSTATUS4
|
||||
call GetBattleVarAddr
|
||||
set SUBSTATUS_UNDERWATER, [hl]
|
||||
jr .dont_set_digging
|
||||
.set_flying
|
||||
set SUBSTATUS_FLYING, [hl]
|
||||
|
||||
.dont_set_digging
|
||||
call CheckUserIsCharging
|
||||
jr nz, .mimic
|
||||
ld a, BATTLE_VARS_LAST_COUNTER_MOVE
|
||||
|
@ -5750,13 +5871,6 @@ BattleCommand_Charge:
|
|||
text_jump HidUnderwaterText
|
||||
db "@"
|
||||
|
||||
.fly_dig_moves
|
||||
dw FLY
|
||||
dw DIG
|
||||
dw BOUNCE
|
||||
dw WATER_SPORT
|
||||
dw -1
|
||||
|
||||
BattleCommand_TrapTarget:
|
||||
ld a, [wAttackMissed]
|
||||
and a
|
||||
|
@ -6132,6 +6246,7 @@ BattleCommand_DoubleUnderwaterDamage:
|
|||
ld a, BATTLE_VARS_SUBSTATUS4_OPP
|
||||
call GetBattleVar
|
||||
bit SUBSTATUS_UNDERWATER, a
|
||||
ret z
|
||||
; fallthrough
|
||||
|
||||
DoubleDamage:
|
||||
|
@ -6952,3 +7067,10 @@ CheckMoveInList:
|
|||
pop de
|
||||
pop bc
|
||||
ret
|
||||
|
||||
FlyDigMoves:
|
||||
dw FLY
|
||||
dw DIG
|
||||
dw BOUNCE
|
||||
dw WATER_SPORT
|
||||
dw -1
|
||||
|
|
|
@ -8,12 +8,12 @@ DebugRoom_MapScripts:
|
|||
|
||||
DebugPokemon1Script:
|
||||
opentext
|
||||
getmonname STRING_BUFFER_3, AZUMARILL
|
||||
getmonname STRING_BUFFER_3, BIPULLA
|
||||
writetext ReceivedDebugPokemonText
|
||||
playsound SFX_CAUGHT_MON
|
||||
waitsfx
|
||||
promptbutton
|
||||
givepoke AZUMARILL, 4, HM_WATER_SPORT
|
||||
givepoke BIPULLA, 15, HM_WATER_SPORT
|
||||
closetext
|
||||
end
|
||||
|
||||
|
@ -39,11 +39,11 @@ DebugPokemon3Script:
|
|||
faceplayer
|
||||
opentext
|
||||
writetext DebugTextA
|
||||
cry STROMEN
|
||||
cry BELLSPROUT
|
||||
pause 15
|
||||
closetext
|
||||
loadvar VAR_BATTLETYPE, BATTLETYPE_SHINY
|
||||
loadwildmon COATL, 75
|
||||
loadvar VAR_BATTLETYPE, BATTLETYPE_INVERSE
|
||||
loadwildmon BELLSPROUT, 10
|
||||
startbattle
|
||||
reloadmapafterbattle
|
||||
end
|
||||
|
@ -56,11 +56,11 @@ DebugPokemon4Script:
|
|||
faceplayer
|
||||
opentext
|
||||
writetext DebugTextB
|
||||
cry STROMEN
|
||||
cry BELLSPROUT
|
||||
pause 15
|
||||
closetext
|
||||
loadvar VAR_BATTLETYPE, BATTLETYPE_SUICUNE
|
||||
loadwildmon COATL, 75
|
||||
loadwildmon BELLSPROUT, 10
|
||||
startbattle
|
||||
reloadmapafterbattle
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue