Merge branch 'battle_engine' of https://github.com/rh-hideout/pokeemerald-expansion into totem

This commit is contained in:
Evan
2021-01-01 08:49:43 -07:00
12 changed files with 284 additions and 35 deletions

View File

@@ -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 =
{

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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;
}

View File

@@ -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,
},
};

View File

@@ -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,
};

View File

@@ -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"),
};