Mat Block

Nothing more needs to be said
This commit is contained in:
Papa Cancer 2019-03-31 17:17:13 +01:00
parent 17e74756cb
commit ebe2dc6bbb
6 changed files with 25 additions and 4 deletions

View File

@ -345,6 +345,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
.4byte BattleScript_EffectPartingShot
.4byte BattleScript_EffectSpectralThief
.4byte BattleScript_EffectVCreate
.4byte BattleScript_EffectMatBlock
BattleScript_EffectVCreate:
setmoveeffect MOVE_EFFECT_V_CREATE | MOVE_EFFECT_AFFECTS_USER
@ -3148,9 +3149,15 @@ BattleScript_DoGhostCurse::
tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectMatBlock::
attackcanceler
jumpifnotfirstturn BattleScript_ButItFailedAtkStringPpReduce
goto BattleScript_ProtectLikeAtkString
BattleScript_EffectProtect::
BattleScript_EffectEndure::
attackcanceler
BattleScript_ProtectLikeAtkString:
attackstring
ppreduce
setprotectlike

View File

@ -212,6 +212,7 @@
#define SIDE_STATUS_QUICK_GUARD (1 << 18)
#define SIDE_STATUS_WIDE_GUARD (1 << 19)
#define SIDE_STATUS_CRAFTY_SHIELD (1 << 20)
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
// Field affecting statuses.
#define STATUS_FIELD_MAGIC_ROOM 0x1

View File

@ -333,5 +333,6 @@
#define EFFECT_PARTING_SHOT 327
#define EFFECT_SPECTRAL_THIEF 328
#define EFFECT_V_CREATE 329
#define EFFECT_MAT_BLOCK 330
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -4593,8 +4593,8 @@ static void TurnValuesCleanUp(bool8 var0)
gBattleMons[gActiveBattler].status2 &= ~(STATUS2_SUBSTITUTE);
}
gSideStatuses[0] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD);
gSideStatuses[1] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD);
gSideStatuses[0] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD | SIDE_STATUS_MAT_BLOCK);
gSideStatuses[1] &= ~(SIDE_STATUS_QUICK_GUARD | SIDE_STATUS_WIDE_GUARD | SIDE_STATUS_CRAFTY_SHIELD | SIDE_STATUS_MAT_BLOCK);
gSideTimers[0].followmeTimer = 0;
gSideTimers[1].followmeTimer = 0;
}

View File

@ -906,6 +906,9 @@ bool32 IsBattlerProtected(u8 battlerId, u16 move)
else if (gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_CRAFTY_SHIELD
&& gBattleMoves[move].power == 0)
return TRUE;
else if (gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_MAT_BLOCK
&& gBattleMoves[move].power != 0)
return TRUE;
else
return FALSE;
}
@ -2723,6 +2726,7 @@ void SetMoveEffect(bool32 primary, u32 certain)
|| gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_WIDE_GUARD
|| gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_QUICK_GUARD
|| gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_CRAFTY_SHIELD
|| gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_MAT_BLOCK
|| gProtectStructs[gBattlerTarget].spikyShielded
|| gProtectStructs[gBattlerTarget].kingsShielded
|| gProtectStructs[gBattlerTarget].banefulBunkered)
@ -2731,6 +2735,7 @@ void SetMoveEffect(bool32 primary, u32 certain)
gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~(SIDE_STATUS_WIDE_GUARD);
gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~(SIDE_STATUS_QUICK_GUARD);
gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~(SIDE_STATUS_CRAFTY_SHIELD);
gSideStatuses[GetBattlerSide(gBattlerTarget)] &= ~(SIDE_STATUS_MAT_BLOCK);
gProtectStructs[gBattlerTarget].spikyShielded = 0;
gProtectStructs[gBattlerTarget].kingsShielded = 0;
gProtectStructs[gBattlerTarget].banefulBunkered = 0;
@ -7379,6 +7384,12 @@ static void atk77_setprotectlike(void)
gDisableStructs[gBattlerAttacker].protectUses++;
fail = FALSE;
}
else if (gCurrentMove == MOVE_MAT_BLOCK && !(gSideStatuses[side] & SIDE_STATUS_MAT_BLOCK))
{
gSideStatuses[side] |= SIDE_STATUS_MAT_BLOCK;
gBattleCommunication[MULTISTRING_CHOOSER] = 3;
fail = FALSE;
}
}
}

View File

@ -7870,16 +7870,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_MAT_BLOCK] =
{
.effect = EFFECT_PLACEHOLDER, // Needs a custom move effect
.effect = EFFECT_MAT_BLOCK,
.power = 0,
.type = TYPE_FIGHTING,
.accuracy = 0,
.pp = 15,
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.target = MOVE_TARGET_USER,
.priority = 0,
.flags = 0,
.split = SPLIT_STATUS,
.argument = TRUE, // Protects the whole side.
},
[MOVE_BELCH] =