small updates, first idea for loreleis team

This commit is contained in:
cawtds 2024-05-11 17:49:45 +02:00
parent a657e59277
commit b00c2d08ab
4 changed files with 77 additions and 34 deletions

View File

@ -3901,13 +3901,12 @@ static void HandleTurnActionSelectionState(void)
else if (gBattleResources->bufferB[battler][2] & RET_DYNAMAX)
gBattleStruct->dynamax.toDynamax |= gBitTable[battler];
// TODO: Dynamax
// Max Move check
// if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler]))
// {
// gBattleStruct->dynamax.baseMove[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]];
// gBattleStruct->dynamax.usingMaxMove[battler] = TRUE;
// }
if (ShouldUseMaxMove(battler, gChosenMoveByBattler[battler]))
{
gBattleStruct->dynamax.baseMove[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]];
gBattleStruct->dynamax.usingMaxMove[battler] = TRUE;
}
gBattleCommunication[battler]++;
}
@ -3999,9 +3998,34 @@ static void HandleTurnActionSelectionState(void)
break;
}
}
// Check if everyone chose actions.
if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gBattlersCount)
{
if (WILD_DOUBLE_BATTLE
&& gBattleStruct->throwingPokeBall
&& gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)] != B_ACTION_NOTHING_FAINTED)
{
// if we choose to throw a ball with our second mon, skip the action of the first
// (if we have chosen throw ball with first, second's is already skipped)
// if throwing a ball in a wild battle with an in-game partner, skip partner's turn when throwing a ball
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)] = B_ACTION_NOTHING_FAINTED;
else
gChosenActionByBattler[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)] = B_ACTION_NOTHING_FAINTED;
}
gBattleMainFunc = SetActionsAndBattlersTurnOrder;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
for (i = 0; i < gBattlersCount; i++)
{
if (gChosenActionByBattler[i] == B_ACTION_SWITCH)
SwitchPartyOrderInGameMulti(i, *(gBattleStruct->monToSwitchIntoId + i));
}
}
}
}
static void UpdateBattlerPartyOrdersOnSwitch(u32 battler)

View File

@ -1400,14 +1400,13 @@ static void Cmd_attackcanceler(void)
}
// Z-moves and Max Moves bypass protection, but deal reduced damage (factored in AccumulateOtherModifiers)
// TODO: Z-Moves and Dynamax
// if ((gBattleStruct->zmove.active || IsMaxMove(gCurrentMove))
// && IS_BATTLER_PROTECTED(gBattlerTarget))
// {
// BattleScriptPush(cmd->nextInstr);
// gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect;
// return;
// }
if ((gBattleStruct->zmove.active || IsMaxMove(gCurrentMove))
&& IS_BATTLER_PROTECTED(gBattlerTarget))
{
BattleScriptPush(cmd->nextInstr);
gBattlescriptCurrInstr = BattleScript_CouldntFullyProtect;
return;
}
for (i = 0; i < gBattlersCount; i++)
{
@ -6373,7 +6372,7 @@ static void Cmd_getswitchedmondata(void)
u32 battler = GetBattlerForBattleScript(cmd->battler);
if (gBattleControllerExecFlags)
return;
gBattlerPartyIndexes[battler] = gBattleStruct->monToSwitchIntoId[battler];
BtlController_EmitGetMonData(battler, BUFFER_A, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[battler]]);
MarkBattlerForControllerExec(battler);

View File

@ -3,6 +3,7 @@
#include "battle.h"
#include "data.h"
#include "graphics.h"
#include "constants/abilities.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/battle_ai.h"

View File

@ -4799,39 +4799,58 @@ static const struct TrainerMon sParty_CooltrainerJulie[] = {
static const struct TrainerMon sParty_EliteFourLorelei[] = {
{
.iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30),
.iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
.lvl = 52,
.species = SPECIES_DEWGONG,
.heldItem = ITEM_NONE,
.moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_HAIL, MOVE_SAFEGUARD},
.species = SPECIES_NINETALES_ALOLAN,
.ability = ABILITY_SNOW_WARNING,
.heldItem = ITEM_ICY_ROCK,
.nature = NATURE_TIMID,
.moves = {MOVE_BLIZZARD, MOVE_MOONBLAST, MOVE_AURORA_VEIL, MOVE_CHILLING_WATER},
},
{
.iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30),
.iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
.lvl = 51,
.species = SPECIES_CLOYSTER,
.heldItem = ITEM_NONE,
.moves = {MOVE_SPIKES, MOVE_PROTECT, MOVE_HAIL, MOVE_DIVE},
.species = SPECIES_GLACEON,
.ability = ABILITY_SNOW_CLOAK,
.heldItem = ITEM_CHOICE_SPECS,
.nature = NATURE_TIMID,
.moves = {MOVE_ICE_BEAM, MOVE_SHADOW_BALL, MOVE_BLIZZARD, MOVE_ALLURING_VOICE},
},
{
.iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30),
.iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
.lvl = 52,
.species = SPECIES_SLOWBRO,
.heldItem = ITEM_NONE,
.moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_AMNESIA, MOVE_YAWN},
.species = SPECIES_CLOYSTER,
.ability = ABILITY_SKILL_LINK,
.heldItem = ITEM_FOCUS_SASH,
.nature = NATURE_JOLLY,
.moves = {MOVE_SHELL_SMASH, MOVE_ICICLE_SPEAR, MOVE_ICE_SHARD, MOVE_SPIKES},
},
{
.iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30),
.iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
.lvl = 54,
.species = SPECIES_JYNX,
.heldItem = ITEM_NONE,
.moves = {MOVE_ICE_PUNCH, MOVE_DOUBLE_SLAP, MOVE_LOVELY_KISS, MOVE_ATTRACT},
.species = SPECIES_MR_RIME,
.ability = ABILITY_ICE_BODY,
.heldItem = ITEM_LIGHT_CLAY,
.nature = NATURE_MODEST,
.moves = {MOVE_HAIL, MOVE_PSYCHIC, MOVE_FREEZE_DRY, MOVE_ICE_BEAM},
},
{
.iv = TRAINER_PARTY_IVS(30, 30, 30, 30, 30, 30),
.iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
.lvl = 54,
.species = SPECIES_ARTICUNO,
.ability = ABILITY_SNOW_CLOAK,
.heldItem = ITEM_HEAVY_DUTY_BOOTS,
.nature = NATURE_TIMID,
.moves = {MOVE_BLIZZARD, MOVE_ROOST, MOVE_EXTRASENSORY, MOVE_ICE_BEAM},
},
{
.iv = TRAINER_PARTY_IVS(31, 31, 31, 31, 31, 31),
.lvl = 54,
.species = SPECIES_LAPRAS,
.heldItem = ITEM_SITRUS_BERRY,
.moves = {MOVE_CONFUSE_RAY, MOVE_ICE_BEAM, MOVE_SURF, MOVE_BODY_SLAM},
.ability = ABILITY_SHELL_ARMOR,
.heldItem = ITEM_LEFTOVERS,
.nature = NATURE_CALM,
.moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_PERISH_SONG},
},
};