Skip to content

Commit

Permalink
Restructure event flags in z64save.h (4/?): Haggling Townsfolk (#2395)
Browse files Browse the repository at this point in the history
* Haggling Townsfolk flags

* suggestion

* so there's not going to be a We U?
  • Loading branch information
mzxrules authored Jan 18, 2025
1 parent 260d92d commit 161c789
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 18 deletions.
26 changes: 20 additions & 6 deletions include/z64save.h
Original file line number Diff line number Diff line change
Expand Up @@ -968,12 +968,26 @@ typedef enum IngoRaceState {
#define EVENTINF_MARATHON_ACTIVE 0x10

// EVENTINF 0x20-0x24
#define EVENTINF_INDEX_20_21_22_23_24 2
#define EVENTINF_20_MASK (1 << 0)
#define EVENTINF_21_MASK (1 << 1)
#define EVENTINF_22_MASK (1 << 2)
#define EVENTINF_23_MASK (1 << 3)
#define EVENTINF_24_MASK (1 << 4)
#define EVENTINF_INDEX_HAGGLING_TOWNSFOLK 0x2
#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_0 0x20
#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_1 0x21
#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_2 0x22
#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_3 0x23
#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_4 0x24

#define EVENTINF_HAGGLING_TOWNSFOLK_MASK \
(EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_0) | EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_1) | \
EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_2) | EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_3) | \
EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_4))

#define GET_EVENTINF_ENMU_TALK_FLAGS() \
gSaveContext.eventInf[EVENTINF_INDEX_HAGGLING_TOWNSFOLK] & EVENTINF_HAGGLING_TOWNSFOLK_MASK

#define SET_EVENTINF_ENMU_TALK_FLAGS(talkFlags) \
gSaveContext.eventInf[EVENTINF_INDEX_HAGGLING_TOWNSFOLK] |= (talkFlags);

#define RESET_EVENTINF_ENMU_TALK_FLAGS() \
gSaveContext.eventInf[EVENTINF_INDEX_HAGGLING_TOWNSFOLK] &= ~(EVENTINF_HAGGLING_TOWNSFOLK_MASK);

#define EVENTINF_30 0x30

Expand Down
24 changes: 12 additions & 12 deletions src/overlays/actors/ovl_En_Mu/z_en_mu.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,21 +58,21 @@ void EnMu_SetupAction(EnMu* this, EnMuActionFunc actionFunc) {
void EnMu_Interact(EnMu* this, PlayState* play) {
u8 textIdOffset[] = { 0x42, 0x43, 0x3F, 0x41, 0x3E };
u8 bitmask[] = {
EVENTINF_20_MASK, EVENTINF_21_MASK, EVENTINF_22_MASK, EVENTINF_23_MASK, EVENTINF_24_MASK,
EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_0), EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_1),
EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_2), EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_3),
EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_4),
};
u8 textFlags;
u8 talkFlags;
s32 randomIndex;
s32 i;

textFlags = gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] &
(EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK);
gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] &=
~(EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK);
talkFlags = GET_EVENTINF_ENMU_TALK_FLAGS();
RESET_EVENTINF_ENMU_TALK_FLAGS();
randomIndex = (play->state.frames + (s32)(Rand_ZeroOne() * 5.0f)) % 5;

// Starting at randomIndex, scan sequentially for the next unspoken message
for (i = 0; i < 5; i++) {

if (!(textFlags & bitmask[randomIndex])) {
if (!(talkFlags & bitmask[randomIndex])) {
break;
}

Expand All @@ -82,20 +82,20 @@ void EnMu_Interact(EnMu* this, PlayState* play) {
}
}

// If all 5 messages have been spoken, reset but prevent the last message from being repeated
if (i == 5) {
if (this->defaultTextId == (textIdOffset[randomIndex] | 0x7000)) {
randomIndex++;
if (randomIndex >= 5) {
randomIndex = 0;
}
}
textFlags = 0;
talkFlags = 0;
}

textFlags |= bitmask[randomIndex];
talkFlags |= (u8)bitmask[randomIndex];
this->defaultTextId = textIdOffset[randomIndex] | 0x7000;
textFlags &= EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK | 0xE0;
gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] |= textFlags;
SET_EVENTINF_ENMU_TALK_FLAGS(talkFlags);
}

u16 EnMu_GetTextId(PlayState* play, Actor* thisx) {
Expand Down

0 comments on commit 161c789

Please sign in to comment.