Rock climb by ghoulslash (#7432)

Co-authored-by: Evan <eroelke@gmail.com>
Co-authored-by: Jaizu <jaizu85@gmail.com>
Co-authored-by: ghoulslash <41651341+ghoulslash@users.noreply.github.com>
Co-authored-by: ghoulslash <pokevoyager0@gmail.com>
Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
This commit is contained in:
pokesidv
2025-08-03 14:52:07 +02:00
committed by GitHub
parent 3841fee888
commit 4d31693005
26 changed files with 567 additions and 13 deletions

View File

@@ -40,6 +40,8 @@ extern const struct SpriteTemplate gFieldEffectObjectTemplate_SlitherTracks;
extern const struct SpriteTemplate gFieldEffectObjectTemplate_BugTracks;
extern const struct SpriteTemplate gFieldEffectObjectTemplate_SpotTracks;
extern const struct SpriteTemplate gFieldEffectObjectTemplate_CaveDust;
extern const struct SpriteTemplate gFieldEffectObjectTemplate_RockClimbBlob;
extern const struct SpriteTemplate gFieldEffectObjectTemplate_RockClimbDust;
const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
[FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall,
@@ -83,4 +85,6 @@ const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
[FLDEFFOBJ_TRACKS_SPOT] = &gFieldEffectObjectTemplate_SpotTracks,
[FLDEFFOBJ_TRACKS_BUG] = &gFieldEffectObjectTemplate_BugTracks,
[FLDEFFOBJ_CAVE_DUST] = &gFieldEffectObjectTemplate_CaveDust,
[FLDEFFOBJ_ROCK_CLIMB_BLOB] = &gFieldEffectObjectTemplate_RockClimbBlob,
[FLDEFFOBJ_ROCK_CLIMB_DUST] = &gFieldEffectObjectTemplate_RockClimbDust,
};

View File

@@ -1404,3 +1404,47 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_CaveDust = {
};
const struct SpritePalette gSpritePalette_CaveDust = {gFieldEffectObjectPalette_CaveDust, FLDEFF_PAL_TAG_CAVE_DUST};
static const struct SpriteFrameImage sPicTable_RockClimbBlob[] = {
overworld_frame(gFieldEffectObjectPic_RockClimbBlob, 4, 4, 1),
overworld_frame(gFieldEffectObjectPic_RockClimbBlob, 4, 4, 0),
overworld_frame(gFieldEffectObjectPic_RockClimbBlob, 4, 4, 2),
};
const struct SpriteTemplate gFieldEffectObjectTemplate_RockClimbBlob = {
.tileTag = 0xFFFF,
.paletteTag = 0xFFFF,
.oam = &gObjectEventBaseOam_32x32,
.anims = sAnimTable_SurfBlob,
.images = sPicTable_RockClimbBlob,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = UpdateSurfBlobFieldEffect,
};
static const union AnimCmd sAnim_RockClimbDust[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 12),
ANIMCMD_FRAME(2, 12),
ANIMCMD_END,
};
static const union AnimCmd *const sAnimTable_RockClimbDust[] =
{
sAnim_RockClimbDust,
};
static const struct SpriteFrameImage sPicTable_RockClimbDust[] = {
overworld_frame(gFieldEffectObjectPic_RockClimbDust, 4, 4, 0),
overworld_frame(gFieldEffectObjectPic_RockClimbDust, 4, 4, 1),
overworld_frame(gFieldEffectObjectPic_RockClimbDust, 4, 4, 2),
};
const struct SpriteTemplate gFieldEffectObjectTemplate_RockClimbDust = {
.tileTag = 0xFFFF,
.paletteTag = FLDEFF_PAL_TAG_DUST_CLOUD,
.oam = &gObjectEventBaseOam_32x32,
.anims = sAnimTable_RockClimbDust,
.images = sPicTable_RockClimbDust,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = UpdateJumpImpactEffect,
};
const struct SpritePalette gSpritePalette_BigDust = {gFieldEffectPal_DustCloud, FLDEFF_PAL_TAG_DUST_CLOUD};

View File

