checkteratype setteratype (#4460)
This commit is contained in:
parent
8d175ebe89
commit
c5552f53da
3 changed files with 48 additions and 0 deletions
|
@ -2172,3 +2172,16 @@
|
||||||
.2byte \status1
|
.2byte \status1
|
||||||
.2byte \slot
|
.2byte \slot
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ Sets VAR_RESULT to the Pokémon in \slot's Tera Type
|
||||||
|
.macro checkteratype slot:req
|
||||||
|
callnative CheckTeraType
|
||||||
|
.2byte \slot
|
||||||
|
.endm
|
||||||
|
|
||||||
|
@ Sets the Pokémon in \slot's Tera Type
|
||||||
|
.macro setteratype type:req, slot:req
|
||||||
|
callnative SetTeraType
|
||||||
|
.byte \type
|
||||||
|
.2byte \slot
|
||||||
|
.endm
|
||||||
|
|
|
@ -294,6 +294,25 @@ void ToggleGigantamaxFactor(struct ScriptContext *ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CheckTeraType(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u32 partyIndex = VarGet(ScriptReadHalfword(ctx));
|
||||||
|
|
||||||
|
gSpecialVar_Result = TYPE_NONE;
|
||||||
|
|
||||||
|
if (partyIndex < PARTY_SIZE)
|
||||||
|
gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TERA_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetTeraType(struct ScriptContext *ctx)
|
||||||
|
{
|
||||||
|
u32 type = ScriptReadByte(ctx);
|
||||||
|
u32 partyIndex = VarGet(ScriptReadHalfword(ctx));
|
||||||
|
|
||||||
|
if (type < NUMBER_OF_MON_TYPES && partyIndex < PARTY_SIZE)
|
||||||
|
SetMonData(&gPlayerParty[partyIndex], MON_DATA_TERA_TYPE, &type);
|
||||||
|
}
|
||||||
|
|
||||||
u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 nature, u8 abilityNum, u8 gender, u8 *evs, u8 *ivs, u16 *moves, bool8 isShiny, bool8 ggMaxFactor, u8 teraType)
|
u32 ScriptGiveMonParameterized(u16 species, u8 level, u16 item, u8 ball, u8 nature, u8 abilityNum, u8 gender, u8 *evs, u8 *ivs, u16 *moves, bool8 isShiny, bool8 ggMaxFactor, u8 teraType)
|
||||||
{
|
{
|
||||||
u16 nationalDexNum;
|
u16 nationalDexNum;
|
||||||
|
|
|
@ -307,3 +307,19 @@ TEST("givemon [vars]")
|
||||||
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_GIGANTAMAX_FACTOR), TRUE);
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_GIGANTAMAX_FACTOR), TRUE);
|
||||||
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_TERA_TYPE), TYPE_FIRE);
|
EXPECT_EQ(GetMonData(&gPlayerParty[0], MON_DATA_TERA_TYPE), TYPE_FIRE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST("checkteratype/setteratype work")
|
||||||
|
{
|
||||||
|
CreateMon(&gPlayerParty[0], SPECIES_WOBBUFFET, 100, 0, FALSE, 0, OT_ID_PRESET, 0);
|
||||||
|
|
||||||
|
RUN_OVERWORLD_SCRIPT(
|
||||||
|
checkteratype 0;
|
||||||
|
);
|
||||||
|
EXPECT(VarGet(VAR_RESULT) == TYPE_PSYCHIC);
|
||||||
|
|
||||||
|
RUN_OVERWORLD_SCRIPT(
|
||||||
|
setteratype TYPE_FIRE, 0;
|
||||||
|
checkteratype 0;
|
||||||
|
);
|
||||||
|
EXPECT(VarGet(VAR_RESULT) == TYPE_FIRE);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue