Merge branch '_RHH/master' into _RHH/upcoming
# Conflicts: # data/battle_anim_scripts.s # src/battle_util.c
This commit is contained in:
commit
b4eca0a6ec
@ -16901,15 +16901,15 @@ ElectroShotUnleash:
|
||||
end
|
||||
|
||||
Move_IVY_CUDGEL::
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_GRASS
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_GRASS
|
||||
loadspritegfx ANIM_TAG_WOOD_HAMMER
|
||||
loadspritegfx ANIM_TAG_WOOD_HAMMER_HAMMER
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
|
||||
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 2, 4
|
||||
jumpifmovetypeequal TYPE_FIRE, IvyCudgelFire
|
||||
jumpifmovetypeequal TYPE_ROCK, IvyCudgelRock
|
||||
jumpifmovetypeequal TYPE_WATER, IvyCudgelWater
|
||||
jumpifmovetypeequal TYPE_FIRE, IvyCudgelFire
|
||||
jumpifmovetypeequal TYPE_ROCK, IvyCudgelRock
|
||||
jumpifmovetypeequal TYPE_WATER, IvyCudgelWater
|
||||
createsprite gIvyCudgelSpriteTemplate, ANIM_TARGET, 2
|
||||
delay 60
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
|
||||
@ -16918,9 +16918,9 @@ Move_IVY_CUDGEL::
|
||||
delay 6
|
||||
call WoodHammerImpact
|
||||
waitforvisualfinish
|
||||
end
|
||||
end
|
||||
IvyCudgelFire:
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_FIRE
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_FIRE
|
||||
createsprite gIvyCudgelFireSpriteTemplate, ANIM_TARGET, 2
|
||||
delay 60
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
|
||||
@ -16929,9 +16929,9 @@ IvyCudgelFire:
|
||||
delay 6
|
||||
call WoodHammerImpact
|
||||
waitforvisualfinish
|
||||
end
|
||||
end
|
||||
IvyCudgelRock:
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_ROCK
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_ROCK
|
||||
createsprite gIvyCudgelRockSpriteTemplate, ANIM_TARGET, 2
|
||||
delay 60
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
|
||||
@ -16940,9 +16940,9 @@ IvyCudgelRock:
|
||||
delay 6
|
||||
call WoodHammerImpact
|
||||
waitforvisualfinish
|
||||
end
|
||||
end
|
||||
IvyCudgelWater:
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_WATER
|
||||
loadspritegfx ANIM_TAG_IVY_CUDGEL_WATER
|
||||
createsprite gIvyCudgelWaterSpriteTemplate, ANIM_TARGET, 2
|
||||
delay 60
|
||||
createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4
|
||||
@ -16951,7 +16951,7 @@ IvyCudgelWater:
|
||||
delay 6
|
||||
call WoodHammerImpact
|
||||
waitforvisualfinish
|
||||
end
|
||||
end
|
||||
|
||||
Move_SPICY_EXTRACT::
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
@ -16998,8 +16998,22 @@ Move_SPICY_EXTRACT::
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
Move_TERA_BLAST::
|
||||
Move_AXE_KICK::
|
||||
loadspritegfx ANIM_TAG_HANDS_AND_FEET
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4
|
||||
delay 7
|
||||
createsprite gAxeKickSpriteTemplate, ANIM_TARGET, 3
|
||||
delay 2
|
||||
playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 1
|
||||
createvisualtask AnimTask_SquishTargetShort, 2
|
||||
waitforvisualfinish
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4
|
||||
end
|
||||
|
||||
Move_TERA_BLAST::
|
||||
Move_ORDER_UP::
|
||||
Move_SPIN_OUT::
|
||||
Move_POPULATION_BOMB::
|
||||
|
||||
@ -810,13 +810,12 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER
|
||||
#define F_DYNAMIC_TYPE_IGNORE_PHYSICALITY (1 << 6) // If set, the dynamic type's physicality won't be used for certain move effects.
|
||||
#define F_DYNAMIC_TYPE_SET (1 << 7) // Set for all dynamic types to distinguish a dynamic type of Normal (0) from no dynamic type.
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
{ \
|
||||
#define GET_MOVE_TYPE(move, typeArg) do { \
|
||||
if (gBattleStruct->dynamicMoveType) \
|
||||
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
|
||||
else \
|
||||
typeArg = gMovesInfo[move].type; \
|
||||
}
|
||||
typeArg = gMovesInfo[move].type; \
|
||||
} while(0)
|
||||
|
||||
#define IS_MOVE_PHYSICAL(move)(GetBattleMoveCategory(move) == DAMAGE_CATEGORY_PHYSICAL)
|
||||
#define IS_MOVE_SPECIAL(move)(GetBattleMoveCategory(move) == DAMAGE_CATEGORY_SPECIAL)
|
||||
|
||||
@ -110,6 +110,14 @@ static const union AffineAnimCmd sSquishTargetAffineAnimCmds[] =
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sSquishTargetShortAffineAnimCmds[] =
|
||||
{
|
||||
AFFINEANIMCMD_FRAME(0, 64, 0, 4), //Flatten
|
||||
AFFINEANIMCMD_FRAME(0, 0, 0, 16),
|
||||
AFFINEANIMCMD_FRAME(0, -64, 0, 4),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
|
||||
// GEN 4
|
||||
// shadow sneak
|
||||
const struct SpriteTemplate gShadowSneakImpactSpriteTemplate =
|
||||
@ -4801,6 +4809,17 @@ const struct SpriteTemplate gUltraBurstSymbolSpriteTemplate =
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gAxeKickSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = &gAnims_HandsAndFeet[2],
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimBounceBallLand,
|
||||
};
|
||||
|
||||
// Z MOVES
|
||||
//activate
|
||||
const struct SpriteTemplate gZMoveSymbolSpriteTemplate =
|
||||
@ -8544,6 +8563,15 @@ void AnimTask_SquishTarget(u8 taskId)
|
||||
task->func = AnimTask_WaitAffineAnim;
|
||||
}
|
||||
|
||||
void AnimTask_SquishTargetShort(u8 taskId)
|
||||
{
|
||||
struct Task* task = &gTasks[taskId];
|
||||
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
|
||||
PrepareAffineAnimInTaskData(task, spriteId, sSquishTargetShortAffineAnimCmds);
|
||||
task->func = AnimTask_WaitAffineAnim;
|
||||
}
|
||||
|
||||
void CoreEnforcerLoadBeamTarget(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0] = gBattleAnimArgs[2];
|
||||
|
||||
@ -11073,6 +11073,7 @@ static u32 SwapMoveDamageCategory(u32 move)
|
||||
|
||||
u8 GetBattleMoveCategory(u32 moveId)
|
||||
{
|
||||
u8 moveType;
|
||||
if (gBattleStruct != NULL && gBattleStruct->swapDamageCategory) // Photon Geyser, Shell Side Arm, Light That Burns the Sky, Tera Blast
|
||||
return SwapMoveDamageCategory(moveId);
|
||||
if (gBattleStruct != NULL && (IsZMove(moveId) || IsMaxMove(moveId))) // TODO: Might be buggy depending on when this is called.
|
||||
@ -11082,8 +11083,11 @@ u8 GetBattleMoveCategory(u32 moveId)
|
||||
|
||||
if (IS_MOVE_STATUS(moveId))
|
||||
return DAMAGE_CATEGORY_STATUS;
|
||||
else if (gMain.inBattle)
|
||||
GET_MOVE_TYPE(moveId, moveType);
|
||||
else
|
||||
return gTypesInfo[gMovesInfo[moveId].type].damageCategory;
|
||||
moveType = gMovesInfo[moveId].type;
|
||||
return gTypesInfo[moveType].damageCategory;
|
||||
}
|
||||
|
||||
static bool32 TryRemoveScreens(u32 battler)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user