Alchemy
Loading...
Searching...
No Matches

vault_interiors_revisit.c

Go to the documentation of this file.
1/// @file
2/// Vault's houses, shops and inn on the party's return, after the thieves have
3/// escaped from jail.
4
5#include "game_state.h"
10#include "unit/game/game.h"
11#include "battle.h"
12#include "debug.h"
13#include "field.h"
14#include "game.h"
15#include "graphics.h"
16#include "menu.h"
17#include "minigame.h"
18#include "sound.h"
19#include "system.h"
20#include "types.h"
21#include "field_event.h"
22#include "engine_call.h"
23#include "field_scene.h"
24#include "inventory.h"
25#include "text/msg_ids.h"
26#include "ability_ids.h"
27#include "item_ids.h"
28#include "flags.h"
29
30/// The townspeople, named by what they say on the party's return.
31enum {
32 ACTOR_GEM_OWNER = 8, ///< a cat ate his precious stone
34 ACTOR_CHILD = 11, ///< a child. "Daddy hasn't been paying attention"
35 ACTOR_COLOSSO_HUSBAND = 12, ///< would like to see Colosso once more
37 ACTOR_MAYOR = 16, ///< before the theft was solved, his wife called him that
39 ACTOR_COOK = 23, ///< did some cooking and has bones to spare
49};
50
51/// Set once the mayor has told Isaac the thieves escaped from jail.
53
54// Shared scene routines stay in their linked order.
56
57const struct SceneEntrance *Scene_GetEntrances(void) {
59}
60
61const struct SceneRegion *Scene_GetRegions(void) { return NULL; }
62
64
65/// Applies view conditions to the placements before the field spawns them.
68
69 FieldScene_PrepareActors(placements);
70 return placements;
71}
72
73/// The actor stands still and says the selected message.
79}
80
81/// Faces the leader and shows this resident's dialogue while standing still.
82static inline void VaultInteriorsRevisit_FaceAndSpeak(s32 actor, s32 message) {
86}
87
88/// The wife thought she saw the cat paw the gemstone on the table, and then
89/// the treasure was gone.
90static void Event_WifeSawCatTakeGem(void) {
92 MsgVaultThoughtSawCatGetUp);
93}
94
95/// The child points out Dodonpa's henchmen never attacked: maybe the thieves
96/// weren't from Lunpa after all.
99 MsgVaultDodonpasHenchmenNeverAttackedUs);
100}
101
102/// The husband would like to see Colosso in Tolbi once more before he dies.
105 MsgVaultItsNearTimeForColosso);
106}
107
108/// The mayor welcomes Isaac back: the thieves he caught escaped from jail.
109/// Asked whether the party has met them, a yes and a no get different warnings.
110static void Event_WelcomeIsaacBack(void) {
112 Engine_EventSetMessage(MsgVaultIsaacYouveComeBackVault);
121 // The negative answer advances to the next message before continuing.
123 if (Engine_EventChooseYesNo(0, 0) != 0) {
125 }
128 GameFlag_Set(0x868);
130}
131
132/// After the welcome: those thieves really wanted revenge, so take care.
133static void Event_WarnOfThievesRevenge(void) {
135 MsgVaultThoseGuysReallyWantedRevenge);
136}
137
138/// The cook has useless bones left from cooking and asks if the party wants
139/// some.
140static void Event_OfferLeftoverBones(void) {
141 VaultInteriorsRevisit_FaceAndSpeak(ACTOR_COOK, MsgVaultDidSomeCookingNowIve);
142}
143
144/// The bone giver offers leftover bones from dinner (again, once one was
145/// taken); a yes gets a Bone if there is room, a no a nod.
146static void Event_OfferBones(void) {
150 Engine_EventSetMessage(MsgVaultHaveLotLeftoverBonesFrom);
152 } else {
153 Engine_EventSetMessage(MsgVaultWantMoreBones);
155 }
156 if (Engine_EventChooseYesNo(0, 0) == 0) {
157 // Show the offer before checking whether the party can carry the gift.
163 // Give the Bone only after the offer is accepted and space is available.
164 if (PartyInventory_HasSpace() == 0) {
167 Engine_EventSetMessage(MsgVaultWowHaveManyThingsArent);
169 } else {
173 }
174 } else {
175 // Declining selects the following line and the actor's response pose.
181 }
184}
185
186/// Mind Read on the mayor before the welcome: he notices and welcomes Isaac
187/// back.
189 u8 *paused;
190 u8 unpaused = 0;
191
195 // Keep the actor paused through the conversation, then resume action 2.
197 *paused = 1;
200 *paused = unpaused;
202}
203
204// Shared Bone-item dialogue follows the actor conversations.
205#include "common/vault_bone.h"
206
207/// Across the counter the weapon shop opens; from elsewhere the merchant talks
208/// of a river of fire. It lies beyond Mt. Aleph.
209static void Event_TalkToWeaponMerchant(void) {
210 u32 leaderFacing;
211
214
215 if (FACING_IS_NORTH(leaderFacing)) {
217 } else {
218 Engine_EventSetMessage(MsgVaultTheresRiverFireOnOther);
220 }
221
223}
224
225/// Across the counter the armor shop opens; from elsewhere the merchant says
226/// the eruption split the continent in two.
227static void Event_TalkToArmorMerchant(void) {
228 u32 leaderFacing;
229
232
233 if (FACING_IS_NORTH(leaderFacing)) {
235 } else {
236 Engine_EventSetMessage(MsgVaultTheySayVolcanoOnMt);
238 }
239
241}
242
243/// Across the counter the item shop opens; from elsewhere the merchant has had
244/// few customers lately.
245static void Event_TalkToItemMerchant(void) {
246 u32 leaderFacing;
247
250
251 if (FACING_IS_NORTH(leaderFacing)) {
253 } else {
254 Engine_EventSetMessage(MsgVaultWeHaventBeenGettingMany);
256 }
257
259}
260
261/// Across the counter the inn opens; from elsewhere the innkeeper complains
262/// that no one comes, what with the volcano.
263static void Event_TalkToInnkeeper(void) {
264 u32 leaderFacing;
265
268
269 if (FACING_IS_NORTH(leaderFacing)) {
271 } else {
272 Engine_EventSetMessage(MsgVaultMmmmNothingDoNothingDo);
274 }
275
277}
278
279/// Mind Read on the bone giver: hungry while cooking, or, once a Bone was
280/// given, wondering about a calcium deficiency. The thought is whether "he" has
281/// one.
282static void Event_ReadBoneGiverMind(void) {
285 Engine_EventSetMessage(MsgVaultGeeAlwaysGetHungryWhen);
286 } else {
287 Engine_EventSetMessage(MsgVaultHeReallyLikesBonesWonder);
288 }
291}
292
293/// Returns the talk, Psynergy, search and exit event table.
294const struct SceneEvent *Scene_GetEvents(void) {
296}
297
298/// Initializes the selected interior: lowers actor 8 or starts the spot check.
300 s32 entrance;
301 s32 clearedState;
302
304 entrance = gGameState.entrance;
305
306 if (entrance == 5) {
307 // Restore the lowered actor and replacement cells in this room.
308 Map_CopyCellsTo(0, 120, 8, 67, 4, 3);
309 clearedState = 0;
310 Object_GetById(8)->motionFlags = clearedState;
311 Object_GetById(8)->y.fixed = clearedState;
312 Object_GetById(8)->terrainHeight = clearedState;
313 } else if (entrance == 7 || entrance == 11) {
314 // Show the Bone lying in the room, and track whether the leader stands
315 // beside it (FLAG_SCENE_TEMP_50).
319 }
320
321 return 0;
322}
323
324// Shared item-object routines follow the scene initializer.
325#include "common/vault_itemobj.h"
326
328 {0, CONDITION_ALWAYS, 172, 0, 149, FACING_SOUTH, 0, -1, -1, -1, -1, 0},
329 {5, CONDITION_ALWAYS, 192, 0, 220, FACING_NORTH, 0, 32, 0, 272, 240, 0},
330 {6, CONDITION_ALWAYS, 432, 0, 254, FACING_NORTH, 0, 288, 0, 528, 272, 0},
331 {7, CONDITION_ALWAYS, 720, 0, 782, FACING_NORTH, 0, 432, 576, 800, 800, 0},
332 {8, CONDITION_ALWAYS, 624, 0, 236, FACING_NORTH, 0, 560, 32, 848, 256, 0},
333 {9, CONDITION_ALWAYS, 144, 0, 492, FACING_NORTH, 0, 16, 288, 256, 512, 0},
334 {10, CONDITION_ALWAYS, 416, 0, 526, FACING_NORTH, 0, 320, 288, 592, 544, 0},
335 {11, CONDITION_ALWAYS, 744, 0, 640, FACING_SOUTH, 0, 432, 576, 800, 800, 0},
336 {12, CONDITION_ALWAYS, 358, 0, 632, FACING_SOUTH, 0, 32, 576, 400, 776, 0},
338};
339
341 SCENE_EXITS(24), SCENE_EXIT(5, 23, 5), SCENE_EXIT(6, 23, 6),
342 SCENE_EXIT(7, 23, 7), SCENE_EXIT(8, 23, 8), SCENE_EXIT(9, 23, 9),
343 SCENE_EXIT(10, 23, 10), SCENE_EXIT(11, 24, 11), SCENE_EXIT(12, 24, 12),
345};
346
347// clang-format off
349 { 0x6c, 0, ACTOR_STAND,
351 { 0x6a, 0, 3,
352 PIXELS(152), 0, PIXELS(72), FACING_WEST, TALK_FACE_PARTY, 0 },
353 { 0x65, 0, ACTOR_STAND,
354 PIXELS(456), 0, PIXELS(184), FACING_EAST, TALK_FACE_PARTY, 0 },
355 { 0x6b, 0, ACTOR_WANDER,
356 PIXELS(368), 0, PIXELS(120), FACING_SOUTH, TALK_FACE_PARTY, 0 },
357 { 0x67, 0, ACTOR_WANDER,
358 PIXELS(744), 0, PIXELS(200), FACING_SOUTH, TALK_FACE_PARTY, 0 },
359 { 0x6f, 0, ACTOR_STAND,
360 PIXELS(752), 0, PIXELS(136), FACING_SOUTH, TALK_FACE_PARTY, 0 },
361 { 0x6b, 0, ACTOR_STAND,
363 { 0x66, 0, ACTOR_STAND,
365 { 0x75, 0, ACTOR_STAND,
366 PIXELS(536), 0, PIXELS(451), FACING_SOUTH, TALK_FACE_PARTY, 0 },
367 { 0x73, 0, ACTOR_STAND,
368 PIXELS(416), 0, PIXELS(464), FACING_NORTH, TALK_FACE_PARTY, 0 },
369 { 0x6a, 0, ACTOR_STAND,
370 PIXELS(568), 0, PIXELS(648), FACING_SOUTH, TALK_FACE_PARTY, 0 },
371 { 0x7c, 0, ACTOR_STAND,
373 { 0x7d, 0, ACTOR_STAND,
375 { 0x76, 0, ACTOR_STAND,
377 { 0x77, 0, ACTOR_STAND,
379 { 0x80, 0, ACTOR_WANDER,
380 PIXELS(248), 0, PIXELS(712), FACING_SOUTH, TALK_FACE_PARTY, 0 },
381 { SCENE_TABLE_END },
382};
383
385 { EVENT_EXIT, 1, CONDITION_ALWAYS, 5 },
386 { EVENT_EXIT, 2, CONDITION_ALWAYS, 6 },
387 { EVENT_EXIT, 3, CONDITION_ALWAYS, 7 },
388 { EVENT_EXIT, 4, CONDITION_ALWAYS, 8 },
389 { EVENT_EXIT, 5, CONDITION_ALWAYS, 9 },
390 { EVENT_EXIT, 6, CONDITION_ALWAYS, 10 },
391 { EVENT_EXIT, 7, CONDITION_ALWAYS, 11 },
392 { EVENT_EXIT, 8, CONDITION_ALWAYS, 12 },
393 { EVENT_TALK, ACTOR_GEM_OWNER, CONDITION_ALWAYS, MSGNO(MsgVaultWaahACatAteMyPrecious) },
395 { EVENT_TALK, 10, CONDITION_ALWAYS, MSGNO(MsgVaultThePrisonersSaidTheyWantedTo) },
398 { EVENT_TALK, ACTOR_COLOSSO_WIFE, CONDITION_ALWAYS, MSGNO(MsgVaultTheWarriorsISawFightingAt) },
401 { EVENT_TALK, ACTOR_MAYORS_WIFE, CONDITION_ALWAYS, MSGNO(MsgVaultTheMayorsFamilyUrnIsOn) },
402 { EVENT_TALK, 14, CONDITION_ALWAYS, MSGNO(MsgVaultThoseThievesYouGoToAll) },
403 { EVENT_TALK, 15, CONDITION_ALWAYS, MSGNO(MsgVaultIHearThatABigFestival) },
408 { EVENT_TALK, ACTOR_COOK, CONDITION_ALWAYS, MSGNO(MsgVaultWeDontGetALotOf) },
411 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_GEM_OWNER, CONDITION_ALWAYS, MSGNO(MsgVaultIfIdKnownThisWasGoing) },
412 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_GEM_OWNERS_WIFE, CONDITION_ALWAYS, MSGNO(MsgVaultMyHusbandSaysMyCatAte) },
413 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 10, CONDITION_ALWAYS, MSGNO(MsgVaultWhyDoYouSupposeThoseThieves) },
414 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_CHILD, CONDITION_ALWAYS, MSGNO(MsgVaultDaddyHasntBeenPayingAttentionSince) },
415 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_COLOSSO_HUSBAND, CONDITION_ALWAYS, MSGNO(MsgVaultWheneverMyWifeUsedToGo) },
416 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_COLOSSO_WIFE, CONDITION_ALWAYS, MSGNO(MsgVaultLatelyMyHusbandsBeenGoingOn) },
418 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_MAYOR, CONDITION_ALWAYS, MSGNO(MsgVaultAsLongAsWeStayAlert) },
419 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_MAYORS_WIFE, CONDITION_ALWAYS, MSGNO(MsgVaultWellBeSecuringItInA) },
420 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 14, CONDITION_ALWAYS, MSGNO(MsgVaultItsJustEmbarrassingThatWeLet) },
421 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 15, CONDITION_ALWAYS, MSGNO(MsgVaultILoveFestivalsIllBetColosso) },
422 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_VAULT_WEAPON_MERCHANT, CONDITION_ALWAYS, MSGNO(MsgVaultJustImagineHowTerribleItWould) },
423 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_VAULT_ARMOR_MERCHANT, CONDITION_ALWAYS, MSGNO(MsgVaultItsAGoodThingThatGiant) },
424 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_VAULT_ITEM_MERCHANT, CONDITION_ALWAYS, MSGNO(MsgVaultWhyKeepTheStoreOpenIf) },
425 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_VAULT_INNKEEPER, CONDITION_ALWAYS, MSGNO(MsgVaultWontAnyoneComeStayTheNight) },
426 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), ACTOR_COOK, CONDITION_ALWAYS, MSGNO(MsgVaultAfterYouveBeenInThisBusiness) },
433 { 0xc4f3, 200, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgVaultTheresABookEntitledHistoryOf)) },
434 { SEARCH(SEARCH_BOOKCASE), 201, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgVaultTheresABookEntitledGemsOfAngara)) },
436};
437// clang-format on
Ability numbers, named from the English release.
@ ABILITY_MIND_READ
Definition ability_ids.h:16
struct FieldActor * Object_GetById(s32 actor)
Returns an actor, or NULL if it does not exist.
const struct ScenePlacement * Scene_GetPlacements(void)
const struct SceneEntrance * Scene_GetEntrances(void)
const struct SceneEvent * Scene_GetEvents(void)
const u32 * Scene_GetExits(void)
Both scenes share one exit table.
const struct SceneRegion * Scene_GetRegions(void)
s32 Scene_Initialize(void)
Sets up whichever scene is being entered and runs its arrival events.
@ ACTOR_COOK
Definition altin.c:83
static void Event_TalkToInnkeeper(void)
Opens the inn across the counter, or discusses the curse in Kolima.
The engine calls the debug menus import, and their palette swatch tiles.
The engine call layer: one typed inline for each of the thirteen main-image routines below that the s...
static s32 FieldScheduler_AddCallback(SchedulerCallback callback, s32 priority)
Registers a main-image scheduler callback.
Definition engine_call.h:36
void FieldScene_PrepareActors(struct ScenePlacement *entry)
The scene script layer: the engine services a scene's events call, declared once (Engine_EventBegin,...
@ ANIM_STAND
Definition field_event.h:43
@ ANIM_NOD
Definition field_event.h:45
@ ANIM_SHAKE_HEAD
Definition field_event.h:46
static s32 Event_OpenMessage(s32 speaker, s32 flags)
static void Actor_FaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_ActorSetAnimationAndWait(s32 actor, s32 animation)
static void Event_ShowMessageAndWait(s32 speaker, s32 flags, s32 frames)
static void Actor_SetBuiltinAction(s32 actor, s32 action)
s32 Engine_EventChooseYesNo(s32 actor, s32 flags)
s32 Engine_PartyGiveItem(s32 item, s32 flags)
#define GameFlag_IsSet
#define EMOTE_IN_FRONT
Definition field_event.h:49
void Engine_ItemShowFound(s32 item, s32 height)
void Engine_InnOpen(s32 inn, s32 keeper)
static void Map_CopyCellsTo(s32 srcX, s32 srcY, s32 destX, s32 destY, s32 width, s32 height)
#define GameFlag_Set
static void Actor_ShowEmote(s32 actor, s32 emote, s32 frames)
void Engine_ActorRunRepeatedMotion(s32 actor, s32 repeats)
static void Event_ShowMessage(s32 speaker, s32 flags)
s32 Engine_GameFlagIsSet(s32 flag)
@ TASK_PRIORITY_SCENE
Definition field_event.h:40
void Engine_ShopOpen(s32 shop, s32 keeper)
void Engine_ActorFaceEachOther(s32 actor, s32 other, s32 frames)
void Engine_EventWait(s32 frames)
@ TRANSITION_WINDOW
Definition field_obj.h:17
#define SCENE_TRANSITION(style, variant)
Definition field_obj.h:20
The scene table formats: entrances, exits, placements and events, and the macros that write them.
#define SCENE_EVENTS_END
#define FIND_ITEM(item)
@ EVENT_EXIT
@ EVENT_TALK
@ FACING_STEP
Definition field_scene.h:36
#define SCENE_EXITS(scene)
Definition field_scene.h:72
#define FIND_MESSAGE(message)
#define SCENE_EXIT(exit, scene, entrance)
Definition field_scene.h:73
@ ACTOR_PARTY_LEADER
@ SCENE_TABLE_END
Definition field_scene.h:43
@ CONDITION_ALWAYS
Definition field_scene.h:44
@ TALK_FACE_PARTY
@ TALK_FACE_PARTY_AND_BACK
#define PSYNERGY_ON_ACTOR(ability)
#define EVENT_SCRIPT(script)
@ ACTOR_WANDER
@ ACTOR_STAND
#define SEARCH(target)
#define SCENE_EXITS_END
Definition field_scene.h:77
#define FACING_IS_NORTH(facing)
Definition field_scene.h:38
@ FACING_EAST
Definition field_scene.h:26
@ FACING_SOUTHEAST
Definition field_scene.h:27
@ FACING_NORTH
Definition field_scene.h:32
@ FACING_SOUTH
Definition field_scene.h:28
@ FACING_WEST
Definition field_scene.h:30
#define PIXELS(value)
@ SEARCH_BOOKCASE
@ SEARCH_WOODEN_BOX
@ SEARCH_JAR
@ SEARCH_UNNAMED
@ SEARCH_BARREL
#define FIND_COINS(coins)
Game flags, named where their meaning is shown.
#define FLAG_VAULT_BONE_RECEIVED
Definition flags.h:108
#define FLAG_VAULT_INTERIORS_BOX_MINT
Definition flags.h:569
#define FLAG_SCENE_TEMP_00
Definition flags.h:713
#define FLAG_VAULT_INTERIORS_BARREL_COINS
Definition flags.h:567
#define FLAG_VAULT_INTERIORS_JAR_COINS
Definition flags.h:566
#define FLAG_VAULT_INTERIORS_BARREL_SLEEP_BOMB
Definition flags.h:568
#define FLAG_SCENE_TEMP_50
Definition flags.h:793
GameState, the game's state: play time, coins, the scene and the leader's position,...
struct GameState gGameState
The screen blend's globals and the graphics routines.
s32 PartyInventory_HasSpace(void)
Returns 1 when the selected character or any party member has a free inventory slot.
Definition inventory.c:99
gOverflowItem, an item slot the spoils code uses when items are handed out.
Item numbers, named from the English release.
@ ITEM_MINT
Definition item_ids.h:54
@ ITEM_BONE
Definition item_ids.h:72
@ ITEM_SLEEP_BOMB
Definition item_ids.h:68
static void Event_TalkToArmorMerchant(void)
After Lunpa reopens, across the counter, the armor shop; otherwise small talk.
static void Event_TalkToItemMerchant(void)
Across the counter, the item shop; otherwise small talk.
static void Event_TalkToWeaponMerchant(void)
After Lunpa reopens, across the counter, the weapon shop; otherwise small talk.
The reel game's title lettering.
void Engine_ActorSetAnimation()
struct EventWork * gEventWork
void Engine_EventEnd(void)
void Engine_EventBegin(void)
void Engine_EventSetMessage()
void Engine_EventShowMessage()
#define NULL
Definition bilibin.h:6
Vault's interiors, before and after the thieves are caught: an item lying on the floor,...
void Vault_PlaceItemIcon(s32 item, s32 fixed_x, s32 fixed_y, s32 fixed_z)
Creates object 22 at the 16.16 position and draws it as the item's icon: the sprite's own animation i...
s32 startTransition
SCENE_TRANSITION(style, variant).
Definition event_work.h:43
u16 message
the next message, advanced as each window opens
Definition event_work.h:47
u8 motionFlags
ActorMotionFlag bits; zero is free flight in 3D, and 3 is set on creation.
Definition field_obj.h:83
u8 paused
nonzero skips its script and motion, not its update
Definition field_obj.h:93
union FieldCoordinate y
16.16 fixed-point pixels
Definition field_obj.h:36
s32 terrainHeight
16.16 fixed-point pixels
Definition field_obj.h:38
u16 facing
1/65536 turns
Definition field_obj.h:34
s16 entrance
Definition game_state.h:37
A scene entrance: where and facing which way the party arrives, and the camera's bounds there (-1 for...
Definition field_scene.h:54
A scene event: its kind and detail, the trigger it answers, its condition and its value (a message or...
An actor a scene places: its sprite, the condition for placing it, how it behaves,...
Definition field_scene.h:81
A scene's exit region: the box that, while its condition holds, takes the party leader out through it...
The system's routines and globals: interrupts, BIOS sound bias, random numbers and sleep.
The integer types, TRUE, UNUSED and the fixed-address macros.
signed int s32
Definition types.h:14
unsigned int u32
Definition types.h:15
unsigned char u8
Definition types.h:11
s32 fixed
16.16 fixed-point pixels
Vault's interiors, before and after the thieves are caught: the Bone left on the floor of the house w...
static void Vault_FindBone(void)
Searching cell code 41 beside the bone giver takes a Bone after the thieves are jailed.
Definition vault_bone.h:13
static void Event_OfferBones(void)
The bone giver offers leftover bones from dinner; a yes gets a Bone if there is room,...
static void Event_ReadBoneGiverMind(void)
Mind Read on the bone giver: the master and his wife are blinded by money; after the thieves are jail...
@ ACTOR_MAYORS_WIFE
@ ACTOR_GEM_OWNER
a sparkling rock was blown here from the volcano
@ ACTOR_MAYOR
Ivan's host; his wife calls him the mayor.
@ ACTOR_GEM_OWNERS_WIFE
@ ACTOR_CHILD
Asks about travel. "Hey, mister! Is it fun to see strange new places?".
static void Event_ReadMindAndWelcomeIsaacBack(void)
Mind Read on the mayor before the welcome: he notices and welcomes Isaac back.
struct SceneEntrance gVaultInteriorsRevisit_Entrances[]
struct ScenePlacement gVaultInteriorsRevisit_Placements[]
static void Event_WifeSawCatTakeGem(void)
The wife thought she saw the cat paw the gemstone on the table, and then the treasure was gone.
@ FLAG_WELCOMED_BACK
static void VaultInteriorsRevisit_FaceAndSpeak(s32 actor, s32 message)
Faces the leader and shows this resident's dialogue while standing still.
static void Event_WelcomeIsaacBack(void)
The mayor welcomes Isaac back: the thieves he caught escaped from jail.
static void Event_HusbandLongsForColosso(void)
The husband would like to see Colosso in Tolbi once more before he dies.
static void Event_OfferLeftoverBones(void)
The cook has useless bones left from cooking and asks if the party wants some.
static void VaultInteriorsRevisit_ShowStandingActorDialogue(s32 actor)
The actor stands still and says the selected message.
struct SceneEvent gVaultInteriorsRevisit_Events[]
@ ACTOR_VAULT_BONE_GIVER
@ VAULT_ARMOR_STOCK
@ ACTOR_VAULT_ITEM_MERCHANT
@ ACTOR_COLOSSO_HUSBAND
would like to see Colosso once more
@ ACTOR_COLOSSO_WIFE
@ VAULT_WEAPON_STOCK
@ ACTOR_VAULT_ARMOR_MERCHANT
@ ACTOR_VAULT_WEAPON_MERCHANT
@ ACTOR_VAULT_INNKEEPER
static void Event_ChildDoubtsThievesWereFromLunpa(void)
The child points out Dodonpa's henchmen never attacked: maybe the thieves weren't from Lunpa after al...
static void Event_WarnOfThievesRevenge(void)
After the welcome: those thieves really wanted revenge, so take care.
u32 gVaultInteriorsRevisit_Exits[]
Vault's interiors, before and after the thieves are caught: whether the leader stands beside the Bone...
static void Vault_UpdateBoneProximityFlag(void)
Prevents the bone giver offering another Bone while the leader stands beside the one on the floor.