@@ -287,6 +287,12 @@ u8 MovementAction_SurfStillLeft_Step0(struct ObjectEvent *objectEvent, struct Sp
u8 MovementAction_SurfStillLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
u8 MovementAction_SurfStillRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite);
u8 MovementAction_SurfStillRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite);
//fast diagonal
u8 MovementAction_WalkFastDiagonalUpLeft_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_WalkFastDiagonalUpRight_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_WalkFastDiagonalDownLeft_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_WalkFastDiagonalDownRight_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_WalkFastDiagonal_Step1(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *);
@@ -463,6 +469,12 @@ u8 (*const gMovementActionFuncs_SurfStillDown[])(struct ObjectEvent *, struct Sp
u8 (*const gMovementActionFuncs_SurfStillUp[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_SurfStillLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_SurfStillRight[])(struct ObjectEvent *, struct Sprite *);
//fast diagonal
u8 (*const gMovementActionFuncs_WalkFastDiagonalUpLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkFastDiagonalUpRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkFastDiagonalDownLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_WalkFastDiagonalDownRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *) = {
[MOVEMENT_ACTION_FACE_DOWN] = gMovementActionFuncs_FaceDown,
@@ -639,6 +651,12 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *)
[MOVEMENT_ACTION_SURF_STILL_UP] = gMovementActionFuncs_SurfStillUp,
[MOVEMENT_ACTION_SURF_STILL_LEFT] = gMovementActionFuncs_SurfStillLeft,
[MOVEMENT_ACTION_SURF_STILL_RIGHT] = gMovementActionFuncs_SurfStillRight,
//fast diagonal
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_UP_LEFT] = gMovementActionFuncs_WalkFastDiagonalUpLeft,
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_UP_RIGHT] = gMovementActionFuncs_WalkFastDiagonalUpRight,
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_DOWN_LEFT] = gMovementActionFuncs_WalkFastDiagonalDownLeft,
[MOVEMENT_ACTION_WALK_FAST_DIAGONAL_DOWN_RIGHT] = gMovementActionFuncs_WalkFastDiagonalDownRight,
};
u8 (*const gMovementActionFuncs_FaceDown[])(struct ObjectEvent *, struct Sprite *) = {
@@ -1676,3 +1694,28 @@ u8 (*const gMovementActionFuncs_SurfStillRight[])(struct ObjectEvent *, struct S
MovementAction_SurfStillRight_Step1,
MovementAction_PauseSpriteAnim,
};
// fast diagonal
u8 (*const gMovementActionFuncs_WalkFastDiagonalUpLeft[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_WalkFastDiagonalUpLeft_Step0,
MovementAction_WalkFastDiagonal_Step1,
MovementAction_PauseSpriteAnim,
};
u8 (*const gMovementActionFuncs_WalkFastDiagonalUpRight[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_WalkFastDiagonalUpRight_Step0,
MovementAction_WalkFastDiagonal_Step1,
MovementAction_PauseSpriteAnim,
};
u8 (*const gMovementActionFuncs_WalkFastDiagonalDownLeft[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_WalkFastDiagonalDownLeft_Step0,
MovementAction_WalkFastDiagonal_Step1,
MovementAction_PauseSpriteAnim,
};
u8 (*const gMovementActionFuncs_WalkFastDiagonalDownRight[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_WalkFastDiagonalDownRight_Step0,
MovementAction_WalkFastDiagonal_Step1,
MovementAction_PauseSpriteAnim,
};

View File

@@ -286,6 +286,8 @@ const u32 gObjectEventPic_CustapBerryTree[] = INCBIN_U32("graphics/object_events
const u32 gObjectEventPic_JabocaBerryTree[] = INCBIN_U32("graphics/object_events/pics/berry_trees/jaboca.4bpp");
const u32 gObjectEventPic_RowapBerryTree[] = INCBIN_U32("graphics/object_events/pics/berry_trees/rowap.4bpp");
const u32 gFieldEffectObjectPic_SurfBlob[] = INCBIN_U32("graphics/field_effects/pics/surf_blob.4bpp");
const u32 gFieldEffectObjectPic_RockClimbBlob[] = INCBIN_U32("graphics/field_effects/pics/rock_climb_blob.4bpp");
const u32 gFieldEffectObjectPic_RockClimbDust[] = INCBIN_U32("graphics/field_effects/pics/rock_climb_dust.4bpp");
const u32 gObjectEventPic_QuintyPlump[] = INCBIN_U32("graphics/object_events/pics/people/quinty_plump.4bpp");
const u16 gObjectEventPal_QuintyPlump[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump.gbapal");
const u16 gObjectEventPal_QuintyPlumpReflection[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump_reflection.gbapal");
@@ -330,6 +332,7 @@ const u32 gFieldEffectObjectPic_MountainDisguise[] = INCBIN_U32("graphics/field_
const u32 gFieldEffectObjectPic_SandDisguisePlaceholder[] = INCBIN_U32("graphics/field_effects/pics/sand_disguise_placeholder.4bpp");
const u32 gFieldEffectObjectPic_HotSpringsWater[] = INCBIN_U32("graphics/field_effects/pics/hot_springs_water.4bpp");
const u16 gFieldEffectPal_Ash[] = INCBIN_U16("graphics/field_effects/palettes/ash.gbapal");
const u16 gFieldEffectPal_DustCloud[] = INCBIN_U16("graphics/field_effects/palettes/big_dust.gbapal");
const u32 gFieldEffectObjectPic_AshPuff[] = INCBIN_U32("graphics/field_effects/pics/ash_puff.4bpp");
const u32 gFieldEffectObjectPic_AshLaunch[] = INCBIN_U32("graphics/field_effects/pics/ash_launch.4bpp");
const u32 gFieldEffectObjectPic_Bubbles[] = INCBIN_U32("graphics/field_effects/pics/bubbles.4bpp");