fix palette issue after questlog

This commit is contained in:
cawtds 2024-07-17 19:24:39 +02:00
parent 44cfca0e1b
commit d40b9bc855
5 changed files with 25 additions and 12 deletions

View File

@ -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": [

View File

@ -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);

View File

@ -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,

View File

@ -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);
}
}

View File

@ -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;