battle_main data decomp

This commit is contained in:
jiangzhengwenjz
2019-10-16 08:28:19 +08:00
parent 9243e792f3
commit a6c0088073
29 changed files with 1128 additions and 470 deletions
+467
View File
@@ -0,0 +1,467 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "battle_interface.h"
#include "battle_main.h"
#include "battle_message.h"
#include "battle_scripts.h"
#include "battle_setup.h"
#include "battle_tower.h"
#include "battle_string_ids.h"
#include "berry.h"
#include "bg.h"
#include "data.h"
#include "decompress.h"
#include "dma3.h"
#include "event_data.h"
#include "evolution_scene.h"
#include "graphics.h"
#include "gpu_regs.h"
#include "international_string_util.h"
#include "item.h"
#include "link.h"
#include "link_rfu.h"
#include "load_save.h"
#include "main.h"
#include "malloc.h"
#include "m4a.h"
#include "palette.h"
#include "party_menu.h"
#include "pokeball.h"
#include "pokedex.h"
#include "pokemon.h"
#include "random.h"
#include "roamer.h"
#include "safari_zone.h"
#include "scanline_effect.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "text.h"
#include "trig.h"
#include "util.h"
#include "window.h"
#include "cable_club.h"
#include "constants/abilities.h"
#include "constants/battle_move_effects.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/trainer_classes.h"
void sub_80111EC(struct Sprite *sprite);
void HandleAction_UseMove(void);
void HandleAction_Switch(void);
void HandleAction_UseItem(void);
void HandleAction_Run(void);
void HandleAction_WatchesCarefully(void);
void HandleAction_SafariZoneBallThrow(void);
void HandleAction_ThrowPokeblock(void);
void HandleAction_GoNear(void);
void HandleAction_SafariZoneRun(void);
void HandleAction_OldManBallThrow(void);
void HandleAction_TryFinish(void);
void HandleAction_NothingIsFainted(void);
void HandleAction_ActionFinished(void);
void HandleEndTurn_ContinueBattle(void);
void HandleEndTurn_BattleWon(void);
void HandleEndTurn_BattleLost(void);
void HandleEndTurn_RanFromBattle(void);
void HandleEndTurn_MonFled(void);
void HandleEndTurn_FinishBattle(void);
// TODO: put ewram variables here after resolving symbol ref in between
void (*gPreBattleCallback1)(void);
void (*gBattleMainFunc)(void);
struct BattleResults gBattleResults;
u8 gLeveledUpInBattle;
void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
u8 gMultiUsePlayerCursor;
u8 gNumberOfMovesToChoose;
u8 gUnknown_3004FFC[MAX_BATTLERS_COUNT];
const struct ScanlineEffectParams sIntroScanlineParams16Bit =
{
(void *)REG_ADDR_BG3HOFS, SCANLINE_EFFECT_DMACNT_16BIT, 1
};
const struct SpriteTemplate gUnknown_824EFF0 =
{
.tileTag = 0,
.paletteTag = 0,
.oam = &gDummyOamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_80111EC,
};
const u8 sText_ShedinjaJpnName[] = _("ヌケニン"); // Nukenin
const struct OamData gOamData_824F010 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
.bpp = ST_OAM_4BPP,
.shape = SPRITE_SHAPE(64x64),
.x = 0,
.size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 0,
.affineParam = 0,
};
const struct OamData gOamData_824F018 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
.bpp = ST_OAM_4BPP,
.shape = SPRITE_SHAPE(64x64),
.x = 0,
.size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 2,
.paletteNum = 2,
.affineParam = 0,
};
// not used
const union AnimCmd gUnknown_824F020[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_JUMP(0),
};
// not used
const union AnimCmd *const gUnknown_824F028 = gUnknown_824F020;
// not used
const union AffineAnimCmd gUnknown_824F02C[] =
{
AFFINEANIMCMD_FRAME(-0x10, 0x0, 0, 4),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 0x3C),
AFFINEANIMCMD_JUMP(1),
};
// not used
const union AffineAnimCmd *const gUnknown_824F044 = gUnknown_824F02C;
const s8 gUnknown_824F048[] ={ -32, -16, -16, -32, -32, 0, 0, 0 };
// format: attacking type, defending type, damage multiplier
// the multiplier is a (decimal) fixed-point number:
// 20 is ×2.0 TYPE_MUL_SUPER_EFFECTIVE
// 10 is ×1.0 TYPE_MUL_NORMAL
// 05 is ×0.5 TYPE_MUL_NOT_EFFECTIVE
// 00 is ×0.0 TYPE_MUL_NO_EFFECT
const u8 gTypeEffectiveness[336] =
{
TYPE_NORMAL, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_NORMAL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIRE, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIRE, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIRE, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIRE, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIRE, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIRE, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIRE, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIRE, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_WATER, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_WATER, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE,
TYPE_WATER, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE,
TYPE_WATER, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_WATER, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_WATER, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ELECTRIC, TYPE_WATER, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ELECTRIC, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ELECTRIC, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ELECTRIC, TYPE_GROUND, TYPE_MUL_NO_EFFECT,
TYPE_ELECTRIC, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ELECTRIC, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_WATER, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GRASS, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GRASS, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GRASS, TYPE_DRAGON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GRASS, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ICE, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ICE, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ICE, TYPE_ICE, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ICE, TYPE_GROUND, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ICE, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ICE, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ICE, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ICE, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIGHTING, TYPE_NORMAL, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIGHTING, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIGHTING, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIGHTING, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIGHTING, TYPE_PSYCHIC, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIGHTING, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FIGHTING, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIGHTING, TYPE_DARK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FIGHTING, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_POISON, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_POISON, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_POISON, TYPE_GROUND, TYPE_MUL_NOT_EFFECTIVE,
TYPE_POISON, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_POISON, TYPE_GHOST, TYPE_MUL_NOT_EFFECTIVE,
TYPE_POISON, TYPE_STEEL, TYPE_MUL_NO_EFFECT,
TYPE_GROUND, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GROUND, TYPE_ELECTRIC, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GROUND, TYPE_GRASS, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GROUND, TYPE_POISON, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GROUND, TYPE_FLYING, TYPE_MUL_NO_EFFECT,
TYPE_GROUND, TYPE_BUG, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GROUND, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GROUND, TYPE_STEEL, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FLYING, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FLYING, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FLYING, TYPE_FIGHTING, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FLYING, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_FLYING, TYPE_ROCK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FLYING, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_PSYCHIC, TYPE_FIGHTING, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_PSYCHIC, TYPE_POISON, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_PSYCHIC, TYPE_PSYCHIC, TYPE_MUL_NOT_EFFECTIVE,
TYPE_PSYCHIC, TYPE_DARK, TYPE_MUL_NO_EFFECT,
TYPE_PSYCHIC, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_BUG, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE,
TYPE_BUG, TYPE_GRASS, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_BUG, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE,
TYPE_BUG, TYPE_POISON, TYPE_MUL_NOT_EFFECTIVE,
TYPE_BUG, TYPE_FLYING, TYPE_MUL_NOT_EFFECTIVE,
TYPE_BUG, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_BUG, TYPE_GHOST, TYPE_MUL_NOT_EFFECTIVE,
TYPE_BUG, TYPE_DARK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_BUG, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ROCK, TYPE_FIRE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ROCK, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ROCK, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ROCK, TYPE_GROUND, TYPE_MUL_NOT_EFFECTIVE,
TYPE_ROCK, TYPE_FLYING, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ROCK, TYPE_BUG, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_ROCK, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GHOST, TYPE_NORMAL, TYPE_MUL_NO_EFFECT,
TYPE_GHOST, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_GHOST, TYPE_DARK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GHOST, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_GHOST, TYPE_GHOST, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_DRAGON, TYPE_DRAGON, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_DRAGON, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_DARK, TYPE_FIGHTING, TYPE_MUL_NOT_EFFECTIVE,
TYPE_DARK, TYPE_PSYCHIC, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_DARK, TYPE_GHOST, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_DARK, TYPE_DARK, TYPE_MUL_NOT_EFFECTIVE,
TYPE_DARK, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_STEEL, TYPE_FIRE, TYPE_MUL_NOT_EFFECTIVE,
TYPE_STEEL, TYPE_WATER, TYPE_MUL_NOT_EFFECTIVE,
TYPE_STEEL, TYPE_ELECTRIC, TYPE_MUL_NOT_EFFECTIVE,
TYPE_STEEL, TYPE_ICE, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_STEEL, TYPE_ROCK, TYPE_MUL_SUPER_EFFECTIVE,
TYPE_STEEL, TYPE_STEEL, TYPE_MUL_NOT_EFFECTIVE,
TYPE_FORESIGHT, TYPE_FORESIGHT, TYPE_MUL_NO_EFFECT,
TYPE_NORMAL, TYPE_GHOST, TYPE_MUL_NO_EFFECT,
TYPE_FIGHTING, TYPE_GHOST, TYPE_MUL_NO_EFFECT,
TYPE_ENDTABLE, TYPE_ENDTABLE, TYPE_MUL_NO_EFFECT
};
const u8 gTypeNames[][TYPE_NAME_LENGTH + 1] =
{
_("NORMAL"),
_("FIGHT"),
_("FLYING"),
_("POISON"),
_("GROUND"),
_("ROCK"),
_("BUG"),
_("GHOST"),
_("STEEL"),
_("???"),
_("FIRE"),
_("WATER"),
_("GRASS"),
_("ELECTR"),
_("PSYCHC"),
_("ICE"),
_("DRAGON"),
_("DARK"),
};
// This is a factor in how much money you get for beating a trainer.
const struct TrainerMoney gTrainerMoneyTable[] =
{
{ CLASS_LEADER_2, 25 },
{ CLASS_ELITE_FOUR_2, 25 },
{ CLASS_PKMN_PROF, 25 },
{ CLASS_RIVAL, 4 },
{ CLASS_RIVAL_2, 9 },
{ CLASS_CHAMPION_2, 25 },
{ CLASS_YOUNGSTER_2, 4 },
{ CLASS_BUG_CATCHER_2, 3 },
{ CLASS_HIKER_2, 9 },
{ CLASS_BIRD_KEEPER_2, 6 },
{ CLASS_PICNICKER_2, 5 },
{ CLASS_SUPER_NERD, 6 },
{ CLASS_FISHERMAN_2, 9 },
{ CLASS_TEAM_ROCKET, 8 },
{ CLASS_LASS_2, 4 },
{ CLASS_BEAUTY_2, 18 },
{ CLASS_BLACK_BELT_2, 6 },
{ CLASS_CUE_BALL, 6 },
{ CLASS_CHANNELER, 8 },
{ CLASS_ROCKER, 6 },
{ CLASS_GENTLEMAN_2, 18 },
{ CLASS_BURGLAR, 22 },
{ CLASS_SWIMMER_MALE_2, 1 },
{ CLASS_ENGINEER, 12 },
{ CLASS_JUGGLER, 10 },
{ CLASS_SAILOR_2, 8 },
{ CLASS_COOLTRAINER_2, 9 },
{ CLASS_POKEMANIAC_2, 12 },
{ CLASS_TAMER, 10 },
{ CLASS_CAMPER_2, 5 },
{ CLASS_PSYCHIC_2, 5 },
{ CLASS_BIKER, 5 },
{ CLASS_GAMER, 18 },
{ CLASS_SCIENTIST, 12 },
{ CLASS_CRUSH_GIRL, 6 },
{ CLASS_TUBER_3, 1 },
{ CLASS_PKMN_BREEDER_2, 7 },
{ CLASS_PKMN_RANGER_2, 9 },
{ CLASS_AROMA_LADY_2, 7 },
{ CLASS_RUIN_MANIAC_2, 12 },
{ CLASS_LADY_2, 50 },
{ CLASS_PAINTER, 4 },
{ CLASS_TWINS_2, 3 },
{ CLASS_YOUNG_COUPLE_2, 7 },
{ CLASS_SIS_AND_BRO_2, 1 },
{ CLASS_COOL_COUPLE, 6 },
{ CLASS_CRUSH_KIN, 6 },
{ CLASS_SWIMMER_FEMALE_2, 1 },
{ CLASS_PLAYER, 1 },
{ CLASS_LEADER, 25 },
{ CLASS_ELITE_FOUR, 25 },
{ CLASS_LASS, 4 },
{ CLASS_YOUNGSTER, 4 },
{ CLASS_PKMN_TRAINER_3, 15 },
{ CLASS_HIKER, 10 },
{ CLASS_BEAUTY, 20 },
{ CLASS_FISHERMAN, 10 },
{ CLASS_LADY, 50 },
{ CLASS_TRIATHLETE, 10 },
{ CLASS_TEAM_AQUA, 5 },
{ CLASS_TWINS, 3 },
{ CLASS_SWIMMER_FEMALE, 2 },
{ CLASS_BUG_CATCHER, 4 },
{ CLASS_SCHOOL_KID, 5 },
{ CLASS_RICH_BOY, 50 },
{ CLASS_SR_AND_JR, 4 },
{ CLASS_BLACK_BELT, 8 },
{ CLASS_TUBER, 1 },
{ CLASS_HEX_MANIAC, 6 },
{ CLASS_PKMN_BREEDER, 10 },
{ CLASS_TEAM_MAGMA, 5 },
{ CLASS_INTERVIEWER, 12 },
{ CLASS_TUBER_2, 1 },
{ CLASS_YOUNG_COUPLE, 8 },
{ CLASS_GUITARIST, 8 },
{ CLASS_GENTLEMAN, 20 },
{ CLASS_CHAMPION, 50 },
{ CLASS_MAGMA_LEADER, 20 },
{ CLASS_BATTLE_GIRL, 6 },
{ CLASS_SWIMMER_MALE, 2 },
{ CLASS_POKEFAN, 20 },
{ CLASS_EXPERT, 10 },
{ CLASS_DRAGON_TAMER, 12 },
{ CLASS_BIRD_KEEPER, 8 },
{ CLASS_NINJA_BOY, 3 },
{ CLASS_PARASOL_LADY, 10 },
{ CLASS_BUG_MANIAC, 15 },
{ CLASS_SAILOR, 8 },
{ CLASS_COLLECTOR, 15 },
{ CLASS_PKMN_RANGER, 12 },
{ CLASS_MAGMA_ADMIN, 10 },
{ CLASS_AROMA_LADY, 10 },
{ CLASS_RUIN_MANIAC, 15 },
{ CLASS_COOLTRAINER, 12 },
{ CLASS_POKEMANIAC, 15 },
{ CLASS_KINDLER, 8 },
{ CLASS_CAMPER, 4 },
{ CLASS_PICNICKER, 4 },
{ CLASS_PSYCHIC, 6 },
{ CLASS_SIS_AND_BRO, 3 },
{ CLASS_OLD_COUPLE, 10 },
{ CLASS_AQUA_ADMIN, 10 },
{ CLASS_AQUA_LEADER, 20 },
{ CLASS_BOSS, 25 },
{ 0xFF, 5 },
};
#include "data/text/abilities.h"
void (*const sTurnActionsFuncsTable[])(void) =
{
[B_ACTION_USE_MOVE] = HandleAction_UseMove,
[B_ACTION_USE_ITEM] = HandleAction_UseItem,
[B_ACTION_SWITCH] = HandleAction_Switch,
[B_ACTION_RUN] = HandleAction_Run,
[B_ACTION_SAFARI_WATCH_CAREFULLY] = HandleAction_WatchesCarefully,
[B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow,
[B_ACTION_SAFARI_POKEBLOCK] = HandleAction_ThrowPokeblock,
[B_ACTION_SAFARI_GO_NEAR] = HandleAction_GoNear,
[B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun,
[B_ACTION_OLDMAN_THROW] = HandleAction_OldManBallThrow,
[B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript,
[B_ACTION_TRY_FINISH] = HandleAction_TryFinish,
[B_ACTION_FINISHED] = HandleAction_ActionFinished,
[B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted,
};
void (*const sEndTurnFuncsTable[])(void) =
{
[0] = HandleEndTurn_ContinueBattle, //B_OUTCOME_NONE?
[B_OUTCOME_WON] = HandleEndTurn_BattleWon,
[B_OUTCOME_LOST] = HandleEndTurn_BattleLost,
[B_OUTCOME_DREW] = HandleEndTurn_BattleLost,
[B_OUTCOME_RAN] = HandleEndTurn_RanFromBattle,
[B_OUTCOME_PLAYER_TELEPORTED] = HandleEndTurn_FinishBattle,
[B_OUTCOME_MON_FLED] = HandleEndTurn_MonFled,
[B_OUTCOME_CAUGHT] = HandleEndTurn_FinishBattle,
[B_OUTCOME_NO_SAFARI_BALLS] = HandleEndTurn_FinishBattle,
};
const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$");
const u8 gStatusConditionString_SleepJpn[8] = _("ねむり$$$$");
const u8 gStatusConditionString_ParalysisJpn[8] = _("まひ$$$$$");
const u8 gStatusConditionString_BurnJpn[8] = _("やけど$$$$");
const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$");
const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$");
const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$");
const u8 *const gStatusConditionStringsTable[7][2] =
{
{gStatusConditionString_PoisonJpn, gText_Poison},
{gStatusConditionString_SleepJpn, gText_Sleep},
{gStatusConditionString_ParalysisJpn, gText_Paralysis},
{gStatusConditionString_BurnJpn, gText_Burn},
{gStatusConditionString_IceJpn, gText_Ice},
{gStatusConditionString_ConfusionJpn, gText_Confusion},
{gStatusConditionString_LoveJpn, gText_Love}
};
+242
View File
@@ -0,0 +1,242 @@
static const u8 sNoneDescription[] = _("No special ability.");
static const u8 sStenchDescription[] = _("Helps repel wild POKéMON.");
static const u8 sDrizzleDescription[] = _("Summons rain in battle.");
static const u8 sSpeedBoostDescription[] = _("Gradually boosts SPEED.");
static const u8 sBattleArmorDescription[] = _("Blocks critical hits.");
static const u8 sSturdyDescription[] = _("Negates 1-hit KO attacks.");
static const u8 sDampDescription[] = _("Prevents self-destruction.");
static const u8 sLimberDescription[] = _("Prevents paralysis.");
static const u8 sSandVeilDescription[] = _("Ups evasion in a sandstorm.");
static const u8 sStaticDescription[] = _("Paralyzes on contact.");
static const u8 sVoltAbsorbDescription[] = _("Turns electricity into HP.");
static const u8 sWaterAbsorbDescription[] = _("Changes water into HP.");
static const u8 sObliviousDescription[] = _("Prevents attraction.");
static const u8 sCloudNineDescription[] = _("Negates weather effects.");
static const u8 sCompoundEyesDescription[] = _("Raises accuracy.");
static const u8 sInsomniaDescription[] = _("Prevents sleep.");
static const u8 sColorChangeDescription[] = _("Changes type to foe's move.");
static const u8 sImmunityDescription[] = _("Prevents poisoning.");
static const u8 sFlashFireDescription[] = _("Powers up if hit by fire.");
static const u8 sShieldDustDescription[] = _("Prevents added effects.");
static const u8 sOwnTempoDescription[] = _("Prevents confusion.");
static const u8 sSuctionCupsDescription[] = _("Firmly anchors the body.");
static const u8 sIntimidateDescription[] = _("Lowers the foe's ATTACK.");
static const u8 sShadowTagDescription[] = _("Prevents the foe's escape.");
static const u8 sRoughSkinDescription[] = _("Hurts to touch.");
static const u8 sWonderGuardDescription[] = _("“Super effective” hits.");
static const u8 sLevitateDescription[] = _("Not hit by GROUND attacks.");
static const u8 sEffectSporeDescription[] = _("Leaves spores on contact.");
static const u8 sSynchronizeDescription[] = _("Passes on status problems.");
static const u8 sClearBodyDescription[] = _("Prevents ability reduction.");
static const u8 sNaturalCureDescription[] = _("Heals upon switching out.");
static const u8 sLightningRodDescription[] = _("Draws electrical moves.");
static const u8 sSereneGraceDescription[] = _("Promotes added effects.");
static const u8 sSwiftSwimDescription[] = _("Raises SPEED in rain.");
static const u8 sChlorophyllDescription[] = _("Raises SPEED in sunshine.");
static const u8 sIlluminateDescription[] = _("Encounter rate increases.");
static const u8 sTraceDescription[] = _("Copies special ability.");
static const u8 sHugePowerDescription[] = _("Raises ATTACK.");
static const u8 sPoisonPointDescription[] = _("Poisons foe on contact.");
static const u8 sInnerFocusDescription[] = _("Prevents flinching.");
static const u8 sMagmaArmorDescription[] = _("Prevents freezing.");
static const u8 sWaterVeilDescription[] = _("Prevents burns.");
static const u8 sMagnetPullDescription[] = _("Traps STEEL-type POKéMON.");
static const u8 sSoundproofDescription[] = _("Avoids sound-based moves.");
static const u8 sRainDishDescription[] = _("Slight HP recovery in rain.");
static const u8 sSandStreamDescription[] = _("Summons a sandstorm.");
static const u8 sPressureDescription[] = _("Raises foe's PP usage.");
static const u8 sThickFatDescription[] = _("Heat-and-cold protection.");
static const u8 sEarlyBirdDescription[] = _("Awakens quickly from sleep.");
static const u8 sFlameBodyDescription[] = _("Burns the foe on contact.");
static const u8 sRunAwayDescription[] = _("Makes escaping easier.");
static const u8 sKeenEyeDescription[] = _("Prevents loss of accuracy.");
static const u8 sHyperCutterDescription[] = _("Prevents ATTACK reduction.");
static const u8 sPickupDescription[] = _("May pick up items.");
static const u8 sTruantDescription[] = _("Moves only every two turns.");
static const u8 sHustleDescription[] = _("Trades accuracy for power.");
static const u8 sCuteCharmDescription[] = _("Infatuates on contact.");
static const u8 sPlusDescription[] = _("Powers up with MINUS.");
static const u8 sMinusDescription[] = _("Powers up with PLUS.");
static const u8 sForecastDescription[] = _("Changes with the weather.");
static const u8 sStickyHoldDescription[] = _("Prevents item theft.");
static const u8 sShedSkinDescription[] = _("Heals the body by shedding.");
static const u8 sGutsDescription[] = _("Ups ATTACK if suffering.");
static const u8 sMarvelScaleDescription[] = _("Ups DEFENSE if suffering.");
static const u8 sLiquidOozeDescription[] = _("Draining causes injury.");
static const u8 sOvergrowDescription[] = _("Ups GRASS moves in a pinch.");
static const u8 sBlazeDescription[] = _("Ups FIRE moves in a pinch.");
static const u8 sTorrentDescription[] = _("Ups WATER moves in a pinch.");
static const u8 sSwarmDescription[] = _("Ups BUG moves in a pinch.");
static const u8 sRockHeadDescription[] = _("Prevents recoil damage.");
static const u8 sDroughtDescription[] = _("Summons sunlight in battle.");
static const u8 sArenaTrapDescription[] = _("Prevents fleeing.");
static const u8 sVitalSpiritDescription[] = _("Prevents sleep.");
static const u8 sWhiteSmokeDescription[] = _("Prevents ability reduction.");
static const u8 sPurePowerDescription[] = _("Raises ATTACK.");
static const u8 sShellArmorDescription[] = _("Blocks critical hits.");
static const u8 sCacophonyDescription[] = _("Avoids sound-based moves.");
static const u8 sAirLockDescription[] = _("Negates weather effects.");
const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] =
{
[ABILITY_NONE] = sNoneDescription,
[ABILITY_STENCH] = sStenchDescription,
[ABILITY_DRIZZLE] = sDrizzleDescription,
[ABILITY_SPEED_BOOST] = sSpeedBoostDescription,
[ABILITY_BATTLE_ARMOR] = sBattleArmorDescription,
[ABILITY_STURDY] = sSturdyDescription,
[ABILITY_DAMP] = sDampDescription,
[ABILITY_LIMBER] = sLimberDescription,
[ABILITY_SAND_VEIL] = sSandVeilDescription,
[ABILITY_STATIC] = sStaticDescription,
[ABILITY_VOLT_ABSORB] = sVoltAbsorbDescription,
[ABILITY_WATER_ABSORB] = sWaterAbsorbDescription,
[ABILITY_OBLIVIOUS] = sObliviousDescription,
[ABILITY_CLOUD_NINE] = sCloudNineDescription,
[ABILITY_COMPOUND_EYES] = sCompoundEyesDescription,
[ABILITY_INSOMNIA] = sInsomniaDescription,
[ABILITY_COLOR_CHANGE] = sColorChangeDescription,
[ABILITY_IMMUNITY] = sImmunityDescription,
[ABILITY_FLASH_FIRE] = sFlashFireDescription,
[ABILITY_SHIELD_DUST] = sShieldDustDescription,
[ABILITY_OWN_TEMPO] = sOwnTempoDescription,
[ABILITY_SUCTION_CUPS] = sSuctionCupsDescription,
[ABILITY_INTIMIDATE] = sIntimidateDescription,
[ABILITY_SHADOW_TAG] = sShadowTagDescription,
[ABILITY_ROUGH_SKIN] = sRoughSkinDescription,
[ABILITY_WONDER_GUARD] = sWonderGuardDescription,
[ABILITY_LEVITATE] = sLevitateDescription,
[ABILITY_EFFECT_SPORE] = sEffectSporeDescription,
[ABILITY_SYNCHRONIZE] = sSynchronizeDescription,
[ABILITY_CLEAR_BODY] = sClearBodyDescription,
[ABILITY_NATURAL_CURE] = sNaturalCureDescription,
[ABILITY_LIGHTNING_ROD] = sLightningRodDescription,
[ABILITY_SERENE_GRACE] = sSereneGraceDescription,
[ABILITY_SWIFT_SWIM] = sSwiftSwimDescription,
[ABILITY_CHLOROPHYLL] = sChlorophyllDescription,
[ABILITY_ILLUMINATE] = sIlluminateDescription,
[ABILITY_TRACE] = sTraceDescription,
[ABILITY_HUGE_POWER] = sHugePowerDescription,
[ABILITY_POISON_POINT] = sPoisonPointDescription,
[ABILITY_INNER_FOCUS] = sInnerFocusDescription,
[ABILITY_MAGMA_ARMOR] = sMagmaArmorDescription,
[ABILITY_WATER_VEIL] = sWaterVeilDescription,
[ABILITY_MAGNET_PULL] = sMagnetPullDescription,
[ABILITY_SOUNDPROOF] = sSoundproofDescription,
[ABILITY_RAIN_DISH] = sRainDishDescription,
[ABILITY_SAND_STREAM] = sSandStreamDescription,
[ABILITY_PRESSURE] = sPressureDescription,
[ABILITY_THICK_FAT] = sThickFatDescription,
[ABILITY_EARLY_BIRD] = sEarlyBirdDescription,
[ABILITY_FLAME_BODY] = sFlameBodyDescription,
[ABILITY_RUN_AWAY] = sRunAwayDescription,
[ABILITY_KEEN_EYE] = sKeenEyeDescription,
[ABILITY_HYPER_CUTTER] = sHyperCutterDescription,
[ABILITY_PICKUP] = sPickupDescription,
[ABILITY_TRUANT] = sTruantDescription,
[ABILITY_HUSTLE] = sHustleDescription,
[ABILITY_CUTE_CHARM] = sCuteCharmDescription,
[ABILITY_PLUS] = sPlusDescription,
[ABILITY_MINUS] = sMinusDescription,
[ABILITY_FORECAST] = sForecastDescription,
[ABILITY_STICKY_HOLD] = sStickyHoldDescription,
[ABILITY_SHED_SKIN] = sShedSkinDescription,
[ABILITY_GUTS] = sGutsDescription,
[ABILITY_MARVEL_SCALE] = sMarvelScaleDescription,
[ABILITY_LIQUID_OOZE] = sLiquidOozeDescription,
[ABILITY_OVERGROW] = sOvergrowDescription,
[ABILITY_BLAZE] = sBlazeDescription,
[ABILITY_TORRENT] = sTorrentDescription,
[ABILITY_SWARM] = sSwarmDescription,
[ABILITY_ROCK_HEAD] = sRockHeadDescription,
[ABILITY_DROUGHT] = sDroughtDescription,
[ABILITY_ARENA_TRAP] = sArenaTrapDescription,
[ABILITY_VITAL_SPIRIT] = sVitalSpiritDescription,
[ABILITY_WHITE_SMOKE] = sWhiteSmokeDescription,
[ABILITY_PURE_POWER] = sPurePowerDescription,
[ABILITY_SHELL_ARMOR] = sShellArmorDescription,
[ABILITY_CACOPHONY] = sCacophonyDescription,
[ABILITY_AIR_LOCK] = sAirLockDescription,
};
const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] =
{
[ABILITY_NONE] = _("-------"),
[ABILITY_STENCH] = _("STENCH"),
[ABILITY_DRIZZLE] = _("DRIZZLE"),
[ABILITY_SPEED_BOOST] = _("SPEED BOOST"),
[ABILITY_BATTLE_ARMOR] = _("BATTLE ARMOR"),
[ABILITY_STURDY] = _("STURDY"),
[ABILITY_DAMP] = _("DAMP"),
[ABILITY_LIMBER] = _("LIMBER"),
[ABILITY_SAND_VEIL] = _("SAND VEIL"),
[ABILITY_STATIC] = _("STATIC"),
[ABILITY_VOLT_ABSORB] = _("VOLT ABSORB"),
[ABILITY_WATER_ABSORB] = _("WATER ABSORB"),
[ABILITY_OBLIVIOUS] = _("OBLIVIOUS"),
[ABILITY_CLOUD_NINE] = _("CLOUD NINE"),
[ABILITY_COMPOUND_EYES] = _("COMPOUNDEYES"),
[ABILITY_INSOMNIA] = _("INSOMNIA"),
[ABILITY_COLOR_CHANGE] = _("COLOR CHANGE"),
[ABILITY_IMMUNITY] = _("IMMUNITY"),
[ABILITY_FLASH_FIRE] = _("FLASH FIRE"),
[ABILITY_SHIELD_DUST] = _("SHIELD DUST"),
[ABILITY_OWN_TEMPO] = _("OWN TEMPO"),
[ABILITY_SUCTION_CUPS] = _("SUCTION CUPS"),
[ABILITY_INTIMIDATE] = _("INTIMIDATE"),
[ABILITY_SHADOW_TAG] = _("SHADOW TAG"),
[ABILITY_ROUGH_SKIN] = _("ROUGH SKIN"),
[ABILITY_WONDER_GUARD] = _("WONDER GUARD"),
[ABILITY_LEVITATE] = _("LEVITATE"),
[ABILITY_EFFECT_SPORE] = _("EFFECT SPORE"),
[ABILITY_SYNCHRONIZE] = _("SYNCHRONIZE"),
[ABILITY_CLEAR_BODY] = _("CLEAR BODY"),
[ABILITY_NATURAL_CURE] = _("NATURAL CURE"),
[ABILITY_LIGHTNING_ROD] = _("LIGHTNINGROD"),
[ABILITY_SERENE_GRACE] = _("SERENE GRACE"),
[ABILITY_SWIFT_SWIM] = _("SWIFT SWIM"),
[ABILITY_CHLOROPHYLL] = _("CHLOROPHYLL"),
[ABILITY_ILLUMINATE] = _("ILLUMINATE"),
[ABILITY_TRACE] = _("TRACE"),
[ABILITY_HUGE_POWER] = _("HUGE POWER"),
[ABILITY_POISON_POINT] = _("POISON POINT"),
[ABILITY_INNER_FOCUS] = _("INNER FOCUS"),
[ABILITY_MAGMA_ARMOR] = _("MAGMA ARMOR"),
[ABILITY_WATER_VEIL] = _("WATER VEIL"),
[ABILITY_MAGNET_PULL] = _("MAGNET PULL"),
[ABILITY_SOUNDPROOF] = _("SOUNDPROOF"),
[ABILITY_RAIN_DISH] = _("RAIN DISH"),
[ABILITY_SAND_STREAM] = _("SAND STREAM"),
[ABILITY_PRESSURE] = _("PRESSURE"),
[ABILITY_THICK_FAT] = _("THICK FAT"),
[ABILITY_EARLY_BIRD] = _("EARLY BIRD"),
[ABILITY_FLAME_BODY] = _("FLAME BODY"),
[ABILITY_RUN_AWAY] = _("RUN AWAY"),
[ABILITY_KEEN_EYE] = _("KEEN EYE"),
[ABILITY_HYPER_CUTTER] = _("HYPER CUTTER"),
[ABILITY_PICKUP] = _("PICKUP"),
[ABILITY_TRUANT] = _("TRUANT"),
[ABILITY_HUSTLE] = _("HUSTLE"),
[ABILITY_CUTE_CHARM] = _("CUTE CHARM"),
[ABILITY_PLUS] = _("PLUS"),
[ABILITY_MINUS] = _("MINUS"),
[ABILITY_FORECAST] = _("FORECAST"),
[ABILITY_STICKY_HOLD] = _("STICKY HOLD"),
[ABILITY_SHED_SKIN] = _("SHED SKIN"),
[ABILITY_GUTS] = _("GUTS"),
[ABILITY_MARVEL_SCALE] = _("MARVEL SCALE"),
[ABILITY_LIQUID_OOZE] = _("LIQUID OOZE"),
[ABILITY_OVERGROW] = _("OVERGROW"),
[ABILITY_BLAZE] = _("BLAZE"),
[ABILITY_TORRENT] = _("TORRENT"),
[ABILITY_SWARM] = _("SWARM"),
[ABILITY_ROCK_HEAD] = _("ROCK HEAD"),
[ABILITY_DROUGHT] = _("DROUGHT"),
[ABILITY_ARENA_TRAP] = _("ARENA TRAP"),
[ABILITY_VITAL_SPIRIT] = _("VITAL SPIRIT"),
[ABILITY_WHITE_SMOKE] = _("WHITE SMOKE"),
[ABILITY_PURE_POWER] = _("PURE POWER"),
[ABILITY_SHELL_ARMOR] = _("SHELL ARMOR"),
[ABILITY_CACOPHONY] = _("CACOPHONY"),
[ABILITY_AIR_LOCK] = _("AIR LOCK"),
};
+12 -12
View File
@@ -1467,7 +1467,7 @@ const struct SpriteTemplate gUnknown_825DEF0[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_8234698,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1476,16 +1476,16 @@ const struct SpriteTemplate gUnknown_825DEF0[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F010,
.oam = &gOamData_824F010,
.anims = NULL,
.images = gUnknown_82346B8,
.affineAnims = gSpriteAffineAnimTable_8234944,
.callback = oac_poke_opponent,
.callback = SpriteCB_WildMon,
},
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_82346D8,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1494,11 +1494,11 @@ const struct SpriteTemplate gUnknown_825DEF0[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F010,
.oam = &gOamData_824F010,
.anims = NULL,
.images = gUnknown_82346F8,
.affineAnims = gSpriteAffineAnimTable_8234944,
.callback = oac_poke_opponent,
.callback = SpriteCB_WildMon,
},
};
@@ -1507,7 +1507,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_8234718,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1516,7 +1516,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_8234740,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1525,7 +1525,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_82347A8,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1534,7 +1534,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_82347C8,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1543,7 +1543,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_8234768,
.affineAnims = gSpriteAffineAnimTable_82348C8,
@@ -1552,7 +1552,7 @@ const struct SpriteTemplate gUnknown_825DF50[] =
{
.tileTag = SPRITE_INVALID_TAG,
.paletteTag = 0,
.oam = &gUnknown_824F018,
.oam = &gOamData_824F018,
.anims = NULL,
.images = gUnknown_8234788,
.affineAnims = gSpriteAffineAnimTable_82348C8,
+1 -1
View File
@@ -1214,7 +1214,7 @@ static void TeachyTvPreBattleAnimAndSetBattleCallback(u8 taskId)
case 1:
if (BT_IsDone())
{
SetMainCallback2(sub_800FD9C);
SetMainCallback2(CB2_InitBattle);
DestroyTask(taskId);
}
break;
+1 -1
View File
@@ -1115,7 +1115,7 @@ void sub_815E124(u8 taskId)
{
gMain.savedCallback = sub_815E114;
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(sub_800FD9C);
SetMainCallback2(CB2_InitBattle);
DestroyTask(taskId);
}
}