Alchemy
Loading...
Searching...
No Matches

lalivero_interiors.c

Go to the documentation of this file.
1/// @file
2/// Lalivero's buildings, on two maps. The first holds the shops, the sanctum
3/// and the houses along the streets; the second holds Faran's house and the
4/// inn, where the party reports to Faran after Venus Lighthouse and Iodem asks
5/// them to meet him outside.
6
7#include "script.h"
8#include "game_state.h"
9#include "scene_ids.h"
10#include "unit/import.h"
12#include "unit/object/object.h"
14#include "unit/game/game.h"
15#include "unit/shop/shop.h"
16#include "battle.h"
17#include "debug.h"
18#include "field.h"
19#include "game.h"
20#include "graphics.h"
21#include "menu.h"
22#include "minigame.h"
23#include "sound.h"
24#include "system.h"
25#include "types.h"
26#include "field_event.h"
27#include "field_scene.h"
28#include "field_service.h"
29#include "text/msg_ids.h"
30#include "ability_ids.h"
31#include "item_ids.h"
32#include "objcmd.h"
33#include "songs.h"
34#include "flags.h"
35static void TellFaranAboutFelix(void);
36
37enum {
38 /// Stepping into the sanctum makes it where a defeated party wakes.
42 /// Back from Venus Lighthouse: the party is led straight to Faran.
44};
45
46/// The actors this scene's code moves, by their place in the placement tables.
47enum {
48 /// In Faran's house.
49 FARAN = 11,
50 IODEM = 12,
52 MAID = 14,
53 // In the shops and the sanctum.
54 SHOPKEEPER_32 = 18, ///< runs shop 32
57 PRIEST = 21,
58 ACTOR_15 = 15 ///< posed in animation 6
59};
60
61/// Flag 0x300, which several places use for a passing state as they use the
62/// scene flags from 0x200: the maid has apologized.
63enum { FLAG_MAID_APOLOGIZED = 0x300 };
64
65/// Behind a counter: the actor is drawn under the counter's top and the
66/// party talks across it.
67#define ACTOR_BEHIND_COUNTER 4
68
69/// The maid sighs between chores.
70static s32 Maid_Sigh(struct ScriptInterpreter *interpreter) {
72 return 0;
73}
74
76 return gLaliveroEntrances;
77}
78
82 }
83 return gLaliveroRegions;
84}
85
87
88/// The people of each map; Faran's house fills up after Venus Lighthouse.
91 // Faran's house and the inn.
94 }
96 }
98}
99
100/// The side the leader faces: the facing rounded to the nearest of east,
101/// south, west and north. Facing north, the leader is across the counter
102/// from a shopkeeper.
103static inline u16 Leader_GetSide(void) {
104 return (Object_GetById(ACTOR_PARTY_LEADER)->facing + 0x2000) & ~0x3fff;
105}
106
107/// A shopkeeper across the counter opens shop 32; from elsewhere they talk
108/// about Sheba, asking whether the party will go after her.
109static void TalkToShopkeeper32(s32 keeper) {
111 // Leader_GetSide's rounding, written with the mask 0xc000, which
112 // loads from the literal pool where the helper's builds the mask.
113 u16 side = (leader->facing + 0x2000) & 0xc000;
114
115 if (side == FACING_NORTH) {
116 Shop_Run(32, keeper);
118 Engine_EventSetMessage(MsgLaliveroWentOceanLook);
119 Engine_EventShowMessage(keeper, 0);
120 } else {
121 s32 message = MsgLaliveroTakenHostageFaran;
122
123 Engine_EventSetMessage(message);
124 Engine_EventOpenMessage(keeper, 0);
127 Engine_EventSetMessage(message + 1);
128 } else {
129 Engine_EventSetMessage(message + 2);
130 }
131 Engine_EventShowMessage(keeper, 0);
132 }
133}
134
135/// Shop 33 across the counter; otherwise small talk.
136static void TalkToShopkeeper33(s32 keeper) {
137 if (Leader_GetSide() == FACING_NORTH) {
138 Shop_Run(33, keeper);
140 Engine_EventSetMessage(MsgLaliveroWantedSendShips);
141 Engine_EventShowMessage(keeper, 0);
142 } else {
143 Engine_EventSetMessage(MsgLaliveroWarriorRightPlease);
144 Engine_EventShowMessage(keeper, 0);
145 }
146}
147
148/// Shop 34 across the counter; otherwise small talk.
149static void TalkToShopkeeper34(s32 keeper) {
150 if (Leader_GetSide() == FACING_NORTH) {
151 Shop_Run(34, keeper);
153 Engine_EventSetMessage(MsgLaliveroImpossibleGoOcean);
154 Engine_EventShowMessage(keeper, 0);
155 } else {
156 Engine_EventSetMessage(MsgLaliveroGuessPeopleAngara);
157 Engine_EventShowMessage(keeper, 0);
158 }
159}
160
161/// The sanctum's services across the counter; otherwise small talk.
162static void TalkToPriest(s32 priest) {
163 if (Leader_GetSide() == FACING_NORTH) {
164 Shop_ConfirmAct(priest);
166 Engine_EventSetMessage(MsgLaliveroBabiLighthouseStruck);
167 Engine_EventShowMessage(priest, 0);
168 } else {
169 Engine_EventSetMessage(MsgLaliveroBabiIsntBuilding);
170 Engine_EventShowMessage(priest, 0);
171 }
172}
173
174/// A room for the night across the counter (inn 11); otherwise small talk.
175static void TalkToInnkeeper(s32 innkeeper) {
176 if (Leader_GetSide() == FACING_NORTH) {
177 Inn_CheckIn(11, innkeeper);
179 Engine_EventSetMessage(MsgLaliveroDidntKnowTime);
180 Engine_EventShowMessage(innkeeper, 0);
181 } else {
182 Engine_EventSetMessage(MsgLaliveroWantStayLet);
183 Engine_EventShowMessage(innkeeper, 0);
184 }
185}
186
187/// The maid stops her chores to apologize: worry for Sheba keeps her from
188/// concentrating. A leader standing west of her steps aside to the south
189/// before she starts again.
190static void TalkToMaid(void) {
191 s16 side;
192
193 side = Leader_GetSide();
197 Engine_EventSetMessage(MsgLaliveroImSorry);
214 if ((u16)side == FACING_WEST) {
218 }
221}
222
223/// Trigger 51 in Faran's house after the report: the camera finds Iodem, who
224/// asks the party to wait for him outside.
225static void IodemCallsOut(void) {
226
231 Engine_CameraMoveTo(PIXELS(120), -1, PIXELS(96), 1);
234 Engine_EventSetMessage(MsgLaliveroPleaseWaitForMeOutside);
242}
243
244/// Iodem, talked to before he has given the Black Orb, repeats his request.
245static void TalkToIodem(void) {
246
248 Engine_EventSetMessage(MsgLaliveroPleaseWaitForMeOutside);
250}
251
252/// A doorway out: take the touched trigger's exit with the exit sound.
253static void LeaveBuilding(void) {
254 struct EventWork *work = gEventWork;
255 s16 *trigger = (s16 *)&work->touchedTrigger;
256
257 Engine_EventRequestExit(*trigger);
259}
260
261/// What the party can talk to, touch and search on each map, before and
262/// after Venus Lighthouse.
267 }
268 return gFaranHouseEvents;
269 }
272 }
273 return gLaliveroEvents;
274}
275
276/// Back from Venus Lighthouse, the party reports to Faran with Iodem: no sign
277/// of Sheba or of Felix, Faran's faith that Sheba lived, what an Adept is,
278/// and a farewell as the party sets out after Felix.
279static void ReportToFaran(void) {
280 struct FieldActor *leader;
281
284 // The party walks in to Faran and Iodem, and the others step out.
289 Engine_EventSetMessage(MsgLaliveroHowDidSearchForSheba);
293 Actor_SetSpeed(ACTOR_PARTY_LEADER, 0x10000, 0x8000);
307 // Faran and Iodem tell of the search for Sheba.
332 // The party tells what became of Felix; the version that saw the ship from
333 // the lighthouse knows Idejima was swept away with it.
336 } else {
382 }
383 // Will the party keep searching? Faran answers either way.
384 Engine_EventSetMessage(MsgLaliveroDoNotWorryAboutSheba);
398 (gEventWork->message)++;
399 } else {
408 (gEventWork->message)++;
410 }
420 // Faran believes Sheba lived; Iodem explains Adepts.
538 // Faran sends them off.
581 // The others walk back into the leader.
582 Actor_SetSpeed(GARET, 0x13333, 0x9999);
583 Actor_SetSpeed(MIA, 0x13333, 0x9999);
584 Actor_SetSpeed(IVAN, 0x13333, 0x9999);
587 if (leader != NULL) {
588 Engine_ActorSetDestination(GARET, leader->x.part.pixel,
589 leader->z.part.pixel);
590 }
595 if (leader != NULL) {
596 Engine_ActorSetDestination(MIA, leader->x.part.pixel, leader->z.part.pixel);
597 }
599 Actor_SetPosition(MIA, 0, 0);
602 if (leader != NULL) {
603 Engine_ActorSetDestination(IVAN, leader->x.part.pixel,
604 leader->z.part.pixel);
605 }
610}
611
612/// The party tells Faran and Iodem what became of Felix, when it did not
613/// see the ship from the lighthouse.
614static void TellFaranAboutFelix(void) {
615 Engine_EventSetMessage(MsgLaliveroTellOthers);
617
622
630
635
640
645
649
654
659
664
669
672}
673
674/// Sets the maps up as the party enters: shopkeepers and the innkeeper
675/// behind their counters, the sanctum as the place to wake after a defeat,
676/// the maid back at her chores, and the report to Faran on coming back from
677/// Venus Lighthouse.
679 s32 scene;
680 s16 entrance;
681 struct FieldActor *actor;
682
685 }
687 scene = gGameState.scene;
688 if (scene == (s32)&SceneId_LaliveroInteriors1) {
689 // The shops and the sanctum.
691 actor->priorityFlags = 0;
693 actor->sprite->image.priority = 2;
695 actor->priorityFlags = 0;
697 actor->sprite->image.priority = 2;
700 actor->priorityFlags = 0;
701 actor->sprite->image.priority = 2;
703 entrance = gGameState.entrance;
704 if (entrance == ENTRANCE_SANCTUM) {
705 gGameState.savedScene = scene;
706 gGameState.savedEntrance = entrance;
707 }
708 }
710 actor = Object_GetById(INNKEEPER);
712 actor->priorityFlags = 0;
713 actor->sprite->image.priority = 2;
716 }
719 // Iodem and Faran stay, with behavior 6 as in their later placements.
723 }
724 }
725 return 0;
726}
727
728/// The maid's chores once she has apologized: she paces between two spots,
729/// turning to each side, and sighs now and then.
731 SC_SET(SW_COLLISION, 129),
732 SC_SET(SW_SPEED, 0x26666),
733 SC_SET(SW_ACCEL, 0x13333),
734 SC_LABEL(1),
735 SC_ARG(2),
736 SC_MOVE(PIXELS(128), 0, PIXELS(300)),
737 SC_SYNC,
739 SC_ARG(3),
740 SC_WAIT(30),
741 SC_ARG(2),
742 SC_MOVE(PIXELS(168), 0, PIXELS(300)),
743 SC_SYNC,
745 SC_ARG(3),
746 SC_WAIT(50),
747 SC_ARG(2),
748 SC_MOVE(PIXELS(128), 0, PIXELS(300)),
749 SC_SYNC,
751 SC_ARG(3),
752 SC_WAIT(20),
754 SC_WAIT(30),
755 SC_ARG(2),
756 SC_MOVE(PIXELS(168), 0, PIXELS(300)),
757 SC_SYNC,
759 SC_ARG(3),
760 SC_WAIT(30),
762};
763
765 {1, CONDITION_ALWAYS, 144, 0, 168, FACING_NORTH, 0, 0, 8, 240, 192, 0},
766 {2, CONDITION_ALWAYS, 400, 0, 168, FACING_NORTH, 0, 256, 8, 496, 192, 0},
767 {3, CONDITION_ALWAYS, 648, 0, 72, FACING_NORTH, 0, 488, 8, 728, 184, 0},
768 {4, CONDITION_ALWAYS, 128, 0, 472, FACING_NORTH, 0, 0, 216, 240, 488, 0},
769 {5, CONDITION_ALWAYS, 136, 0, 296, FACING_SOUTH, 0, 0, 216, 240, 488, 0},
770 {6, CONDITION_ALWAYS, 368, 0, 472, FACING_NORTH, 0, 240, 216, 480, 488, 0},
771 {7, CONDITION_ALWAYS, 392, 0, 296, FACING_SOUTH, 0, 240, 216, 480, 488, 0},
772 {8, CONDITION_ALWAYS, 648, 0, 280, FACING_NORTH, 0, 480, 216, 720, 488, 0},
773 {9, CONDITION_ALWAYS, 96, 0, 680, FACING_NORTH, 0, 8, 520, 312, 696, 0},
774 {10, CONDITION_ALWAYS, 200, 0, 600, FACING_SOUTH, 0, 8, 520, 312, 696, 0},
775 {11, CONDITION_ALWAYS, 432, 0, 728, FACING_NORTH, 0, 312, 520, 552, 744, 0},
776 {12, CONDITION_ALWAYS, 432, 0, 630, FACING_NORTH, 0, 312, 520, 552, 744, 0},
777 {21, CONDITION_ALWAYS, 96, 0, 168, FACING_NORTH, 0, 8, 8, 312, 192, 0},
778 {22, CONDITION_ALWAYS, 216, 0, 88, FACING_SOUTH, 0, 8, 8, 312, 192, 0},
779 {23, CONDITION_ALWAYS, 224, 0, 392, FACING_NORTH, 0, 8, 232, 312, 416, 0},
780 {24, CONDITION_ALWAYS, 88, 0, 312, FACING_SOUTH, 0, 8, 232, 312, 416, 0},
781 {25, CONDITION_ALWAYS, 384, 0, 368, FACING_NORTH, 0, 320, 240, 632, 400, 0},
782 {26, CONDITION_ALWAYS, 456, 0, 376, FACING_NORTH, 0, 320, 240, 632, 400, 0},
783 {27, CONDITION_ALWAYS, 504, 0, 376, FACING_NORTH, 0, 320, 240, 632, 400, 0},
784 {28, CONDITION_ALWAYS, 472, 0, 72, FACING_SOUTH, 0, 344, 8, 584, 168, 0},
785 {29, CONDITION_ALWAYS, 744, 0, 72, FACING_SOUTH, 0, 632, 8, 872, 168, 0},
786 {30, CONDITION_ALWAYS, 832, 0, 872, FACING_NORTH, 0, 280, 504, 912, 896, 0},
787 {31, CONDITION_ALWAYS, 464, 0, 832, FACING_SOUTH, 0, 280, 504, 912, 896, 0},
788 {99, CONDITION_ALWAYS, 96, 0, 168, FACING_NORTH, 0, 8, 8, 312, 192, 0},
790};
791
792// clang-format off
794 {196, 28, 595, 204, 36, 603, CONDITION_ALWAYS, 10},
796};
797
799 {212, 28, 83, 220, 36, 91, CONDITION_ALWAYS, 22},
801};
802
804 SCENE_EXITS(179),
805 SCENE_EXIT(1, 178, 2),
806 SCENE_EXIT(2, 178, 10),
807 SCENE_EXIT(3, 179, 5),
808 SCENE_EXIT(4, 178, 5),
809 SCENE_EXIT(5, 179, 3),
810 SCENE_EXIT(6, 178, 4),
811 SCENE_EXIT(7, 179, 8),
812 SCENE_EXIT(8, 179, 7),
813 SCENE_EXIT(9, 178, 9),
814 SCENE_EXIT(10, 178, 11),
815 SCENE_EXIT(11, 178, 6),
816 SCENE_EXIT(0, 180, 0),
817 SCENE_EXIT(21, 178, 7),
818 SCENE_EXIT(22, 178, 8),
819 SCENE_EXIT(23, 178, 3),
820 SCENE_EXIT(24, 180, 25),
821 SCENE_EXIT(25, 180, 24),
822 SCENE_EXIT(26, 180, 28),
823 SCENE_EXIT(27, 180, 29),
824 SCENE_EXIT(28, 180, 26),
825 SCENE_EXIT(29, 180, 27),
826 SCENE_EXIT(30, 178, 1),
827 SCENE_EXIT(31, 188, 1),
829};
830
833 PIXELS(176), 0, PIXELS(104), FACING_SOUTH, TALK_FACE_PARTY, 0 },
835 PIXELS(72), 0, PIXELS(80), FACING_NORTH, TALK_FACE_PARTY, 0 },
840 { 0x67, CONDITION_ALWAYS, 3,
841 PIXELS(616), 0, PIXELS(104), FACING_SOUTH, TALK_FACE_PARTY, 0 },
843 PIXELS(664), 0, PIXELS(168), FACING_WEST, TALK_FACE_PARTY, 0 },
845 PIXELS(400), 0, PIXELS(416), FACING_SOUTH, TALK_FACE_PARTY, 0 },
847 PIXELS(550), 0, PIXELS(368), FACING_SOUTH, TALK_KEEP_FACING, 0 },
849 PIXELS(344), 0, PIXELS(304), FACING_SOUTH, TALK_FACE_PARTY, 0 },
851 PIXELS(600), 0, PIXELS(408), FACING_SOUTH, TALK_FACE_PARTY, 0 },
853 PIXELS(132), 0, PIXELS(616), FACING_SOUTH, TALK_FACE_PARTY, 0 },
857 PIXELS(68), 0, PIXELS(340), FACING_SOUTH, TALK_FACE_PARTY, 0 },
859 PIXELS(432), 0, PIXELS(600), FACING_SOUTH, TALK_FACE_PARTY, 0 },
860 { SCENE_TABLE_END },
861};
862
867 PIXELS(240), 0, PIXELS(96), FACING_SOUTH, TALK_FACE_PARTY, 0 },
875 PIXELS(248), 0, PIXELS(336), FACING_SOUTH, TALK_FACE_PARTY, 0 },
877 PIXELS(136), 0, PIXELS(300), FACING_NORTH, TALK_KEEP_FACING, 0 },
879 PIXELS(544), 0, PIXELS(368), FACING_SOUTH, TALK_FACE_PARTY, 0 },
880 { SCENE_TABLE_END },
881};
882
885 PIXELS(168), 0, PIXELS(112), FACING_SOUTH, TALK_FACE_PARTY, 0 },
887 PIXELS(240), 0, PIXELS(96), FACING_SOUTH, TALK_FACE_PARTY, 0 },
889 PIXELS(216), 0, PIXELS(168), FACING_WEST, TALK_FACE_PARTY, 0 },
890 { 0x46, CONDITION_ALWAYS, 6,
892 { 0x39, CONDITION_ALWAYS, 6,
893 PIXELS(128), 0, PIXELS(96), FACING_SOUTH, TALK_KEEP_FACING, 0 },
895 PIXELS(248), 0, PIXELS(336), FACING_SOUTH, TALK_FACE_PARTY, 0 },
899 PIXELS(544), 0, PIXELS(368), FACING_SOUTH, TALK_FACE_PARTY, 0 },
901 0, 0, 0, FACING_EAST, TALK_FACE_PARTY, 0 },
903 0, 0, 0, FACING_EAST, TALK_FACE_PARTY, 0 },
905 0, 0, 0, FACING_EAST, TALK_FACE_PARTY, 0 },
906 { SCENE_TABLE_END },
907};
908
920 { EVENT_TALK, 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsOfCourseIHaveSeenActor) },
921 { EVENT_TALK, 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsThereAreSomeWhoDoNot) },
922 { EVENT_TALK, 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsCouldFaranHaveTrickedUsAll) },
923 { EVENT_TALK, 11, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIfActorCantUseHerPowers) },
924 { EVENT_TALK, 12, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsActorCameFlyingToTheRuins) },
925 { EVENT_TALK, 13, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsEvenActorCouldntHaveEscapedSix) },
926 { EVENT_TALK, 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheySayAManNamedIodem) },
927 { EVENT_TALK, 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsNoOnesCalledMeSoMaybe) },
928 { EVENT_TALK, 16, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsActorSaidTheCaveAtThe) },
929 { EVENT_TALK, 17, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheRuinsThatFormTheLighthouse) },
930 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsActorIfThePowerThatYou) },
931 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsActorIsTheSaviorOfLalivero) },
932 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsALegendarySaviorWillAppearIn) },
933 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 11, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIdLikeToBelieveInActor) },
934 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 12, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsEvenThoughSheFellOutOf) },
935 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 13, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIfSomethingHappensToActorWhat) },
936 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWhenIodemGetsHereHesGoing) },
937 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsItsBeenSoLongSinceI) },
938 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 16, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIWonderHowActorKnewAbout) },
939 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 17, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsThoseCavesAreTooDangerousFor) },
944 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 18, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheLaliveransAreATimidPeople) },
945 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 19, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsICantRescueActorIfI) },
946 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 20, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIfAnythingHappensToActorIll) },
947 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 21, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIBetBabisTowerWillBe) },
949 { SEARCH(SEARCH_BARREL), 101, 0xfba, FIND_ITEM(ITEM_ANTIDOTE) },
950 { SEARCH(SEARCH_OVEN), 200, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsShesMakingMushroomSoupInLalivero)) },
951 { SEARCH(SEARCH_OVEN), 201, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsItsALaliveroSaladWithPotato)) },
952 { SEARCH(SEARCH_OVEN), 202, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsThePotIsFullOfA)) },
954};
955
967 { EVENT_TALK, 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheContinentBrokeApartAroundThe) },
968 { EVENT_TALK, 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWhatHappenedToThoseLivingOn) },
969 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIShudderToThinkWhatWould) },
970 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWereLuckyThatWeLiveNorth) },
971 { EVENT_TALK, 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsEveryoneSaysThatActorIsOkay) },
972 { EVENT_TALK, 11, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIRealizedHowThoughtlessIWas) },
973 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIfSheIsIndeedTheChild) },
974 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 11, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWeWantToBelieveInSomething) },
975 { EVENT_TALK, 12, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsActorShouldBeFineSheWas) },
976 { EVENT_TALK, 13, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsActorWillWakeWhenTheBeacon) },
977 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 12, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsSeeingActorDiveMustHaveBeen) },
978 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 13, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsICantWaitUntilActorIs) },
979 { EVENT_TALK, 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsBabiLighthouseCrumbledWhenAllThe) },
980 { EVENT_TALK, 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIAlwaysWantedABreakBut) },
981 { EVENT_TALK, 16, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsSoTheRuinsReallyAreConnected) },
982 { EVENT_TALK, 17, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsYouFinallySolvedTheMysteryOf) },
983 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWillTheyContinueOnOrQuit) },
984 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsImWorriedThatWeWontGet) },
985 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 16, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWeCantPossiblyDigAHole) },
986 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 17, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheMysteryOfTheRuinsShould) },
991 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 18, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsNoOneCouldPossiblySwimIn) },
992 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 19, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWhenWillTheOceanBeCalm) },
993 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 20, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheChampaArePeopleFromA) },
994 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 21, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsFirstTheLighthouseWasStruckDown) },
996 { SEARCH(SEARCH_BARREL), 101, 0xfba, FIND_ITEM(ITEM_ANTIDOTE) },
997 { SEARCH(SEARCH_OVEN), 200, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsShesMakingMushroomSoupInLalivero)) },
998 { SEARCH(SEARCH_OVEN), 201, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsItsALaliveroSaladWithPotato)) },
999 { SEARCH(SEARCH_OVEN), 202, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsThePotIsFullOfA)) },
1000 { SCENE_EVENTS_END },
1001};
1002
1014 { EVENT_TALK, 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWeReceivedActorFromTheSky) },
1015 { EVENT_TALK, 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIJustKnowThatFatherWill) },
1016 { EVENT_TALK, 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsHisWifeSeemsVeryCalmConsidering) },
1017 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsItsSoPainfulToEvenThink) },
1018 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIJustWishSomeoneWouldPlease) },
1019 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsThatCoupleRaisedActorAsThough) },
1023 { EVENT_TALK, 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWorkingLikeThisKeepsMyMind) },
1024 { EVENT_TALK, 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWeMustObeyTolbiThatsWhat) },
1025 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 13, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWhyDidThisHaveToHappen) },
1026 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsHousecleaningChangingSheetsItsAllDone) },
1027 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsOnceThisIncidentIsOverI) },
1029 { SEARCH(SEARCH_OVEN), 203, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsShesFryingFreshwaterFishFromThe)) },
1030 { SEARCH(SEARCH_OVEN), 204, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsItsRiceMadeWithGrainsFrom)) },
1031 { SEARCH(SEARCH_OVEN), 205, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsShesMakingRoastChickenThisScent)) },
1032 { SCENE_EVENTS_END },
1033};
1034
1048 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 12, FLAG_IODEM_FAREWELL_SEEN, MSGNO(MsgLaliveroInteriorsIMustExplainTheirPromiseTo) },
1049 { EVENT_TALK, 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsFaranSaysKnowingHerPowersActor) },
1050 { EVENT_TALK, 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsYouAreLeavingAfterAllArent) },
1051 { EVENT_TALK, 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTheySayTheLighthouseCrumbledDown) },
1052 { EVENT_TALK, 11, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsYouWillFindJennaSomedayFarewell) },
1053 { EVENT_TALK, 12, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIsaacThatBoatBelongsToYou) },
1054 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 8, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIDontNeedFameOrFortune) },
1055 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 9, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWhyWontAnyoneStopIsaacAnd) },
1056 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 10, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsTolbiIsToBeBlamedFor) },
1057 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 11, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsSoThereAreSomePeopleLike) },
1058 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 12, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsPleaseUseThatShipToFind) },
1060 { EVENT_TALK, 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsIMustSayItIsNice) },
1061 { EVENT_TALK, 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsFishingIsSoDifficultNowadaysBecause) },
1062 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 13, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsWhyWouldTheLightingMakeSuch) },
1063 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 14, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsImSleepyTheseBrightNightsHave) },
1064 { PSYNERGY_ON_ACTOR(ABILITY_MIND_READ), 15, CONDITION_ALWAYS, MSGNO(MsgLaliveroInteriorsGeeWhatAmIGoingTo) },
1066 { SEARCH(SEARCH_OVEN), 203, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsShesFryingFreshwaterFishFromThe)) },
1067 { SEARCH(SEARCH_OVEN), 204, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsItsRiceMadeWithGrainsFrom)) },
1068 { SEARCH(SEARCH_OVEN), 205, CONDITION_ALWAYS, FIND_MESSAGE(MSGNO(MsgLaliveroInteriorsShesMakingRoastChickenThisScent)) },
1069 { SCENE_EVENTS_END },
1070};
1071// 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.
s32 Scene_Initialize(void)
Sets up whichever scene is being entered and runs its arrival events.
#define GARET
Jerald.
#define MIA
Mary.
#define IVAN
Ivan.
The engine calls the debug menus import, and their palette swatch tiles.
The scene script layer: the engine services a scene's events call, declared once (Engine_EventBegin,...
@ ANIM_WALK
Definition field_event.h:44
@ ANIM_NOD
Definition field_event.h:45
@ ANIM_SHAKE_HEAD
Definition field_event.h:46
static s32 Event_OpenMessage(s32 speaker, s32 flags)
void Engine_ActorFaceActor(s32 actor, s32 target, s32 frames)
static void Actor_FaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_ActorSetAnimationAndWait(s32 actor, s32 animation)
void Engine_ActorWalkByAndWait(s32 actor, s32 dx, s32 dz)
s32 Engine_EventChooseYesNo(s32 actor, s32 flags)
#define GameFlag_IsSet
#define SPEAKER_PORTRAIT_RIGHT
Definition field_event.h:55
void Engine_CameraMoveTo(s32 fixed_x, s32 fixed_y, s32 fixed_z, s32 pan)
#define EMOTE_IN_FRONT
Definition field_event.h:49
void Engine_ActorFaceDirection(s32 actor, s32 facing, s32 frames)
void Engine_ActorSetDestination(s32 actor, s32 x, s32 z)
void Engine_ActorWalkToAndWait(s32 actor, s32 x, s32 z)
static void Actor_FaceActor(s32 actor, s32 target, s32 frames)
void Engine_EventWaitForScreen(void)
#define GameFlag_Set
static void Actor_ShowEmote(s32 actor, s32 emote, s32 frames)
static void Actor_WalkByAndWait(s32 actor, s32 dx, s32 dz)
void Engine_EventOpenScreen(void)
void Engine_ActorSetActionCallback(struct FieldActor *actor, s32 value)
s32 Engine_EventOpenMessage(s32 speaker, s32 flags)
void Engine_GameFlagSet(s32 flag)
void Engine_CameraWaitForMove(void)
static void Actor_SetActionScript(s32 actor, const s32 *script)
The engine encodes either a built-in action or an action-script address.
void Engine_ActorWaitForMove(s32 actor)
void Engine_ActorRunRepeatedMotion(s32 actor, s32 repeats)
static void Event_ShowMessage(s32 speaker, s32 flags)
s32 Engine_GameFlagIsSet(s32 flag)
void Engine_ActorStartRepeatedMotion(s32 actor, s32 repeats)
static void Actor_SetSpeed(s32 actor, s32 speed, s32 acceleration)
static void Actor_SetPosition(s32 actor, s32 fixed_x, s32 fixed_z)
void Engine_ActorFaceEachOther(s32 actor, s32 other, s32 frames)
void Engine_EventWait(s32 frames)
static void Actor_SetAttachedEffect(s32 actor, s32 effect)
@ 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_TOUCH
@ 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_KEEP_FACING
@ 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
@ FACING_NORTHEAST
Definition field_scene.h:33
@ FACING_EAST
Definition field_scene.h:26
@ FACING_SOUTHEAST
Definition field_scene.h:27
@ FACING_NORTH
Definition field_scene.h:32
@ FACING_SOUTHWEST
Definition field_scene.h:29
@ FACING_NORTHWEST
Definition field_scene.h:31
@ FACING_SOUTH
Definition field_scene.h:28
@ FACING_WEST
Definition field_scene.h:30
#define PIXELS(value)
@ SEARCH_OVEN
@ SEARCH_BARREL
The scene service layer: one typed inline for each engine service a scene calls by its own name,...
static void FieldMotion_LaunchFromFocusedObject(s32 actor, s32 dx, s32 dz, s32 facing)
Game flags, named where their meaning is shown.
#define FLAG_RETURNED_FROM_VENUS_LIGHTHOUSE
The party is back from Venus Lighthouse, by the aerie's exit.
Definition flags.h:272
#define FLAG_SAW_SHIP_FROM_VENUS_LIGHTHOUSE
The party saw the ship from Venus Lighthouse before coming back.
Definition flags.h:274
#define FLAG_IODEM_FAREWELL_SEEN
Iodem gave the Black Orb.
Definition flags.h:276
#define FLAG_IODEM_ASKED_TO_MEET
Iodem asked the party to wait for him outside.
Definition flags.h:279
GameState, the game's state: play time, coins, the scene and the leader's position,...
struct GameState gGameState
#define IODEM
The screen blend's globals and the graphics routines.
The main-image routines scene overlays import.
void Engine_ResetSceneEffectCounter(void)
s32 Inn_CheckIn(s32 innId, s32 objectId)
Runs an inn's counter: the innkeeper names the price, and on Yes, with the coins, the party sleeps (I...
Definition inn.c:43
Item numbers, named from the English release.
@ ITEM_ANTIDOTE
Definition item_ids.h:47
@ ITEM_LUCKY_MEDAL
Definition item_ids.h:70
@ ENTRANCE_FROM_AERIE
Arriving from Venus Lighthouse's aerie: 90 also plays the talk about the ship the party saw from the ...
Definition lalivero.c:41
struct ScenePlacement gLaliveroPlacements[]
Definition lalivero.c:870
struct SceneEvent gLaliveroEvents[]
Definition lalivero.c:965
u32 gLaliveroExits[]
Definition lalivero.c:861
struct SceneEvent gLaliveroEventsAfterLighthouse[]
Definition lalivero.c:1008
struct SceneEntrance gLaliveroEntrances[]
Definition lalivero.c:843
@ FLAG_MAID_APOLOGIZED
#define ACTOR_BEHIND_COUNTER
Behind a counter: the actor is drawn under the counter's top and the party talks across it.
struct SceneRegion gLaliveroRegions[]
struct ScenePlacement gFaranHousePlacementsAfterLighthouse[]
static void TellFaranAboutFelix(void)
The party tells Faran and Iodem what became of Felix, when it did not see the ship from the lighthous...
static void ReportToFaran(void)
Back from Venus Lighthouse, the party reports to Faran with Iodem: no sign of Sheba or of Felix,...
const struct SceneRegion * LaliveroInteriors_GetRegions(void)
static void TalkToPriest(s32 priest)
The sanctum's services across the counter; otherwise small talk.
static void TalkToShopkeeper34(s32 keeper)
Shop 34 across the counter; otherwise small talk.
static void TalkToIodem(void)
Iodem, talked to before he has given the Black Orb, repeats his request.
static void TalkToInnkeeper(s32 innkeeper)
A room for the night across the counter (inn 11); otherwise small talk.
@ ENTRANCE_SANCTUM
Stepping into the sanctum makes it where a defeated party wakes.
@ ENTRANCE_FARAN_HOUSE
@ ENTRANCE_REPORT_TO_FARAN
Back from Venus Lighthouse: the party is led straight to Faran.
const struct SceneEvent * LaliveroInteriors_GetEvents(void)
What the party can talk to, touch and search on each map, before and after Venus Lighthouse.
static s32 Maid_Sigh(struct ScriptInterpreter *interpreter)
The maid sighs between chores.
struct SceneEvent gFaranHouseEvents[]
struct SceneRegion gLaliveroSanctumRegions[]
static void IodemCallsOut(void)
Trigger 51 in Faran's house after the report: the camera finds Iodem, who asks the party to wait for ...
const u32 * LaliveroInteriors_GetExits(void)
static void TalkToShopkeeper32(s32 keeper)
A shopkeeper across the counter opens shop 32; from elsewhere they talk about Sheba,...
struct SceneEvent gFaranHouseEventsAfterLighthouse[]
const struct ScenePlacement * LaliveroInteriors_GetPlacements(void)
The people of each map; Faran's house fills up after Venus Lighthouse.
const struct SceneEntrance * LaliveroInteriors_GetEntrances(void)
s32 gLaliveroMaidChores[]
The maid's chores once she has apologized: she paces between two spots, turning to each side,...
static void TalkToShopkeeper33(s32 keeper)
Shop 33 across the counter; otherwise small talk.
static void TalkToMaid(void)
The maid stops her chores to apologize: worry for Sheba keeps her from concentrating.
struct ScenePlacement gFaranHousePlacements[]
static void LeaveBuilding(void)
A doorway out: take the touched trigger's exit with the exit sound.
static u16 Leader_GetSide(void)
The side the leader faces: the facing rounded to the nearest of east, south, west and north.
@ SHOPKEEPER_33
@ FARAN
In Faran's house.
@ SHOPKEEPER_32
runs shop 32
@ ACTOR_15
posed in animation 6
@ INNKEEPER
@ SHOPKEEPER_34
The reel game's title lettering.
Field object scripts: one s32 command word, then its operands, as gScriptObject_CommandTable runs the...
#define SC_LABEL(n)
Branch destination.
Definition objcmd.h:11
#define SC_SET(w, v)
Write a work value.
Definition objcmd.h:37
#define SC_LOOP(n, to)
Repeat up to n times.
Definition objcmd.h:28
#define SC_SYNC
Wait for arrival.
Definition objcmd.h:17
#define SC_FOREVER
Definition objcmd.h:14
#define SC_TO(n)
Definition objcmd.h:12
#define SC_ARG(v)
Definition objcmd.h:44
#define SC_MOVE(x, y, z)
Move toward the target.
Definition objcmd.h:19
#define SC_WAIT(n)
Wait n frames.
Definition objcmd.h:16
@ SW_ACCEL
Definition objcmd.h:68
@ SW_COLLISION
Definition objcmd.h:79
@ SW_SPEED
Definition objcmd.h:67
@ SW_FACING
Definition objcmd.h:57
#define SC_CALL(fn)
Definition objcmd.h:50
s32 Shop_Run(s32 stockRow, s32 keeperId)
Runs a shop: the shopkeeper's welcome, then buy, sell, artifacts and repair until the player leaves.
Definition run.c:100
Scene numbers, named after their places.
char SceneId_LaliveroInteriors2
char SceneId_LaliveroInteriors1
The field object script interpreter and the operands its commands read.
s32 Shop_ConfirmAct(s32 unitId)
Runs the sanctum service menu using the shared shop cursor and window resources.
Definition sanctum.c:111
Song and sound effect ids, indices into gSound_SongTable.
#define SE_MAP_EXIT
Definition songs.h:116
void Engine_ActorSetAnimation()
struct EventWork * gEventWork
void Engine_EventRequestExit()
void Engine_ActorSetPosition(u32 actor, s32 x, s32 z)
void Engine_EventEnd(void)
void Engine_AudioPlayCue()
void Engine_EventBegin(void)
void Engine_ActorShowEmote()
void Engine_EventSetMessage()
void Engine_EventShowMessage()
#define NULL
Definition bilibin.h:6
The running scene's event work: its placement and event tables, its actors, the triggers and exit it ...
Definition event_work.h:20
s32 startTransition
SCENE_TRANSITION(style, variant).
Definition event_work.h:43
s16 touchedTrigger
the step event a touch or exit event answers
Definition event_work.h:26
u16 message
the next message, advanced as each window opens
Definition event_work.h:47
A field actor: a person or thing on the field with a position, motion toward a target,...
Definition field_obj.h:30
union FieldCoordinate x
16.16 fixed-point pixels
Definition field_obj.h:35
u8 priorityFlags
ActorPriorityFlag bits, read by the scrolling camera.
Definition field_obj.h:51
union FieldCoordinate z
16.16 fixed-point pixels
Definition field_obj.h:37
u16 facing
1/65536 turns
Definition field_obj.h:34
u8 collisionFlags
bits: 7 refuses to move into a solid object | 4 nearer for Psynergy targets | 3 never a talk or Psyne...
Definition field_obj.h:91
s16 entrance
Definition game_state.h:37
s16 savedScene
where a defeat returns to without a defeat point
Definition game_state.h:38
s16 savedEntrance
where a defeat returns to without a defeat point
Definition game_state.h:39
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
u16 facing
1/65536 turns (enum Facing)
Definition field_scene.h:94
A scene's exit region: the box that, while its condition holds, takes the party leader out through it...
The prefix that command handlers read from a field object's 0x70-byte slot.
Definition script.h:16
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
signed short s16
Definition types.h:12
unsigned short u16
Definition types.h:13
struct FieldCoordinate::@024321007066302143002254325121164243234242211074 part
void Party_RestoreHpPp(s32 cureConditions)
Restores every party member's HP and PP; with cureConditions 1 it also cures poison and haunting.
Definition units.c:662