diff options
Diffstat (limited to 'data/battle')
-rw-r--r-- | data/battle/accuracy_multipliers.asm | 17 | ||||
-rw-r--r-- | data/battle/battle_text.asm | 1293 | ||||
-rw-r--r-- | data/battle/critical_hits.asm | 18 | ||||
-rw-r--r-- | data/battle/effect_command_pointers.asm | 182 | ||||
-rw-r--r-- | data/battle/stat_multipliers.asm | 17 | ||||
-rw-r--r-- | data/battle/stat_names.asm | 10 | ||||
-rw-r--r-- | data/battle/type_boost_items.asm | 20 | ||||
-rw-r--r-- | data/battle/type_matchups.asm | 119 |
8 files changed, 1676 insertions, 0 deletions
diff --git a/data/battle/accuracy_multipliers.asm b/data/battle/accuracy_multipliers.asm new file mode 100644 index 000000000..a5a309bbd --- /dev/null +++ b/data/battle/accuracy_multipliers.asm @@ -0,0 +1,17 @@ +; Multiplier ratios for accuracy from modifier -6 to +6 +; (for other stats, see data/battle/stat_multipliers.asm) + +AccuracyLevelMultipliers: + db 33, 100 ; -6 = 33% + db 36, 100 ; -5 = 36% + db 43, 100 ; -4 = 43% + db 50, 100 ; -3 = 50% + db 60, 100 ; -2 = 60% + db 75, 100 ; -1 = 75% + db 1, 1 ; 0 = 100% + db 133, 100 ; +1 = 133% + db 166, 100 ; +2 = 166% + db 2, 1 ; +3 = 200% + db 233, 100 ; +4 = 233% + db 133, 50 ; +5 = 266% + db 3, 1 ; +6 = 300% diff --git a/data/battle/battle_text.asm b/data/battle/battle_text.asm new file mode 100644 index 000000000..eaff02017 --- /dev/null +++ b/data/battle/battle_text.asm @@ -0,0 +1,1293 @@ +BattleText:: + +BattleText_PlayerPickedUpPayDayMoney: ; 0x80730 + text "<PLAYER> picked up" + line "¥@" + deciram wPayDayMoney, 3, 6 + text "!" + prompt +; 0x80746 + +WildPokemonAppearedText: ; 0x80746 + text "Wild @" + text_from_ram EnemyMonNick + text_start + line "appeared!" + prompt +; 0x8075c + +HookedPokemonAttackedText: ; 0x8075c + text "The hooked" + line "@" + text_from_ram EnemyMonNick + text_start + cont "attacked!" + prompt +; 0x80778 + +PokemonFellFromTreeText: ; 0x80778 + text_from_ram EnemyMonNick + text " fell" + line "out of the tree!" + prompt +; 0x80793 + +WildCelebiAppearedText: ; 0x80793 + text "Wild @" + text_from_ram EnemyMonNick + text_start + line "appeared!" + prompt +; 0x807a9 + +WantsToBattleText:: ; 0x807a9 + text "<ENEMY>" + line "wants to battle!" + prompt +; 0x807bd + +BattleText_WildFled: ; 0x807bd + text "Wild @" + text_from_ram EnemyMonNick + text_start + line "fled!" + prompt +; 0x807cf + +BattleText_EnemyFled: ; 0x807cf + text "Enemy @" + text_from_ram EnemyMonNick + text_start + line "fled!" + prompt +; 0x807e2 + +HurtByPoisonText: ; 0x807e2 + text "<USER>" + line "is hurt by poison!" + prompt +; 0x807f8 + +HurtByBurnText: ; 0x807f8 + text "<USER>'s" + line "hurt by its burn!" + prompt +; 0x8080e + +LeechSeedSapsText: ; 0x8080e + text "LEECH SEED saps" + line "<USER>!" + prompt +; 0x80822 + +HasANightmareText: ; 0x80822 + text "<USER>" + line "has a NIGHTMARE!" + prompt +; 0x80836 + +HurtByCurseText: ; 0x80836 + text "<USER>'s" + line "hurt by the CURSE!" + prompt +; 0x8084d + +SandstormHitsText: ; 0x8084d + text "The SANDSTORM hits" + line "<USER>!" + prompt +; 0x80864 + +PerishCountText: ; 0x80864 + text "<USER>'s" + line "PERISH count is @" + deciram wd265, 1, 1 + text "!" + prompt +; 0x80880 + +BattleText_TargetRecoveredWithItem: ; 0x80880 + text "<TARGET>" + line "recovered with" + cont "@" + text_from_ram StringBuffer1 + text "." + prompt +; 0x80899 + +BattleText_UserRecoveredPPUsing: ; 0x80899 + text "<USER>" + line "recovered PP using" + cont "@" + text_from_ram StringBuffer1 + text "." + prompt +; 0x808b6 + +BattleText_TargetWasHitByFutureSight: ; 0x808b6 + text "<TARGET>" + line "was hit by FUTURE" + cont "SIGHT!" + prompt +; 0x808d2 + +BattleText_SafeguardFaded: ; 0x808d2 + text "<USER>'s" + line "SAFEGUARD faded!" + prompt +; 0x808e7 + +BattleText_PkmnLightScreenFell: ; 0x808e7 + text_from_ram StringBuffer1 + text " #MON's" + line "LIGHT SCREEN fell!" + prompt +; 0x80905 + +BattleText_PkmnReflectFaded: ; 0x80905 + text_from_ram StringBuffer1 + text " #MON's" + line "REFLECT faded!" + prompt +; 0x8091f + +BattleText_RainContinuesToFall: ; 0x8091f + text "Rain continues to" + line "fall." + prompt +; 0x80938 + +BattleText_TheSunlightIsStrong: ; 0x80938 + text "The sunlight is" + line "strong." + prompt +; 0x80951 + +BattleText_TheSandstormRages: ; 0x80951 + text "The SANDSTORM" + line "rages." + prompt +; 0x80967 + +BattleText_TheRainStopped: ; 0x80967 + text "The rain stopped." + prompt +; 0x8097a + +BattleText_TheSunlightFaded: ; 0x8097a + text "The sunlight" + line "faded." + prompt +; 0x8098f + +BattleText_TheSandstormSubsided: ; 0x8098f + text "The SANDSTORM" + line "subsided." + prompt +; 0x809a8 + +BattleText_EnemyPkmnFainted: ; 0x809a8 + text "Enemy @" + text_from_ram EnemyMonNick + text_start + line "fainted!" + prompt +; 0x809be + +GotMoneyForWinningText: + text "<PLAYER> got ¥@" + deciram wBattleReward, 3, 6 + text_start + line "for winning!" + prompt + +BattleText_EnemyWasDefeated: ; 0x809da + text "<ENEMY>" + line "was defeated!" + prompt +; 0x809eb + +TiedAgainstText: ; 0x809eb + text "Tied against" + line "<ENEMY>!" + prompt +; 0x809fc + +SentSomeToMomText: + text "<PLAYER> got ¥@" + deciram wBattleReward, 3, 6 + text_start + line "for winning!" + cont "Sent some to MOM!" + prompt + +SentHalfToMomText: + text "Sent half to MOM!" + prompt + +SentAllToMomText: + text "Sent all to MOM!" + prompt + +BattleText_0x80a4f: ; 0x80a4f + text "<RIVAL>: Huh? I" + line "should've chosen" + cont "your #MON!" + prompt +; 0x80a75 + +BattleText_PkmnFainted: ; 0x80a75 + text_from_ram BattleMonNick + text_start + line "fainted!" + prompt +; 0x80a83 + +BattleText_UseNextMon: ; 0x80a83 + text "Use next #MON?" + done +; 0x80a93 + +BattleText_0x80a93: ; 0x80a93 + text "<RIVAL>: Yes!" + line "I guess I chose a" + cont "good #MON!" + prompt +; 0x80ab9 + +LostAgainstText: ; 0x80ab9 + text "Lost against" + line "<ENEMY>!" + prompt +; 0x80aca + +BattleText_EnemyIsAboutToUseWillPlayerChangePkmn: ; 0x80aca + text "<ENEMY>" + line "is about to use" + cont "@" + text_from_ram EnemyMonNick + text "." + + para "Will <PLAYER>" + line "change #MON?" + done +; 0x80af8 + +BattleText_EnemySentOut: ; 0x80af8 + text "<ENEMY>" + line "sent out" + cont "@" + text_from_ram EnemyMonNick + text "!" + done +; 0x80b0b + +BattleText_TheresNoWillToBattle: ; 0x80b0b + text "There's no will to" + line "battle!" + prompt +; 0x80b26 + +BattleText_AnEGGCantBattle: ; 0x80b26 + text "An EGG can't" + line "battle!" + prompt +; 0x80b3b + +BattleText_CantEscape2: ; 0x80b3b + text "Can't escape!" + prompt +; 0x80b49 + +BattleText_TheresNoEscapeFromTrainerBattle: ; 0x80b49 + text "No! There's no" + line "running from a" + cont "trainer battle!" + prompt + +BattleText_GotAwaySafely: ; 0x80b77 + text "Got away safely!" + prompt + +BattleText_UserFledUsingAStringBuffer1: ; 0x80b89 + text "<USER>" + line "fled using a" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x80ba0 + +BattleText_CantEscape: ; 0x80ba0 + text "Can't escape!" + prompt +; 0x80bae + +BattleText_UserHurtBySpikes: ; 0x80bae + text "<USER>'s" + line "hurt by SPIKES!" + prompt +; 0x80bc2 + +RecoveredUsingText: ; 0x80bc2 + text "<TARGET>" + line "recovered using a" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x80bde + +BattleText_UsersStringBuffer1Activated: ; 0x80bde + text "<USER>'s" + line "@" + text_from_ram StringBuffer1 + text_start + cont "activated!" + prompt +; 0x80bf3 + +BattleText_ItemsCantBeUsedHere: ; 0x80bf3 + text "Items can't be" + line "used here." + prompt +; 0x80c0d + +BattleText_PkmnIsAlreadyOut: ; 0x80c0d + text_from_ram BattleMonNick + text_start + line "is already out." + prompt +; 0x80c22 + +BattleText_PkmnCantBeRecalled: ; 0x80c22 + text_from_ram BattleMonNick + text_start + line "can't be recalled!" + prompt +; 0x80c39 + +BattleText_TheresNoPPLeftForThisMove: ; 0x80c39 + text "There's no PP left" + line "for this move!" + prompt +; 0x80c5b + +BattleText_TheMoveIsDisabled: ; 0x80c5b + text "The move is" + line "DISABLED!" + prompt +; 0x80c72 + +BattleText_PkmnHasNoMovesLeft: ; 0x80c72 + text_from_ram BattleMonNick + text_start + line "has no moves left!" + done +; 0x80c8a + +BattleText_TargetsEncoreEnded: ; 0x80c8a + text "<TARGET>'s" + line "ENCORE ended!" + prompt +; 0x80c9c + +BattleText_StringBuffer1GrewToLevel: ; 0x80c9c + text_from_ram StringBuffer1 + text " grew to" + line "level @" + deciram CurPartyLevel, 1, 3 + text "!@" + sound_dex_fanfare_50_79 + db "@@" +; 0x80cb9 + +BattleText_WildPkmnIsEating: ; 0x80cba + text "Wild @" + text_from_ram EnemyMonNick + text_start + line "is eating!" + prompt +; 0x80cd1 + +BattleText_WildPkmnIsAngry: ; 0x80cd1 + text "Wild @" + text_from_ram EnemyMonNick + text_start + line "is angry!" + prompt +; 0x80ce7 + +FastAsleepText: ; 0x80ce7 + text "<USER>" + line "is fast asleep!" + prompt +; 0x80cfa + +WokeUpText: ; 0x80cfa + text "<USER>" + line "woke up!" + prompt +; 0x80d06 + +FrozenSolidText: ; 0x80d06 + text "<USER>" + line "is frozen solid!" + prompt +; 0x80d1a + +FlinchedText: ; 0x80d1a + text "<USER>" + line "flinched!" + prompt +; 0x80d27 + +MustRechargeText: ; 0x80d27 + text "<USER>" + line "must recharge!" + prompt +; 0x80d39 + +DisabledNoMoreText: ; 0x80d39 + text "<USER>'s" + line "disabled no more!" + prompt +; 0x80d4f + +IsConfusedText: ; 0x80d4f + text "<USER>" + line "is confused!" + prompt +; 0x80d5f + +HurtItselfText: ; 0x80d5f + text "It hurt itself in" + line "its confusion!" + prompt +; 0x80d81 + +ConfusedNoMoreText: ; 0x80d81 + text "<USER>'s" + line "confused no more!" + prompt +; 0x80d97 + +BecameConfusedText: ; 0x80d97 + text "<TARGET>" + line "became confused!" + prompt +; ItemHealedConfusion + +BattleText_ItemHealedConfusion: ; ItemHealedConfusion + text "A @" + text_from_ram StringBuffer1 + text " rid" + line "<TARGET>" + cont "of its confusion." + prompt +; 0x80dcc + +AlreadyConfusedText: ; 0x80dcc + text "<TARGET>'s" + line "already confused!" + prompt +; 0x80de2 + +BattleText_UsersHurtByStringBuffer1: ; 0x80de2 + text "<USER>'s" + line "hurt by" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x80df5 + +BattleText_UserWasReleasedFromStringBuffer1: ; 0x80df5 + text "<USER>" + line "was released from" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x80e11 + +UsedBindText: ; 0x80e11 + text "<USER>" + line "used BIND on" + cont "<TARGET>!" + prompt +; 0x80e24 + +WhirlpoolTrapText: ; 0x80e24 + text "<TARGET>" + line "was trapped!" + prompt +; 0x80e34 + +FireSpinTrapText: ; 0x80e34 + text "<TARGET>" + line "was trapped!" + prompt +; 0x80e44 + +WrappedByText: ; 0x80e44 + text "<TARGET>" + line "was WRAPPED by" + cont "<USER>!" + prompt +; 0x80e59 + +ClampedByText: ; 0x80e59 + text "<TARGET>" + line "was CLAMPED by" + cont "<USER>!" + prompt +; 0x80e6e + +StoringEnergyText: ; 0x80e6e + text "<USER>" + line "is storing energy!" + prompt +; 0x80e84 + +UnleashedEnergyText: ; 0x80e84 + text "<USER>" + line "unleashed energy!" + prompt +; 0x80e99 + +HungOnText: ; 0x80e99 + text "<TARGET>" + line "hung on with" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x80eb0 + +EnduredText: ; 0x80eb0 + text "<TARGET>" + line "ENDURED the hit!" + prompt +; 0x80ec4 + +InLoveWithText: ; 0x80ec4 + text "<USER>" + line "is in love with" + cont "<TARGET>!" + prompt +; 0x80eda + +InfatuationText: ; 0x80eda + text "<USER>'s" + line "infatuation kept" + cont "it from attacking!" + prompt +; 0x80f02 + +DisabledMoveText: ; 0x80f02 + text "<USER>'s" + line "@" + text_from_ram StringBuffer1 + text " is" + cont "DISABLED!" + prompt +; 0x80f19 + +LoafingAroundText: ; 0x80f19 + text_from_ram BattleMonNick + text " is" + line "loafing around." + prompt +; 0x80f31 + +BeganToNapText: ; 0x80f31 + text_from_ram BattleMonNick + text " began" + line "to nap!" + prompt +; 0x80f44 + +WontObeyText: ; 0x80f44 + text_from_ram BattleMonNick + text " won't" + line "obey!" + prompt +; 0x80f54 + +TurnedAwayText: ; 0x80f54 + text_from_ram BattleMonNick + text " turned" + line "away!" + prompt +; 0x80f66 + +IgnoredOrdersText: ; 0x80f66 + text_from_ram BattleMonNick + text " ignored" + line "orders!" + prompt +; 0x80f7b + +IgnoredSleepingText: ; 0x80f7b + text_from_ram BattleMonNick + text " ignored" + line "orders…sleeping!" + prompt +; 0x80f99 + +NoPPLeftText: ; 0x80f99 + text "But no PP is left" + line "for the move!" + prompt +; 0x80fba + +HasNoPPLeftText: ; 0x80fba + text "<USER>" + line "has no PP left for" + cont "@" + text_from_ram StringBuffer2 + text "!" + prompt +; 0x80fd7 + +WentToSleepText: ; 0x80fd7 + text "<USER>" + line "went to sleep!" + done +; 0x80fe9 + +RestedText: ; 0x80fe9 + text "<USER>" + line "fell asleep and" + cont "became healthy!" + done +; 0x8100c + +RegainedHealthText: ; 0x8100c + text "<USER>" + line "regained health!" + prompt +; 0x81020 + +AttackMissedText: ; 0x81020 + text "<USER>'s" + line "attack missed!" + prompt +; 0x81033 + +AttackMissed2Text: ; 0x81033 + text "<USER>'s" + line "attack missed!" + prompt +; 0x81046 + +CrashedText: ; 0x81046 + text "<USER>" + line "kept going and" + cont "crashed!" + prompt +; 0x81061 + +UnaffectedText: ; 0x81061 + text "<TARGET>'s" + line "unaffected!" + prompt +; 0x81071 + +DoesntAffectText: ; 0x81071 + text "It doesn't affect" + line "<TARGET>!" + prompt +; 0x81086 + +CriticalHitText: ; 0x81086 + text "A critical hit!" + prompt +; 0x81097 + +OneHitKOText: ; 0x81097 + text "It's a one-hit KO!" + prompt +; 0x810aa + +SuperEffectiveText: ; 0x810aa + text "It's super-" + line "effective!" + prompt +; 0x810c1 + +NotVeryEffectiveText: ; 0x810c1 + text "It's not very" + line "effective…" + prompt +; 0x810da + +TookDownWithItText: ; 0x810da + text "<TARGET>" + line "took down with it," + cont "<USER>!" + prompt +; 0x810f3 + +RageBuildingText: ; 0x810f3 + text "<USER>'s" + line "RAGE is building!" + prompt +; 0x81109 + +GotAnEncoreText: ; 0x81109 + text "<TARGET>" + line "got an ENCORE!" + prompt +; 0x8111b + +SharedPainText: ; 0x8111b + text "The battlers" + line "shared pain!" + prompt +; 0x81136 + +TookAimText: ; 0x81136 + text "<USER>" + line "took aim!" + prompt +; 0x81143 + +SketchedText: ; 0x81143 + text "<USER>" + line "SKETCHED" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x81156 + +DestinyBondEffectText: ; 0x81156 + text "<USER>'s" + line "trying to take its" + cont "opponent with it!" + prompt +; 0x8117f + +SpiteEffectText: ; 0x8117f + text "<TARGET>'s" + line "@" + text_from_ram StringBuffer1 + text " was" + cont "reduced by @" + deciram wd265, 1, 1 + text "!" + prompt +; 0x811a0 + +BellChimedText: ; 0x811a0 + text "A bell chimed!" + line "" + prompt +; 0x811b1 + +FellAsleepText: ; 0x811b1 + text "<TARGET>" + line "fell asleep!" + prompt +; 0x811c1 + +AlreadyAsleepText: ; 0x811c1 + text "<TARGET>'s" + line "already asleep!" + prompt +; 0x811d5 + +WasPoisonedText: ; 0x811d5 + text "<TARGET>" + line "was poisoned!" + prompt +; 0x811e6 + +BadlyPoisonedText: ; 0x811e6 + text "<TARGET>'s" + line "badly poisoned!" + prompt +; 0x811fa + +AlreadyPoisonedText: ; 0x811fa + text "<TARGET>'s" + line "already poisoned!" + prompt +; 0x81210 + +SuckedHealthText: ; 0x81210 + text "Sucked health from" + line "<TARGET>!" + prompt +; 0x81227 + +DreamEatenText: ; 0x81227 + text "<TARGET>'s" + line "dream was eaten!" + prompt +; 0x8123c + +WasBurnedText: ; 0x8123c + text "<TARGET>" + line "was burned!" + prompt +; 0x8124b + +DefrostedOpponentText: ; 0x8124b + text "<TARGET>" + line "was defrosted!" + prompt +; 0x8125d + +WasFrozenText: ; 0x8125d + text "<TARGET>" + line "was frozen solid!" + prompt +; 0x81272 + +WontRiseAnymoreText: ; 0x81272 + text "<USER>'s" + line "@" + text_from_ram StringBuffer2 + text " won't" + cont "rise anymore!" + prompt +; 0x8128f + +WontDropAnymoreText: ; 0x8128f + text "<TARGET>'s" + line "@" + text_from_ram StringBuffer2 + text " won't" + cont "drop anymore!" + prompt +; 0x812ac + +FledFromBattleText:: ; 0x812ac + text "<USER>" + line "fled from battle!" + prompt +; 0x812c1 + +FledInFearText: ; 0x812c1 + text "<TARGET>" + line "fled in fear!" + prompt +; 0x812d2 + +BlownAwayText: ; 0x812d2 + text "<TARGET>" + line "was blown away!" + prompt +; 0x812e5 + +PlayerHitTimesText: ; 0x812e5 + text "Hit @" + deciram PlayerDamageTaken, 1, 1 + text " times!" + prompt +; 0x812f8 + +EnemyHitTimesText: ; 0x812f8 + text "Hit @" + deciram EnemyDamageTaken, 1, 1 + text " times!" + prompt +; 0x8130b + +MistText: ; 0x8130b + text "<USER>'s" + line "shrouded in MIST!" + prompt +; 0x81321 + +ProtectedByMistText: ; 0x81321 + text "<TARGET>'s" + line "protected by MIST." + prompt +; 0x81338 + +GettingPumpedText: ; 0x81338 + interpret_data + text "<USER>'s" + line "getting pumped!" + prompt +; 0x8134d + +RecoilText: ; 0x8134d + text "<USER>'s" + line "hit with recoil!" + prompt +; 0x81362 + +MadeSubstituteText: ; 0x81362 + text "<USER>" + line "made a SUBSTITUTE!" + prompt +; 0x81378 + +HasSubstituteText: ; 0x81378 + text "<USER>" + line "has a SUBSTITUTE!" + prompt +; 0x8138d + +TooWeakSubText: ; 0x8138d + text "Too weak to make" + line "a SUBSTITUTE!" + prompt +; 0x813ad + +SubTookDamageText: ; 0x813ad + text "The SUBSTITUTE" + line "took damage for" + cont "<TARGET>!" + prompt +; 0x813d0 + +SubFadedText: ; 0x813d0 + text "<TARGET>'s" + line "SUBSTITUTE faded!" + prompt +; 0x813e6 + +LearnedMoveText: ; 0x813e6 + text "<USER>" + line "learned" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x813f8 + +WasSeededText: ; 0x813f8 + text "<TARGET>" + line "was seeded!" + prompt +; 0x81407 + +EvadedText: ; 0x81407 + text "<TARGET>" + line "evaded the attack!" + prompt +; 0x8141d + +WasDisabledText: ; 0x8141d + text "<TARGET>'s" + line "@" + text_from_ram StringBuffer1 + text " was" + cont "DISABLED!" + prompt +; 0x81435 + +CoinsScatteredText: ; 0x81435 + text "Coins scattered" + line "everywhere!" + prompt +; 0x81452 + +TransformedTypeText: ; 0x81452 + text "<USER>" + line "transformed into" + cont "the @" + text_from_ram StringBuffer1 + text "-type!" + prompt +; 0x81476 + +EliminatedStatsText: ; 0x81476 + text "All stat changes" + line "were eliminated!" + prompt +; 0x81499 + +TransformedText: ; 0x81499 + text "<USER>" + line "TRANSFORMED into" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x814b4 + +LightScreenEffectText: ; 0x814b4 + text "<USER>'s" + line "SPCL.DEF rose!" + prompt +; 0x814c7 + +ReflectEffectText: ; 0x814c7 + text "<USER>'s" + line "DEFENSE rose!" + prompt +; 0x814d9 + +NothingHappenedText: ; 0x814d9 + text "But nothing" + line "happened." + prompt +; 0x814f0 + +ButItFailedText: ; 0x814f0 + text "But it failed!" + prompt +; 0x81500 + +ItFailedText: ; 0x81500 + text "It failed!" + prompt +; 0x8150c + +DidntAffect1Text: ; 0x8150c + text "It didn't affect" + line "<TARGET>!" + prompt +; 0x81520 + +DidntAffect2Text: ; 0x81520 + text "It didn't affect" + line "<TARGET>!" + prompt +; 0x81534 + +HPIsFullText: ; 0x81534 + text "<USER>'s" + line "HP is full!" + prompt +; 0x81544 + +DraggedOutText: ; 0x81544 + text "<USER>" + line "was dragged out!" + prompt +; 0x81558 + +ParalyzedText: ; 0x81558 + text "<TARGET>'s" + line "paralyzed! Maybe" + cont "it can't attack!" + prompt +; 0x8157d + +FullyParalyzedText: ; 0x8157d + text "<USER>'s" + line "fully paralyzed!" + prompt +; 0x81592 + +AlreadyParalyzedText: ; 0x81592 + text "<TARGET>'s" + line "already paralyzed!" + prompt +; 0x815a9 + +ProtectedByText: ; 0x815a9 + text "<TARGET>'s" + line "protected by" + cont "@" + text_from_ram StringBuffer1 + text "!" + prompt +; 0x815c1 + +MirrorMoveFailedText: ; 0x815c1 + text "The MIRROR MOVE" + next "failed!" + prompt +; 0x815da + +StoleText: ; 0x815da + text "<USER>" + line "stole @" + text_from_ram StringBuffer1 + text_start + cont "from its foe!" + prompt +; 0x815f7 + +CantEscapeNowText: ; 0x815f7 + text "<TARGET>" + line "can't escape now!" + prompt +; 0x8160b + +StartedNightmareText: ; 0x8160b + text "<TARGET>" + line "started to have a" + cont "NIGHTMARE!" + prompt +; 0x8162b + +WasDefrostedText: ; 0x8162b + text "<USER>" + line "was defrosted!" + prompt +; 0x8163d + +PutACurseText: ; 0x8163d + text "<USER>" + line "cut its own HP and" + + para "put a CURSE on" + line "<TARGET>!" + prompt +; 0x81665 + +ProtectedItselfText: ; 0x81665 + text "<USER>" + line "PROTECTED itself!" + prompt +; 0x8167a + +ProtectingItselfText: ; 0x8167a + text "<TARGET>'s" + line "PROTECTING itself!" + done +; 0x81691 + +SpikesText: ; 0x81691 + text "SPIKES scattered" + line "all around" + cont "<TARGET>!" + prompt +; 0x816b1 + +IdentifiedText: ; 0x816b1 + text "<USER>" + line "identified" + cont "<TARGET>!" + prompt +; 0x816c2 + +StartPerishText: ; 0x816c2 + text "Both #MON will" + line "faint in 3 turns!" + prompt +; 0x816e4 + +SandstormBrewedText: ; 0x816e4 + text "A SANDSTORM" + line "brewed!" + prompt +; 0x816f9 + +BracedItselfText: ; 0x816f9 + text "<USER>" + line "braced itself!" + prompt +; 0x8170b + +FellInLoveText: ; 0x8170b + text "<TARGET>" + line "fell in love!" + prompt +; 0x8171c + +CoveredByVeilText: ; 0x8171c + text "<USER>'s" + line "covered by a veil!" + prompt +; 0x81733 + +SafeguardProtectText: ; 0x81733 + text "<TARGET>" + line "is protected by" + cont "SAFEGUARD!" + prompt +; 0x81751 + +MagnitudeText: ; 0x81751 + text "Magnitude @" + deciram wd265, 1, 1 + text "!" + prompt +; 0x81764 + +ReleasedByText: ; 0x81764 + text "<USER>" + line "was released by" + cont "<TARGET>!" + prompt +; 0x8177a + +ShedLeechSeedText: ; 0x8177a + text "<USER>" + line "shed LEECH SEED!" + prompt +; 0x8178e + +BlewSpikesText: ; 0x8178e + text "<USER>" + line "blew away SPIKES!" + prompt +; 0x817a3 + +DownpourText: ; 0x817a3 + text "A downpour" + line "started!" + prompt +; 0x817b8 + +SunGotBrightText: ; 0x817b8 + text "The sunlight got" + line "bright!" + prompt +; 0x817d2 + +BellyDrumText: ; 0x817d2 + text "<USER>" + line "cut its HP and" + cont "maximized ATTACK!" + prompt +; 0x817f6 + +CopiedStatsText: ; 0x817f6 + text "<USER>" + line "copied the stat" + + para "changes of" + line "<TARGET>!" + prompt +; 0x81817 + +ForesawAttackText: ; 0x81817 + text "<USER>" + line "foresaw an attack!" + prompt +; 0x8182d + +BeatUpAttackText: ; 0x8182d + text_from_ram StringBuffer1 + text "'s" + line "attack!" + done +; 0x8183b + +RefusedGiftText: ; 0x8183b + text "<TARGET>" + line "refused the gift!" + prompt +; 0x81850 + +IgnoredOrders2Text: ; 0x81850 + text "<USER>" + line "ignored orders!" + prompt +; 0x81863 + +BattleText_LinkErrorBattleCanceled: ; 0x81863 + text "Link error…" + + para "The battle has" + line "been canceled…" + prompt +; 0x8188e + +BattleText_0x8188e: ; 0x8188e + text "There is no time" + line "left today!" + done +; 0x818ac diff --git a/data/battle/critical_hits.asm b/data/battle/critical_hits.asm new file mode 100644 index 000000000..5800d57f4 --- /dev/null +++ b/data/battle/critical_hits.asm @@ -0,0 +1,18 @@ +CriticalHitMoves: + db KARATE_CHOP + db RAZOR_WIND + db RAZOR_LEAF + db CRABHAMMER + db SLASH + db AEROBLAST + db CROSS_CHOP + db -1 + +CriticalHitChances: + db 7 percent ; 0 + db 12 percent + 2 ; +1 + db 25 percent + 1 ; +2 + db 33 percent + 1 ; +3 + db 50 percent + 1 ; +4 + db 50 percent + 1 ; +5 + db 50 percent + 1 ; +6 diff --git a/data/battle/effect_command_pointers.asm b/data/battle/effect_command_pointers.asm new file mode 100644 index 000000000..b3eeea273 --- /dev/null +++ b/data/battle/effect_command_pointers.asm @@ -0,0 +1,182 @@ +; battle commands are defined in engine/battle/effect_commands.asm + + dw 0 ; padding + +BattleCommandPointers: ; 3fd28 +; entries correspond to macros/scripts/battle_commands.asm + dw BattleCommand_CheckTurn ; 34084 + dw BattleCommand_CheckObedience ; 343db + dw BattleCommand_UsedMoveText ; 34541 + dw BattleCommand_DoTurn ; 34555 + dw BattleCommand_Critical ; 34631 + dw BattleCommand_DamageStats ; 352dc + dw BattleCommand_Stab ; 346d2 - 07 + dw BattleCommand_DamageVariation ; 34cfd + dw BattleCommand_CheckHit ; 34d32 + dw BattleCommand_LowerSub ; 34eee + dw BattleCommand_HitTargetNoSub ; 34f60 + dw BattleCommand_RaiseSub ; 35004 + dw BattleCommand_FailureText ; 35023 + dw BattleCommand_CheckFaint ; 3505e + dw BattleCommand_CriticalText ; 35175 + dw BattleCommand_SuperEffectiveText ; 351ad + dw BattleCommand_CheckDestinyBond ; 351c0 + dw BattleCommand_BuildOpponentRage ; 35250 + dw BattleCommand_PoisonTarget ; 35eee + dw BattleCommand_SleepTarget ; 35e5c + dw BattleCommand_DrainTarget ; 35fff + dw BattleCommand_EatDream ; 36008 + dw BattleCommand_BurnTarget ; 3608c + dw BattleCommand_FreezeTarget ; 36102 + dw BattleCommand_ParalyzeTarget ; 36165 + dw BattleCommand_Selfdestruct ; 37380 + dw BattleCommand_MirrorMove ; 373c9 + dw BattleCommand_StatUp ; 361e4 + dw BattleCommand_StatDown ; 362e3 + dw BattleCommand_PayDay ; 3705c + dw BattleCommand_Conversion ; 3707f + dw BattleCommand_ResetStats ; 3710e + dw BattleCommand_StoreEnergy ; 36671 + dw BattleCommand_UnleashEnergy ; 366e5 + dw BattleCommand_ForceSwitch ; 3680f + dw BattleCommand_EndLoop ; 369b6 + dw BattleCommand_FlinchTarget ; 36aa0 + dw BattleCommand_OHKO ; 36af3 + dw BattleCommand_Recoil ; 36cb2 + dw BattleCommand_Mist ; 36c7e + dw BattleCommand_FocusEnergy ; 36c98 + dw BattleCommand_Confuse ; 36d3b + dw BattleCommand_ConfuseTarget ; 36d1d + dw BattleCommand_Heal ; 3713e + dw BattleCommand_Transform ; 371cd + dw BattleCommand_Screen ; 372fc + dw BattleCommand_Poison ; 35f2c + dw BattleCommand_Paralyze ; 36dc7 + dw BattleCommand_Substitute ; 36e7c + dw BattleCommand_RechargeNextTurn ; 36f0b + dw BattleCommand_Mimic ; 36f46 + dw BattleCommand_Metronome ; 37418 + dw BattleCommand_LeechSeed ; 36f9d + dw BattleCommand_Splash ; 36fe1 + dw BattleCommand_Disable ; 36fed + dw BattleCommand_ClearText ; 37e85 + dw BattleCommand_Charge ; 36b4d + dw BattleCommand_CheckCharge ; 36b3a + dw BattleCommand_TrapTarget ; 36c2d + dw BattleCommand3c ; 36c2c + dw BattleCommand_Rampage ; 36751 + dw BattleCommand_CheckRampage ; 3671a + dw BattleCommand_ConstantDamage ; 35726 + dw BattleCommand_Counter ; 35813 + dw BattleCommand_Encore ; 35864 + dw BattleCommand_PainSplit ; 35926 + dw BattleCommand_Snore ; 359d0 + dw BattleCommand_Conversion2 ; 359e6 + dw BattleCommand_LockOn ; 35a53 + dw BattleCommand_Sketch ; 35a74 + dw BattleCommand_DefrostOpponent ; 35b16 + dw BattleCommand_SleepTalk ; 35b33 + dw BattleCommand_DestinyBond ; 35bff + dw BattleCommand_Spite ; 35c0f + dw BattleCommand_FalseSwipe ; 35c94 + dw BattleCommand_HealBell ; 35cc9 + dw BattleCommand_HeldFlinch ; 36ac9 + dw BattleCommand_TripleKick ; 346b2 + dw BattleCommand_KickCounter ; 346cd + dw BattleCommand_Thief ; 37492 + dw BattleCommand_ArenaTrap ; 37517 + dw BattleCommand_Nightmare ; 37536 + dw BattleCommand_Defrost ; 37563 + dw BattleCommand_Curse ; 37588 + dw BattleCommand_Protect ; 37618 + dw BattleCommand_Spikes ; 37683 + dw BattleCommand_Foresight ; 376a0 + dw BattleCommand_PerishSong ; 376c2 + dw BattleCommand_StartSandstorm ; 376f8 + dw BattleCommand_Endure ; 3766f + dw BattleCommand_CheckCurl ; 37718 + dw BattleCommand_RolloutPower ; 37734 + dw BattleCommand5d ; 37791 + dw BattleCommand_FuryCutter ; 37792 + dw BattleCommand_Attract ; 377ce + dw BattleCommand_HappinessPower ; 3784b + dw BattleCommand_Present ; 37874 + dw BattleCommand_DamageCalc ; 35612 - 62 + dw BattleCommand_FrustrationPower ; 3790e + dw BattleCommand_Safeguard ; 37939 + dw BattleCommand_CheckSafeguard ; 37972 + dw BattleCommand_GetMagnitude ; 37991 + dw BattleCommand_BatonPass ; 379c9 + dw BattleCommand_Pursuit ; 37b1d + dw BattleCommand_ClearHazards ; 37b39 + dw BattleCommand_HealMorn ; 37b74 + dw BattleCommand_HealDay ; 37b78 + dw BattleCommand_HealNite ; 37b7c + dw BattleCommand_HiddenPower ; 37be8 + dw BattleCommand_StartRain ; 37bf4 + dw BattleCommand_StartSun ; 37c07 + dw BattleCommand_AttackUp ; 361ac + dw BattleCommand_DefenseUp ; 361b0 + dw BattleCommand_SpeedUp ; 361b4 + dw BattleCommand_SpecialAttackUp ; 361b8 + dw BattleCommand_SpecialDefenseUp ; 361bc + dw BattleCommand_AccuracyUp ; 361c0 + dw BattleCommand_EvasionUp ; 361c4 + dw BattleCommand_AttackUp2 ; 361c8 + dw BattleCommand_DefenseUp2 ; 361cc + dw BattleCommand_SpeedUp2 ; 361d0 + dw BattleCommand_SpecialAttackUp2 ; 361d4 + dw BattleCommand_SpecialDefenseUp2 ; 361d8 + dw BattleCommand_AccuracyUp2 ; 361dc + dw BattleCommand_EvasionUp2 ; 361e0 + dw BattleCommand_AttackDown ; 362ad + dw BattleCommand_DefenseDown ; 362b1 + dw BattleCommand_SpeedDown ; 362b5 + dw BattleCommand_SpecialAttackDown ; 362b9 + dw BattleCommand_SpecialDefenseDown ; 362bd + dw BattleCommand_AccuracyDown ; 362c1 + dw BattleCommand_EvasionDown ; 362c5 + dw BattleCommand_AttackDown2 ; 362c9 + dw BattleCommand_DefenseDown2 ; 362cd + dw BattleCommand_SpeedDown2 ; 362d1 + dw BattleCommand_SpecialAttackDown2 ; 362d5 + dw BattleCommand_SpecialDefenseDown2 ; 362d9 + dw BattleCommand_AccuracyDown2 ; 362dd + dw BattleCommand_EvasionDown2 ; 362e1 + dw BattleCommand_StatUpMessage ; 363b8 + dw BattleCommand_StatDownMessage ; 363e9 + dw BattleCommand_StatUpFailText ; 3644c + dw BattleCommand_StatDownFailText ; 3646a + dw BattleCommand_EffectChance ; 34ecc + dw BattleCommand_StatDownAnim ; 34fdb + dw BattleCommand_StatUpAnim ; 34fd1 + dw BattleCommand_SwitchTurn ; 34ffd - 93 + dw BattleCommand_FakeOut ; 36a82 + dw BattleCommand_BellyDrum ; 37c1a + dw BattleCommand_PsychUp ; 37c55 + dw BattleCommand_Rage ; 36f1d + dw BattleCommand_DoubleFlyingDamage ; 36f25 + dw BattleCommand_DoubleUndergroundDamage ; 36f2f + dw BattleCommand_MirrorCoat ; 37c95 + dw BattleCommand_CheckFutureSight ; 37d0d + dw BattleCommand_FutureSight ; 37d34 + dw BattleCommand_DoubleMinimizeDamage ; 37ce6 + dw BattleCommand_SkipSunCharge ; 37d02 + dw BattleCommand_ThunderAccuracy ; 37d94 + dw BattleCommand_Teleport ; 36778 + dw BattleCommand_BeatUp ; 35461 + dw BattleCommand_RageDamage ; 3527b + dw BattleCommand_ResetTypeMatchup ; 34833 + dw BattleCommand_AllStatsUp ; 36500 + dw BattleCommanda5 ; 35165 + dw BattleCommand_RaiseSubNoAnim ; 365af + dw BattleCommand_LowerSubNoAnim ; 365c3 + dw BattleCommanda8 ; 355b5 + dw BattleCommand_ClearMissDamage ; 355d5 - a9 + dw BattleCommand_MoveDelay ; 37e80 + dw BattleCommand_HitTarget ; 34f57 + dw BattleCommand_TriStatusChance ; 3658f + dw BattleCommand_SuperEffectiveLoopText ; 351a5 + dw BattleCommand_StartLoop ; 35197 + dw BattleCommand_Curl ; 365a7 +; 3fe86 diff --git a/data/battle/stat_multipliers.asm b/data/battle/stat_multipliers.asm new file mode 100644 index 000000000..e7cf8e472 --- /dev/null +++ b/data/battle/stat_multipliers.asm @@ -0,0 +1,17 @@ +; Multiplier ratios for all stats from modifier -6 to +6 +; (except accuracy, see data/battle/accuracy_multipliers.asm) + +StatLevelMultipliers: + db 25, 100 ; -6 = 25% + db 28, 100 ; -5 = 28% + db 33, 100 ; -4 = 33% + db 40, 100 ; -3 = 40% + db 50, 100 ; -2 = 50% + db 66, 100 ; -1 = 66% + db 1, 1 ; 0 = 100% + db 15, 10 ; +1 = 150% + db 2, 1 ; +2 = 200% + db 25, 10 ; +3 = 250% + db 3, 1 ; +4 = 300% + db 35, 10 ; +5 = 350% + db 4, 1 ; +6 = 400% diff --git a/data/battle/stat_names.asm b/data/battle/stat_names.asm new file mode 100644 index 000000000..a144a225f --- /dev/null +++ b/data/battle/stat_names.asm @@ -0,0 +1,10 @@ +StatNames: +; entries correspond to stat ids + db "ATTACK@" + db "DEFENSE@" + db "SPEED@" + db "SPCL.ATK@" + db "SPCL.DEF@" + db "ACCURACY@" + db "EVASION@" + db "ABILITY@" ; used for BattleCommand_Curse diff --git a/data/battle/type_boost_items.asm b/data/battle/type_boost_items.asm new file mode 100644 index 000000000..3b7231a59 --- /dev/null +++ b/data/battle/type_boost_items.asm @@ -0,0 +1,20 @@ +TypeBoostItems: ; 35703 + db HELD_NORMAL_BOOST, NORMAL ; PINK_BOW/POLKADOT_BOW + db HELD_FIGHTING_BOOST, FIGHTING ; BLACKBELT + db HELD_FLYING_BOOST, FLYING ; SHARP_BEAK + db HELD_POISON_BOOST, POISON ; POISON BARB + db HELD_GROUND_BOOST, GROUND ; SOFT_SAND + db HELD_ROCK_BOOST, ROCK ; HARD_STONE + db HELD_BUG_BOOST, BUG ; SILVERPOWDER + db HELD_GHOST_BOOST, GHOST ; SPELL_TAG + db HELD_FIRE_BOOST, FIRE ; CHARCOAL + db HELD_WATER_BOOST, WATER ; MYSTIC WATER + db HELD_GRASS_BOOST, GRASS ; MIRACLE_SEED + db HELD_ELECTRIC_BOOST, ELECTRIC ; MAGNET + db HELD_PSYCHIC_BOOST, PSYCHIC ; TWISTEDSPOON + db HELD_ICE_BOOST, ICE ; NEVERMELTICE + db HELD_DRAGON_BOOST, DRAGON ; DRAGON_SCALE + db HELD_DARK_BOOST, DARK ; BLACKGLASSES + db HELD_STEEL_BOOST, STEEL ; METAL_COAT + db -1 +; 35726 diff --git a/data/battle/type_matchups.asm b/data/battle/type_matchups.asm new file mode 100644 index 000000000..90e38ae2c --- /dev/null +++ b/data/battle/type_matchups.asm @@ -0,0 +1,119 @@ +TypeMatchups: ; 34bb1 + ; 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 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, 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, 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 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, FIGHTING, SUPER_EFFECTIVE + db PSYCHIC, POISON, SUPER_EFFECTIVE + db PSYCHIC, PSYCHIC, NOT_VERY_EFFECTIVE + db PSYCHIC, DARK, NO_EFFECT + db PSYCHIC, 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, SUPER_EFFECTIVE + db BUG, GHOST, NOT_VERY_EFFECTIVE + db BUG, DARK, SUPER_EFFECTIVE + db BUG, STEEL, 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, 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 DARK, FIGHTING, NOT_VERY_EFFECTIVE + db DARK, PSYCHIC, SUPER_EFFECTIVE + db DARK, GHOST, SUPER_EFFECTIVE + db DARK, DARK, NOT_VERY_EFFECTIVE + db DARK, STEEL, 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 -2 ; end + +; Foresight removes Ghost's immunities. + db NORMAL, GHOST, NO_EFFECT + db FIGHTING, GHOST, NO_EFFECT + + db -1 ; end (with Foresight) +; 34cfd |