mirror of
https://github.com/pret/pokeemerald.git
synced 2026-09-09 03:26:31 -05:00
Merge branch 'battle_engine' of https://github.com/rh-hideout/pokeemerald-expansion into totem
This commit is contained in:
@@ -67,6 +67,18 @@ static const union AffineAnimCmd sSquishTargetAffineAnimCmds[] =
|
||||
};
|
||||
|
||||
//// GEN 4
|
||||
// shadow sneak
|
||||
const struct SpriteTemplate gShadowSneakImpactSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_IMPACT,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineNormal_ObjBlend_32x32,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gAffineAnims_IceCrystalHit,
|
||||
.callback = AnimIceEffectParticle
|
||||
};
|
||||
|
||||
// power trick
|
||||
const struct SpriteTemplate gPowerTrickSpriteTemplate =
|
||||
{
|
||||
|
||||
@@ -2494,6 +2494,8 @@ void AnimTask_GetTrappedMoveAnimId(u8 taskId)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_CLAMP;
|
||||
else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_SAND_TOMB)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_SAND_TOMB;
|
||||
else if (gBattleSpritesDataPtr->animationData->animArg == MOVE_INFESTATION)
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_INFESTATION;
|
||||
else
|
||||
gBattleAnimArgs[0] = TRAP_ANIM_BIND;
|
||||
|
||||
|
||||
@@ -1526,7 +1526,10 @@ static void PlayerPartnerHandleChooseMove(void)
|
||||
gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
}
|
||||
|
||||
BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8));
|
||||
if (CanMegaEvolve(gActiveBattler)) // If partner can mega evolve, do it.
|
||||
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (RET_MEGA_EVOLUTION) | (gBattlerTarget << 8));
|
||||
else
|
||||
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8));
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
||||
@@ -6960,7 +6960,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b
|
||||
}
|
||||
break;
|
||||
case ABILITY_FLOWER_GIFT:
|
||||
if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY)
|
||||
if (gBattleMons[battlerAtk].species == SPECIES_CHERRIM && WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_SUN_ANY) && IS_MOVE_PHYSICAL(move))
|
||||
MulModifier(&modifier, UQ_4_12(1.5));
|
||||
break;
|
||||
case ABILITY_HUSTLE:
|
||||
@@ -6996,7 +6996,7 @@ static u32 CalcAttackStat(u16 move, u8 battlerAtk, u8 battlerDef, u8 moveType, b
|
||||
switch (GetBattlerAbility(BATTLE_PARTNER(battlerAtk)))
|
||||
{
|
||||
case ABILITY_FLOWER_GIFT:
|
||||
if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM)
|
||||
if (gBattleMons[BATTLE_PARTNER(battlerAtk)].species == SPECIES_CHERRIM && IS_MOVE_PHYSICAL(move))
|
||||
MulModifier(&modifier, UQ_4_12(1.5));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -7986,7 +7986,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
|
||||
[MOVE_FINAL_GAMBIT] =
|
||||
{
|
||||
.effect = EFFECT_HIT_SWITCH_TARGET,
|
||||
.effect = EFFECT_FINAL_GAMBIT,
|
||||
.power = 1,
|
||||
.type = TYPE_FIGHTING,
|
||||
.accuracy = 100,
|
||||
@@ -7994,7 +7994,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
@@ -11386,4 +11386,116 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_IRON_FIST_BOOST,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
},
|
||||
|
||||
[MOVE_THUNDER_CAGE] =
|
||||
{
|
||||
.effect = EFFECT_TRAP,
|
||||
.power = 80,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 90,
|
||||
.pp = 15,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
[MOVE_DRAGON_ENERGY] =
|
||||
{
|
||||
.effect = EFFECT_ERUPTION,
|
||||
.power = 150,
|
||||
.type = TYPE_DRAGON,
|
||||
.accuracy = 100,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
[MOVE_FREEZING_GLARE] =
|
||||
{
|
||||
.power = 90,
|
||||
.effect = EFFECT_FREEZE_HIT,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 10,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
[MOVE_FIERY_WRATH] =
|
||||
{
|
||||
.effect = EFFECT_FLINCH_HIT,
|
||||
.power = 90,
|
||||
.type = TYPE_DARK,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 20,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
[MOVE_THUNDEROUS_KICK] =
|
||||
{
|
||||
.effect = EFFECT_DEFENSE_DOWN_HIT,
|
||||
.power = 90,
|
||||
.type = TYPE_FIGHTING,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
},
|
||||
|
||||
[MOVE_GLACIAL_LANCE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 130,
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 100,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
},
|
||||
|
||||
[MOVE_ASTRAL_BARRAGE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 120,
|
||||
.type = TYPE_GHOST,
|
||||
.accuracy = 100,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
|
||||
[MOVE_EERIE_SPELL] =
|
||||
{
|
||||
.effect = EFFECT_HIT, // To do. It's a copy of Spite that inflicts damage and reduced the target's last move's PP by 3 instead of 4.
|
||||
.power = 80,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 100,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED | FLAG_SOUND,
|
||||
.split = SPLIT_SPECIAL,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2910,6 +2910,38 @@ static const u8 sSURGING_STRIKESDescription[] = _(
|
||||
"Mastering the Water style,\n"
|
||||
"strikes with 3 critical hits.");
|
||||
|
||||
static const u8 sTHUNDER_CAGEDescription[] = _(
|
||||
"Traps the foe in a cage of\n"
|
||||
"electricity for 2 to 5 turns.");
|
||||
|
||||
static const u8 sDRAGON_ENERGYDescription[] = _(
|
||||
"The higher the user's HP\n"
|
||||
"the more damage caused.");
|
||||
|
||||
static const u8 sFREEZING_GLAREDescription[] = _(
|
||||
"Shoots psychic power from\n"
|
||||
"the eyes. May freeze the foe.");
|
||||
|
||||
static const u8 sFIERY_WRATHDescription[] = _(
|
||||
"An attack fueled by your\n"
|
||||
"wrath. May cause flinching.");
|
||||
|
||||
static const u8 sTHUNDEROUS_KICKDescription[] = _(
|
||||
"Uses a lightning-like kick\n"
|
||||
"to hit. Lowers foe's Defense.");
|
||||
|
||||
static const u8 sGLACIAL_LANCEDescription[] = _(
|
||||
"Strikes by hurling a blizzard-\n"
|
||||
"cloaked icicle lance at a foe.");
|
||||
|
||||
static const u8 sASTRAL_BARRAGEDescription[] = _(
|
||||
"Strikes by sending a frightful\n"
|
||||
"amount of ghosts at a foe.");
|
||||
|
||||
static const u8 sEERIE_SPELLDescription[] = _(
|
||||
"Attacks with psychic power.\n"
|
||||
"Foe's last move has 3 PP cut.");
|
||||
|
||||
static const u8 sNotDoneYetDescription[] = _(
|
||||
"Not done yet.");
|
||||
|
||||
@@ -3664,5 +3696,12 @@ const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] =
|
||||
[MOVE_JUNGLE_HEALING - 1] = sJUNGLE_HEALINGDescription,
|
||||
[MOVE_WICKED_BLOW - 1] = sWICKED_BLOWDescription,
|
||||
[MOVE_SURGING_STRIKES - 1] = sSURGING_STRIKESDescription,
|
||||
|
||||
[MOVE_THUNDER_CAGE - 1] = sTHUNDER_CAGEDescription,
|
||||
[MOVE_DRAGON_ENERGY - 1] = sDRAGON_ENERGYDescription,
|
||||
[MOVE_FREEZING_GLARE - 1] = sFREEZING_GLAREDescription,
|
||||
[MOVE_FIERY_WRATH - 1] = sFIERY_WRATHDescription,
|
||||
[MOVE_THUNDEROUS_KICK - 1] = sTHUNDEROUS_KICKDescription,
|
||||
[MOVE_GLACIAL_LANCE - 1] = sGLACIAL_LANCEDescription,
|
||||
[MOVE_ASTRAL_BARRAGE - 1] = sASTRAL_BARRAGEDescription,
|
||||
[MOVE_EERIE_SPELL - 1] = sEERIE_SPELLDescription,
|
||||
};
|
||||
|
||||
@@ -748,4 +748,12 @@ const u8 gMoveNames[MOVES_COUNT][MOVE_NAME_LENGTH + 1] =
|
||||
[MOVE_JUNGLE_HEALING] = _("Jungle Heal"),
|
||||
[MOVE_WICKED_BLOW] = _("Wicked Blow"),
|
||||
[MOVE_SURGING_STRIKES] = _("SurgeStrikes"),
|
||||
[MOVE_THUNDER_CAGE] = _("Thunder Cage"),
|
||||
[MOVE_DRAGON_ENERGY] = _("DragonEnergy"),
|
||||
[MOVE_FREEZING_GLARE] = _("FreezngGlare"),
|
||||
[MOVE_FIERY_WRATH] = _("Fiery Wrath"),
|
||||
[MOVE_THUNDEROUS_KICK] = _("ThnderusKick"),
|
||||
[MOVE_GLACIAL_LANCE] = _("GlacialLance"),
|
||||
[MOVE_ASTRAL_BARRAGE] = _("AstrlBarrage"),
|
||||
[MOVE_EERIE_SPELL] = _("Eerie Spell"),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user