diff --git a/data/maps/Route2/map.json b/data/maps/Route2/map.json index ae86c838d..af9d59972 100644 --- a/data/maps/Route2/map.json +++ b/data/maps/Route2/map.json @@ -111,12 +111,18 @@ "flag": "FLAG_HIDE_ROUTE2_PARALYZE_HEAL" }, { - "type": "clone", + "type": "object", "graphics_id": "OBJ_EVENT_GFX_CUT_TREE", "x": 6, "y": 85, - "target_local_id": 8, - "target_map": "MAP_VIRIDIAN_CITY" + "elevation": 3, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "EventScript_CutTree", + "flag": "FLAG_TEMP_17" } ], "warp_events": [ diff --git a/include/event_object_movement.h b/include/event_object_movement.h index c2dbc971a..646e10b60 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -113,7 +113,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *); void CameraObjectReset1(void); void CameraObjectReset2(void); u8 UpdateSpritePaletteByTemplate(const struct SpriteTemplate *template, struct Sprite *sprite); -void ObjectEventSetGraphicsId(struct ObjectEvent *, u16 graphicsId); +void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId); void ObjectEventTurn(struct ObjectEvent *, u8); void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8); void ObjectEventForceSetHeldMovement(struct ObjectEvent *, u8); @@ -146,7 +146,6 @@ void OverrideMovementTypeForObjectEvent(const struct ObjectEvent *, u8); void SetTrainerMovementType(struct ObjectEvent *, u8); u8 GetFishingDirectionAnimNum(u8 direction); u8 GetFishingNoCatchDirectionAnimNum(u8 a0); -void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u16 graphicsId); u8 CreateFameCheckerObject(u16 graphicsId, u8 localId, s16 x, s16 y); void InitObjectEventPalettes(u8 mode); bool8 ObjectEventIsMovementOverridden(struct ObjectEvent *objectEvent); diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h index 30a748001..9e9f3d7bb 100644 --- a/src/data/field_effects/field_effect_objects.h +++ b/src/data/field_effects/field_effect_objects.h @@ -20,7 +20,7 @@ static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = { obj_frame_ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, .oam = &gObjectEventBaseOam_8x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowSmall, @@ -31,7 +31,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, .oam = &gObjectEventBaseOam_16x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowMedium, @@ -42,7 +42,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, .oam = &gObjectEventBaseOam_32x8, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowLarge, @@ -53,7 +53,7 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = { .tileTag = TAG_NONE, - .paletteTag = TAG_NONE, + .paletteTag = OBJ_EVENT_PAL_TAG_PLAYER_RED, .oam = &gObjectEventBaseOam_64x32, .anims = sAnimTable_Shadow, .images = sPicTable_ShadowExtraLarge, diff --git a/src/event_object_movement.c b/src/event_object_movement.c index ddf39563c..f1a639d94 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1965,6 +1965,7 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny) spritePalette.data = (void*)gDecompressionBuffer; } paletteNum = LoadSpritePalette(&spritePalette); + ApplyGlobalFieldPaletteTint(paletteNum); } else #endif //OW_POKEMON_OBJECT_EVENTS == TRUE && OW_PKMN_OBJECTS_SHARE_PALETTES == FALSE @@ -1979,6 +1980,7 @@ static u8 LoadDynamicFollowerPalette(u16 species, u8 form, bool32 shiny) // Load compressed palette LoadCompressedSpritePaletteWithTag(palette, species); paletteNum = IndexOfSpritePaletteTag(species); // Tag is always present + ApplyGlobalFieldPaletteTint(paletteNum); } if (gWeatherPtr->currWeather != WEATHER_FOG_HORIZONTAL) // don't want to weather blend in fog @@ -2684,7 +2686,9 @@ static u8 UpdateSpritePalette(const struct SpritePalette *spritePalette, struct sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - return sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + sprite->oam.paletteNum = LoadSpritePalette(spritePalette); + ApplyGlobalFieldPaletteTint(sprite->oam.paletteNum); + return sprite->oam.paletteNum; } // Find and update based on template's paletteTag @@ -2883,6 +2887,7 @@ static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette if (paletteNum != 0xFF) // don't load twice; return return paletteNum; paletteNum = LoadSpritePalette(spritePalette); + ApplyGlobalFieldPaletteTint(paletteNum); return paletteNum; } @@ -3366,12 +3371,12 @@ void InitObjectEventPalettes(u8 reflectionType) sCurrentReflectionType = reflectionType; if (reflectionType == 1) { - PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], PALSLOT_PLAYER, PALSLOT_NPC_4 + 1); + PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], PALSLOT_PLAYER, OBJ_PALSLOT_COUNT); gReservedSpritePaletteCount = 8; } else { - PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], PALSLOT_PLAYER, PALSLOT_NPC_4_REFLECTION + 1); + PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], PALSLOT_PLAYER, OBJ_PALSLOT_COUNT); } } diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index b13915699..26a420956 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -156,6 +156,7 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent, else ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); paletteNum = LoadSpritePalette(&filteredPal); + ApplyGlobalFieldPaletteTint(paletteNum); UpdateSpritePaletteWithWeather(paletteNum); } sprite->oam.paletteNum = paletteNum; @@ -170,6 +171,7 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven struct SpritePalette bluePalette = {.tag = HIGH_BRIDGE_PAL_TAG, .data = blueData}; CpuFill16(0x55C9, blueData, PLTT_SIZE_4BPP); sprite->oam.paletteNum = LoadSpritePalette(&bluePalette); + ApplyGlobalFieldPaletteTint(sprite->oam.paletteNum); UpdateSpritePaletteWithWeather(sprite->oam.paletteNum); } @@ -206,6 +208,7 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite) else ApplyIceFilter(mainSprite->oam.paletteNum, filteredData); paletteNum = LoadSpritePalette(&filteredPal); + ApplyGlobalFieldPaletteTint(paletteNum); UpdateSpritePaletteWithWeather(paletteNum); } reflectionSprite->oam.paletteNum = paletteNum;