fix: fixed shadows not spawning across maps for OWs with the same localId
This commit is contained in:
parent
d3a4839808
commit
3e32291907
@ -2441,7 +2441,7 @@ static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 lightType) {
|
||||
sprite->centerToCornerVecX = -(32 >> 1);
|
||||
sprite->centerToCornerVecY = -(32 >> 1);
|
||||
sprite->oam.priority = 1;
|
||||
sprite->oam.objMode = 1; // BLEND
|
||||
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
sprite->x += 8;
|
||||
sprite->y += 22 + sprite->centerToCornerVecY;
|
||||
@ -2451,7 +2451,7 @@ static void SpawnLightSprite(s16 x, s16 y, s16 camX, s16 camY, u32 lightType) {
|
||||
sprite->centerToCornerVecY = -(16 >> 1);
|
||||
sprite->oam.priority = 2;
|
||||
sprite->subpriority = 0xFF;
|
||||
sprite->oam.objMode = 1; // BLEND
|
||||
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -56,8 +56,8 @@ u32 FldEff_Shadow(void);
|
||||
|
||||
void SetUpShadow(struct ObjectEvent *objectEvent, struct Sprite *sprite) {
|
||||
gFieldEffectArguments[0] = objectEvent->localId;
|
||||
gFieldEffectArguments[1] = gSaveBlock1Ptr->location.mapNum;
|
||||
gFieldEffectArguments[2] = gSaveBlock1Ptr->location.mapGroup;
|
||||
gFieldEffectArguments[1] = objectEvent->mapNum;
|
||||
gFieldEffectArguments[2] = objectEvent->mapGroup;
|
||||
FldEff_Shadow();
|
||||
}
|
||||
|
||||
@ -329,7 +329,11 @@ u32 FldEff_Shadow(void)
|
||||
s32 i;
|
||||
for (i = MAX_SPRITES - 1; i > -1; i--) { // Search backwards, because of CreateSpriteAtEnd
|
||||
// Return early if a shadow sprite already exists
|
||||
if (gSprites[i].data[0] == gFieldEffectArguments[0] && gSprites[i].callback == UpdateShadowFieldEffect)
|
||||
if (gSprites[i].callback == UpdateShadowFieldEffect &&
|
||||
gSprites[i].sLocalId == gFieldEffectArguments[0] &&
|
||||
gSprites[i].sMapNum == gFieldEffectArguments[1] &&
|
||||
gSprites[i].sMapGroup == gFieldEffectArguments[2]
|
||||
)
|
||||
return 0;
|
||||
}
|
||||
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
|
||||
@ -341,7 +345,7 @@ u32 FldEff_Shadow(void)
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
// SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 12));
|
||||
gSprites[spriteId].oam.objMode = 1; // BLEND
|
||||
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
|
||||
gSprites[spriteId].coordOffsetEnabled = TRUE;
|
||||
gSprites[spriteId].sLocalId = gFieldEffectArguments[0];
|
||||
gSprites[spriteId].sMapNum = gFieldEffectArguments[1];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user