Merge branch 'followers-expanded-id' into lighting-expanded-id

This commit is contained in:
Ariel A 2023-03-13 18:19:35 -04:00
commit 284ec24e0c
3 changed files with 25 additions and 23 deletions

View File

@ -274,6 +274,7 @@ RusturfTunnel_EventScript_TunnelBlockagePos3::
RusturfTunnel_EventScript_AquaGruntBackUp::
lockall
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
msgbox RusturfTunnel_Text_ComeAndGetSome, MSGBOX_DEFAULT
closemessage
applymovement LOCALID_GRUNT, RusturfTunnel_Movement_GruntAndPeekoBackUp
@ -529,4 +530,3 @@ RusturfTunnel_Text_MikePostBattle:
.string "They halted development here to\n"
.string "protect POKéMON, right?\l"
.string "There's a feel-good story!$"

View File

@ -10,9 +10,10 @@ EventScript_TrainerApproach::
EventScript_TryDoNormalTrainerBattle::
lock
faceplayer
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
applymovement VAR_LAST_TALKED, Movement_RevealTrainer
waitmovement 0
clearflag FLAG_SAFE_FOLLOWER_MOVEMENT
specialvar VAR_RESULT, GetTrainerFlag
goto_if_ne VAR_RESULT, FALSE, EventScript_NoNormalTrainerBattle
special PlayTrainerEncounterMusic
@ -45,9 +46,10 @@ EventScript_NoDoubleTrainerBattle::
gotopostbattlescript
EventScript_DoNoIntroTrainerBattle::
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
applymovement VAR_LAST_TALKED, Movement_RevealTrainer
waitmovement 0
clearflag FLAG_SAFE_FOLLOWER_MOVEMENT
special PlayTrainerEncounterMusic
dotrainerbattle
gotopostbattlescript
@ -95,9 +97,10 @@ EventScript_NotEnoughMonsForDoubleRematchBattle::
end
EventScript_RevealTrainer::
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
applymovement VAR_LAST_TALKED, Movement_RevealTrainer
waitmovement 0
clearflag FLAG_SAFE_FOLLOWER_MOVEMENT
return
Movement_RevealTrainer:

View File

@ -1620,6 +1620,18 @@ static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate
CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables);
}
// Loads information from graphicsId, with shininess separate
// also can write palette tag to the template
static u8 LoadDynamicFollowerPaletteFromGraphicsId(u16 graphicsId, bool8 shiny, struct SpriteTemplate *template) {
u16 species = ((graphicsId & OBJ_EVENT_GFX_SPECIES_MASK) - OBJ_EVENT_GFX_MON_BASE);
u8 form = (graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS);
const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species];
u8 paletteNum = LoadDynamicFollowerPalette(species, form, shiny);
if (template)
template->paletteTag = spritePalette->tag;
return paletteNum;
}
// Used to create a sprite using a graphicsId associated with object events.
u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
@ -1627,29 +1639,16 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *),
const struct SubspriteTable *subspriteTables;
struct Sprite *sprite;
u8 spriteId;
u16 species;
u8 form;
bool8 shiny;
u8 paletteNum;
u32 paletteNum;
spriteTemplate = Alloc(sizeof(struct SpriteTemplate));
if (graphicsId >= OBJ_EVENT_GFX_MON_BASE && GetFollowerInfo(&species, &form, &shiny)) {
const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form);
spriteTemplate->tileTag = graphicsInfo->tileTag;
spriteTemplate->paletteTag = graphicsInfo->paletteTag;
spriteTemplate->oam = graphicsInfo->oam;
spriteTemplate->anims = graphicsInfo->anims;
spriteTemplate->images = graphicsInfo->images;
spriteTemplate->affineAnims = graphicsInfo->affineAnims;
spriteTemplate->callback = callback;
subspriteTables = graphicsInfo->subspriteTables;
} else
CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables);
CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables);
if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) {
const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species];
paletteNum = LoadDynamicFollowerPalette(species, form, shiny);
spriteTemplate->paletteTag = spritePalette->tag;
struct ObjectEvent *obj = GetFollowerObject();
// Use shininess info from follower object
// in future this should be passed in
paletteNum = LoadDynamicFollowerPaletteFromGraphicsId(graphicsId, obj ? obj->shiny : FALSE, spriteTemplate);
} else if (spriteTemplate->paletteTag != TAG_NONE)
LoadObjectEventPalette(spriteTemplate->paletteTag);