ScummVM API documentation
kyra_lok.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef KYRA_KYRA_LOK_H
23 #define KYRA_KYRA_LOK_H
24 
25 #include "kyra/kyra_v1.h"
26 #include "kyra/script/script.h"
27 #include "kyra/graphics/screen_lok.h"
28 #include "kyra/gui/gui_lok.h"
29 #include "kyra/engine/item.h"
30 
31 namespace Kyra {
32 
33 class Movie;
34 class SoundDigital_MR;
35 class SeqPlayer;
36 class Sprites;
37 class Animator_LoK;
38 class TextDisplayer;
39 class KyraEngine_LoK;
40 
41 struct Character {
42  uint16 sceneId;
43  uint8 height;
44  uint8 facing;
45  uint16 currentAnimFrame;
46  int8 inventoryItems[10];
47  int16 x1, y1, x2, y2;
48 };
49 
50 struct Shape {
51  uint8 imageIndex;
52  int8 xOffset, yOffset;
53  uint8 x, y, w, h;
54 };
55 
56 struct Room {
57  uint8 nameIndex;
58  uint16 northExit;
59  uint16 eastExit;
60  uint16 southExit;
61  uint16 westExit;
62  int8 itemsTable[12];
63  uint16 itemsXPos[12];
64  uint8 itemsYPos[12];
65  uint8 needInit[12];
66 };
67 
68 struct SeqLoop {
69  const uint8 *ptr = nullptr;
70  uint16 count = 0;
71 };
72 
73 struct SceneExits {
74  uint16 northXPos;
75  uint8 northYPos;
76  uint16 eastXPos;
77  uint8 eastYPos;
78  uint16 southXPos;
79  uint8 southYPos;
80  uint16 westXPos;
81  uint8 westYPos;
82 };
83 
84 struct BeadState {
85  int16 x;
86  int16 y;
87  int16 width;
88  int16 height;
89  int16 dstX;
90  int16 dstY;
91  int16 width2;
92  int16 unk8;
93  int16 unk9;
94  int16 tableIndex;
95 };
96 
97 class KyraEngine_LoK : public KyraEngine_v1 {
98  friend class MusicPlayer;
99  friend class Debugger_LoK;
100  friend class Animator_LoK;
101  friend class GUI_LoK;
102 public:
103  KyraEngine_LoK(OSystem *system, const GameFlags &flags);
104  ~KyraEngine_LoK() override;
105 
106  // _sprites and _seqplayer should be paused here too, to avoid some animation glitches,
107  // also parts of the hardcoded Malcolm fight might need some special handling.
108 
109  Screen *screen() override { return _screen; }
110  Animator_LoK *animator() { return _animator; }
111  GUI *gui() const override { return _gui; }
112  virtual Movie *createWSAMovie();
113 
114  uint8 **shapes() { return _shapes; }
115  Character *currentCharacter() { return _currentCharacter; }
116  Character *characterList() { return _characterList; }
117  uint16 brandonStatus() { return _brandonStatusBit; }
118 
119  // TODO: remove me with workaround in animator.cpp l209
120  uint16 getScene() { return _currentRoom; }
121 
122  int _paletteChanged;
123  int16 _northExitHeight;
124 
125  typedef bool (KyraEngine_LoK::*IntroProc)();
126 
127  // static data access
128  const char *const *seqWSATable() { return _seq_WSATable; }
129  const char *const *seqCPSTable() { return _seq_CPSTable; }
130  const char *const *seqCOLTable() { return _seq_COLTable; }
131  const char *const *seqTextsTable() { return _seq_textsTable; }
132 
133  const uint8 *const *palTable1() { return &_specialPalettes[0]; }
134  const uint8 *const *palTable2() { return &_specialPalettes[29]; }
135 
136 protected:
137  Common::Error go() override;
138  Common::Error init() override;
139 
140 public:
141  // sequences
142  // -> misc
143  bool seq_skipSequence() const;
144 protected:
145  // -> demo
146  void seq_demo();
147 
148  // -> intro
149  void seq_intro();
150  bool seq_introPublisherLogos();
151  bool seq_introLogos();
152  bool seq_introStory();
153  bool seq_introMalcolmTree();
154  bool seq_introKallakWriting();
155  bool seq_introKallakMalcolm();
156 
157  // -> ingame animations
158  void seq_createAmuletJewel(int jewel, int page, int noSound, int drawOnly);
159  void seq_brandonHealing();
160  void seq_brandonHealing2();
161  void seq_poisonDeathNow(int now);
162  void seq_poisonDeathNowAnim();
163  void seq_playFluteAnimation();
164  void seq_winterScroll1();
165  void seq_winterScroll2();
166  void seq_makeBrandonInv();
167  void seq_makeBrandonNormal();
168  void seq_makeBrandonNormal2();
169  void seq_makeBrandonWisp();
170  void seq_dispelMagicAnimation();
171  void seq_fillFlaskWithWater(int item, int type);
172  void seq_playDrinkPotionAnim(int item, int makeFlaskEmpty, int flags);
173  void seq_brandonToStone();
174 
175  // -> end fight
176  int seq_playEnd();
177  void seq_playEnding();
178 
179  int handleMalcolmFlag();
180  int handleBeadState();
181  void initBeadState(int x, int y, int x2, int y2, int unk1, BeadState *ptr);
182  int processBead(int x, int y, int &x2, int &y2, BeadState *ptr);
183 
184  // -> credits
185  void seq_playCredits();
186  void seq_playCreditsAmiga();
187 
188 public:
189  // delay
190  void delayUntil(uint32 timestamp, bool updateGameTimers = false, bool update = false, bool isMainLoop = false) override;
191  void delay(uint32 millis, bool update = false, bool isMainLoop = false) override;
192  void delayWithTicks(int ticks) override;
193 
194  bool skipFlag() const override;
195  void resetSkipFlag(bool removeEvent = true) override;
196 
197  // TODO
198  void registerDefaultSettings() override;
199  void readSettings() override;
200  void writeSettings() override;
201 
202  void snd_playSoundEffect(int track, int volume=0xFF) override;
203  void snd_playWanderScoreViaMap(int command, int restart) override;
204  void snd_playVoiceFile(int id) override;
205  void snd_voiceWaitForFinish(bool ingame = true);
206  uint32 snd_getVoicePlayTime();
207 
208 protected:
209  int32 _speechPlayTime;
210 
211  Common::Error saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail) override;
212  Common::Error loadGameState(int slot) override;
213 protected:
214  // input
215  void processInput(int xpos, int ypos);
216  int processInputHelper(int xpos, int ypos);
217  int clickEventHandler(int xpos, int ypos);
218  void clickEventHandler2();
219  void updateMousePointer(bool forceUpdate = false);
220  bool hasClickedOnExit(int xpos, int ypos);
221 
222  // scene
223  // -> init
224  void loadSceneMsc();
225  void startSceneScript(int brandonAlive);
226  void setupSceneItems();
227  void initSceneData(int facing, int unk1, int brandonAlive);
228  void initSceneObjectList(int brandonAlive);
229  void initSceneScreen(int brandonAlive);
230  void setupSceneResource(int sceneId);
231 
232  // -> process
233  void enterNewScene(int sceneId, int facing, int unk1, int unk2, int brandonAlive);
234  int handleSceneChange(int xpos, int ypos, int unk1, int frameReset);
235  int processSceneChange(int *table, int unk1, int frameReset);
236  int changeScene(int facing);
237 
238  // -> modification
239  void transcendScenes(int roomIndex, int roomName);
240  void setSceneFile(int roomIndex, int roomName);
241 
242  // -> pathfinder
243  int findWay(int x, int y, int toX, int toY, int *moveTable, int moveTableSize) override;
244  bool lineIsPassable(int x, int y) override;
245 
246  // -> item handling
247  // --> misc
248  void addItemToRoom(uint16 sceneId, uint8 item, int itemIndex, int x, int y);
249 
250  // --> drop handling
251  void itemDropDown(int x, int y, int destX, int destY, byte freeItem, int item);
252  int processItemDrop(uint16 sceneId, uint8 item, int x, int y, int unk1, int unk2);
253  void dropItem(int unk1, int item, int x, int y, int unk2);
254 
255  // --> dropped item handling
256  int countItemsInScene(uint16 sceneId);
257  void exchangeItemWithMouseItem(uint16 sceneId, int itemIndex);
258  byte findFreeItemInScene(int scene);
259  byte findItemAtPos(int x, int y);
260 
261  // --> drop area handling
262  void addToNoDropRects(int x, int y, int w, int h);
263  void clearNoDropRects();
264  int isDropable(int x, int y);
265  int checkNoDropRects(int x, int y);
266 
267  // --> player items handling
268  void updatePlayerItemsForScene();
269 
270  // --> item GFX handling
271  void backUpItemRect0(int xpos, int ypos);
272  void restoreItemRect0(int xpos, int ypos);
273  void backUpItemRect1(int xpos, int ypos);
274  void restoreItemRect1(int xpos, int ypos);
275 
276  // items
277  // -> misc
278  void placeItemInGenericMapScene(int item, int index);
279 
280  // -> mouse item
281  void setHandItem(Item item) override;
282  void removeHandItem() override;
283  void setMouseItem(Item item);
284 
285  int getItemListIndex(Item item);
286 
287  // -> graphics effects
288  void wipeDownMouseItem(int xpos, int ypos);
289  void itemSpecialFX(int x, int y, int item);
290  void itemSpecialFX1(int x, int y, int item);
291  void itemSpecialFX2(int x, int y, int item);
292  void magicOutMouseItem(int animIndex, int itemPos);
293  void magicInMouseItem(int animIndex, int item, int itemPos);
294  void specialMouseItemFX(int shape, int x, int y, int animIndex, int tableIndex, int loopStart, int maxLoops);
295  void processSpecialMouseItemFX(int shape, int x, int y, int tableValue, int loopStart, int maxLoops);
296 
297  // character
298  // -> movement
299  void moveCharacterToPos(int character, int facing, int xpos, int ypos);
300  void setCharacterPositionWithUpdate(int character);
301  int setCharacterPosition(int character, int *facingTable);
302  void setCharacterPositionHelper(int character, int *facingTable);
303  void setCharactersPositions(int character);
304 
305  // -> brandon
306  void setBrandonPoisonFlags(int reset);
307  void resetBrandonPoisonFlags();
308 
309  // chat
310  // -> process
311  void characterSays(int vocFile, const char *chatStr, int16 charNum, int16 chatDuration);
312  void waitForChatToFinish(int vocFile, int chatDuration, const char *str, uint8 charNum, const bool printText);
313 
314  // -> initialization
315  int initCharacterChat(int8 charNum);
316  void backupChatPartnerAnimFrame(int8 charNum);
317  void restoreChatPartnerAnimFrame(int8 charNum);
318  int8 getChatPartnerNum();
319 
320  // -> deinitialization
321  void endCharacterChat(int8 charNum, int16 arg_4);
322 
323  // graphics
324  // -> misc
325  int findDuplicateItemShape(int shape);
326  void updateKyragemFading();
327 
328  // -> interface
329  void loadMainScreen(int page = 3);
330  void redrawInventory(int page);
331 public:
332  void drawSentenceCommand(const char *sentence, int unk1);
333  void updateSentenceCommand(const char *str1, const char *str2, int unk1);
334  void updateTextFade();
335 
336 protected:
337  // -> amulet
338  void drawJewelPress(int jewel, int drawSpecial);
339  void drawJewelsFadeOutStart();
340  void drawJewelsFadeOutEnd(int jewel);
341 
342  // -> shape handling
343  void setupShapes123(const Shape *shapeTable, int endShape, int flags);
344  void freeShapes123();
345 
346  // misc (TODO)
347  void startup();
348  void mainLoop();
349 
350  int checkForNPCScriptRun(int xpos, int ypos);
351  void runNpcScript(int func);
352 
353  void loadMouseShapes();
354  void loadCharacterShapes();
355  void loadSpecialEffectShapes();
356  void loadItems();
357  void loadButtonShapes();
358  void initMainButtonList();
359  void setCharactersInDefaultScene();
360  void setupPanPages();
361  void freePanPages();
362  void closeFinalWsa();
363 
364  //void setTimer19();
365  void setupTimers() override;
366  void timerUpdateHeadAnims(int timerNum);
367  void timerTulipCreator(int timerNum);
368  void timerRubyCreator(int timerNum);
369  void timerAsInvisibleTimeout(int timerNum);
370  void timerAsWillowispTimeout(int timerNum);
371  void checkAmuletAnimFlags();
372  void timerRedrawAmulet(int timerNum);
373  void timerLavenderRoseCreator(int timerNum);
374  void timerAcornCreator(int timerNum);
375  void timerBlueberryCreator(int timerNum);
376  void timerFadeText(int timerNum);
377  void timerWillowispFrameTimer(int timerNum);
378  void timerInvisibleFrameTimer(int timerNum);
379  void drawAmulet();
380  void setTextFadeTimerCountdown(int16 countdown);
381  void setWalkspeed(uint8 newSpeed) override;
382 
383  void setItemCreationFlags(int offset, int count);
384 
385  int buttonInventoryCallback(Button *caller);
386  int buttonAmuletCallback(Button *caller);
387 
388  bool _seqPlayerFlag;
389  bool _skipIntroFlag;
390  bool _abortIntroFlag;
391 
392  bool _menuDirectlyToLoad;
393  uint8 *_itemBkgBackUp[2];
394  uint8 *_shapes[373];
395  Item _itemInHand;
396  bool _changedScene;
397  int _unkScreenVar1, _unkScreenVar2, _unkScreenVar3;
398  int _beadStateVar;
399  int _unkAmuletVar;
400 
401  int _malcolmFlag;
402  int _endSequenceSkipFlag;
403  int _endSequenceNeedLoading;
404  int _unkEndSeqVar2;
405  uint8 *_endSequenceBackUpRect;
406  int _unkEndSeqVar4;
407  int _unkEndSeqVar5;
408  int _lastDisplayedPanPage;
409  uint8 *_panPagesTable[20];
410  Movie *_finalA, *_finalB, *_finalC;
411 
412  Movie *_movieObjects[10];
413 
414  uint16 _entranceMouseCursorTracks[5];
415  uint16 _walkBlockNorth;
416  uint16 _walkBlockEast;
417  uint16 _walkBlockSouth;
418  uint16 _walkBlockWest;
419 
420  int32 _scaleMode;
421  int16 _scaleTable[145];
422 
423  Common::Rect _noDropRects[11];
424 
425  int8 _birthstoneGemTable[4];
426  int8 _idolGemsTable[3];
427 
428  int8 _marbleVaseItem;
429  int8 _foyerItemTable[3];
430 
431  int8 _cauldronState;
432  int8 _crystalState[2];
433 
434  uint16 _brandonStatusBit;
435  uint8 _brandonStatusBit0x02Flag;
436  uint8 _brandonStatusBit0x20Flag;
437  uint8 _brandonPoisonFlagsGFX[256];
438  int16 _brandonInvFlag;
439  uint8 _poisonDeathCounter;
440  int _brandonPosX;
441  int _brandonPosY;
442 
443  uint16 _currentChatPartnerBackupFrame;
444  uint16 _currentCharAnimFrame;
445 
446  int _characterFacingZeroCount[8];
447  int _characterFacingFourCount[8];
448 
449  int8 *_sceneAnimTable[50];
450 
451  uint8 _itemHtDat[145];
452  int _lastProcessedItem;
453  int _lastProcessedItemHeight;
454 
455  int16 *_exitListPtr;
456  int16 _exitList[11];
457  SceneExits _sceneExits;
458  uint16 _currentRoom;
459  int _scenePhasingFlag;
460 
461  int _sceneChangeState;
462  int _loopFlag2;
463 
464  int _pathfinderFlag;
465  int _pathfinderFlag2;
466  int _lastFindWayRet;
467  int *_movFacingTable;
468 
469  int8 _talkingCharNum;
470  int8 _charSayUnk2;
471  int8 _talkHeadAnimCharNum;
472  int8 _currHeadShape;
473  int _currentHeadFrameTableIndex;
474  int8 _disabledTalkAnimObject;
475  int8 _enabledTalkAnimObject;
476  uint8 _currSentenceColor[3];
477  int8 _startSentencePalIndex;
478  bool _fadeText;
479 
480  uint8 _configTextspeed;
481 
482  Screen::FontId _defaultFont;
483  Screen::FontId _noteFont;
484  int _defaultLineSpacing;
485 
486  Animator_LoK *_animator;
487  SeqPlayer *_seq;
488  Sprites *_sprites;
489  Screen_LoK *_screen;
490 
491  EMCState _scriptMain;
492 
493  EMCState _npcScript;
494  EMCData _npcScriptData;
495 
496  EMCState _scriptClick;
497  EMCData _scriptClickData;
498 
499  Character *_characterList;
500  Character *_currentCharacter;
501 
502  Button *_buttonList;
503  GUI_LoK *_gui;
504 
505  uint16 _malcolmFrame;
506  uint32 _malcolmTimer1;
507  uint32 _malcolmTimer2;
508 
509  uint32 _beadStateTimer1;
510  uint32 _beadStateTimer2;
511  BeadState _beadState1;
512  BeadState _beadState2;
513 
514  struct KyragemState {
515  uint16 nextOperation;
516  uint16 rOffset;
517  uint16 gOffset;
518  uint16 bOffset;
519  uint32 timerCount;
520  } _kyragemFadingState;
521 
522  static const int8 _dosTrackMap[];
523  static const int _dosTrackMapSize;
524  static const int8 _amigaTrackMap[];
525  static const int _amigaTrackMapSize;
526  static const int8 _macHQTrackMap[];
527  static const int _macHQTrackMapSize;
528  static const int8 _macLQTrackMap[];
529  static const int _macLQTrackMapSize;
530 
531  // TODO: get rid of all variables having pointers to the static resources if possible
532  // i.e. let them directly use the _staticres functions
533  void initStaticResource();
534 
535  const uint8 *_seq_Forest;
536  const uint8 *_seq_KallakWriting;
537  const uint8 *_seq_KyrandiaLogo;
538  const uint8 *_seq_KallakMalcolm;
539  const uint8 *_seq_MalcolmTree;
540  const uint8 *_seq_WestwoodLogo;
541  const uint8 *_seq_Demo1;
542  const uint8 *_seq_Demo2;
543  const uint8 *_seq_Demo3;
544  const uint8 *_seq_Demo4;
545  const uint8 *_seq_Reunion;
546 
547  const char *const *_seq_WSATable;
548  const char *const *_seq_CPSTable;
549  const char *const *_seq_COLTable;
550  const char *const *_seq_textsTable;
551 
552  const char *const *_storyStrings;
553 
554  int _seq_WSATable_Size;
555  int _seq_CPSTable_Size;
556  int _seq_COLTable_Size;
557  int _seq_textsTable_Size;
558 
559  int _storyStringsSize;
560 
561  const char *const *_itemList;
562  const char *const *_takenList;
563  const char *const *_placedList;
564  const char *const *_droppedList;
565  const char *const *_noDropList;
566  const char *const *_putDownFirst;
567  const char *const *_waitForAmulet;
568  const char *const *_blackJewel;
569  const char *const *_poisonGone;
570  const char *const *_healingTip;
571  const char *const *_thePoison;
572  const char *const *_fluteString;
573  const char *const *_wispJewelStrings;
574  const char *const *_magicJewelString;
575  const char *const *_flaskFull;
576  const char *const *_fullFlask;
577  const char *const *_veryClever;
578  const char *const *_homeString;
579  const char *const *_newGameString;
580 
581  int _itemList_Size;
582  int _takenList_Size;
583  int _placedList_Size;
584  int _droppedList_Size;
585  int _noDropList_Size;
586  int _putDownFirst_Size;
587  int _waitForAmulet_Size;
588  int _blackJewel_Size;
589  int _poisonGone_Size;
590  int _healingTip_Size;
591  int _thePoison_Size;
592  int _fluteString_Size;
593  int _wispJewelStrings_Size;
594  int _magicJewelString_Size;
595  int _flaskFull_Size;
596  int _fullFlask_Size;
597  int _veryClever_Size;
598  int _homeString_Size;
599  int _newGameString_Size;
600 
601  const char *const *_characterImageTable;
602  int _characterImageTableSize;
603 
604  const char *const *_guiStrings;
605  int _guiStringsSize;
606 
607  const char *const *_configStrings;
608  int _configStringsSize;
609 
610  Shape *_defaultShapeTable;
611  int _defaultShapeTableSize;
612 
613  const Shape *_healingShapeTable;
614  int _healingShapeTableSize;
615  const Shape *_healingShape2Table;
616  int _healingShape2TableSize;
617 
618  const Shape *_posionDeathShapeTable;
619  int _posionDeathShapeTableSize;
620 
621  const Shape *_fluteAnimShapeTable;
622  int _fluteAnimShapeTableSize;
623 
624  const Shape *_winterScrollTable;
625  int _winterScrollTableSize;
626  const Shape *_winterScroll1Table;
627  int _winterScroll1TableSize;
628  const Shape *_winterScroll2Table;
629  int _winterScroll2TableSize;
630 
631  const Shape *_drinkAnimationTable;
632  int _drinkAnimationTableSize;
633 
634  const Shape *_brandonToWispTable;
635  int _brandonToWispTableSize;
636 
637  const Shape *_magicAnimationTable;
638  int _magicAnimationTableSize;
639 
640  const Shape *_brandonStoneTable;
641  int _brandonStoneTableSize;
642 
643  Room *_roomTable;
644  int _roomTableSize;
645  const char *const *_roomFilenameTable;
646  int _roomFilenameTableSize;
647 
648  const uint8 *_amuleteAnim;
649 
650  const uint8 *const *_specialPalettes;
651 
652  // positions of the inventory
653  static const uint16 _itemPosX[];
654  static const uint8 _itemPosY[];
655 
656  void setupButtonData();
657  Button *_buttonData;
658  Button **_buttonDataListPtr;
659 
660  static const uint8 _magicMouseItemStartFrame[];
661  static const uint8 _magicMouseItemEndFrame[];
662  static const uint8 _magicMouseItemStartFrame2[];
663  static const uint8 _magicMouseItemEndFrame2[];
664 
665  static const uint16 _amuletX[];
666  static const uint16 _amuletY[];
667  static const uint16 _amuletX2[];
668  static const uint16 _amuletY2[];
669 
670  // special palette handling for AMIGA
671  void setupZanthiaPalette(int pal);
672 protected:
673  void setupOpcodeTable() override;
674 
675  // Opcodes
676  int o1_magicInMouseItem(EMCState *script);
677  int o1_characterSays(EMCState *script);
678  int o1_delay(EMCState *script);
679  int o1_drawSceneAnimShape(EMCState *script);
680  int o1_runNPCScript(EMCState *script);
681  int o1_setSpecialExitList(EMCState *script);
682  int o1_walkPlayerToPoint(EMCState *script);
683  int o1_dropItemInScene(EMCState *script);
684  int o1_drawAnimShapeIntoScene(EMCState *script);
685  int o1_savePageToDisk(EMCState *script);
686  int o1_sceneAnimOn(EMCState *script);
687  int o1_sceneAnimOff(EMCState *script);
688  int o1_getElapsedSeconds(EMCState *script);
689  int o1_mouseIsPointer(EMCState *script);
690  int o1_runSceneAnimUntilDone(EMCState *script);
691  int o1_fadeSpecialPalette(EMCState *script);
692  int o1_phaseInSameScene(EMCState *script);
693  int o1_setScenePhasingFlag(EMCState *script);
694  int o1_resetScenePhasingFlag(EMCState *script);
695  int o1_queryScenePhasingFlag(EMCState *script);
696  int o1_sceneToDirection(EMCState *script);
697  int o1_setBirthstoneGem(EMCState *script);
698  int o1_placeItemInGenericMapScene(EMCState *script);
699  int o1_setBrandonStatusBit(EMCState *script);
700  int o1_delaySecs(EMCState *script);
701  int o1_getCharacterScene(EMCState *script);
702  int o1_runNPCSubscript(EMCState *script);
703  int o1_magicOutMouseItem(EMCState *script);
704  int o1_internalAnimOn(EMCState *script);
705  int o1_forceBrandonToNormal(EMCState *script);
706  int o1_poisonDeathNow(EMCState *script);
707  int o1_setScaleMode(EMCState *script);
708  int o1_openWSAFile(EMCState *script);
709  int o1_closeWSAFile(EMCState *script);
710  int o1_runWSAFromBeginningToEnd(EMCState *script);
711  int o1_displayWSAFrame(EMCState *script);
712  int o1_enterNewScene(EMCState *script);
713  int o1_setSpecialEnterXAndY(EMCState *script);
714  int o1_runWSAFrames(EMCState *script);
715  int o1_popBrandonIntoScene(EMCState *script);
716  int o1_restoreAllObjectBackgrounds(EMCState *script);
717  int o1_setCustomPaletteRange(EMCState *script);
718  int o1_loadPageFromDisk(EMCState *script);
719  int o1_customPrintTalkString(EMCState *script);
720  int o1_restoreCustomPrintBackground(EMCState *script);
721  int o1_getCharacterX(EMCState *script);
722  int o1_getCharacterY(EMCState *script);
723  int o1_setCharacterFacing(EMCState *script);
724  int o1_copyWSARegion(EMCState *script);
725  int o1_printText(EMCState *script);
726  int o1_loadSoundFile(EMCState *script);
727  int o1_displayWSAFrameOnHidPage(EMCState *script);
728  int o1_displayWSASequentialFrames(EMCState *script);
729  int o1_refreshCharacter(EMCState *script);
730  int o1_internalAnimOff(EMCState *script);
731  int o1_changeCharactersXAndY(EMCState *script);
732  int o1_clearSceneAnimatorBeacon(EMCState *script);
733  int o1_querySceneAnimatorBeacon(EMCState *script);
734  int o1_refreshSceneAnimator(EMCState *script);
735  int o1_placeItemInOffScene(EMCState *script);
736  int o1_wipeDownMouseItem(EMCState *script);
737  int o1_placeCharacterInOtherScene(EMCState *script);
738  int o1_getKey(EMCState *script);
739  int o1_specificItemInInventory(EMCState *script);
740  int o1_popMobileNPCIntoScene(EMCState *script);
741  int o1_mobileCharacterInScene(EMCState *script);
742  int o1_hideMobileCharacter(EMCState *script);
743  int o1_unhideMobileCharacter(EMCState *script);
744  int o1_setCharacterLocation(EMCState *script);
745  int o1_walkCharacterToPoint(EMCState *script);
746  int o1_specialEventDisplayBrynnsNote(EMCState *script);
747  int o1_specialEventRemoveBrynnsNote(EMCState *script);
748  int o1_setLogicPage(EMCState *script);
749  int o1_fatPrint(EMCState *script);
750  int o1_preserveAllObjectBackgrounds(EMCState *script);
751  int o1_updateSceneAnimations(EMCState *script);
752  int o1_sceneAnimationActive(EMCState *script);
753  int o1_setCharacterMovementDelay(EMCState *script);
754  int o1_getCharacterFacing(EMCState *script);
755  int o1_bkgdScrollSceneAndMasksRight(EMCState *script);
756  int o1_dispelMagicAnimation(EMCState *script);
757  int o1_findBrightestFireberry(EMCState *script);
758  int o1_setFireberryGlowPalette(EMCState *script);
759  int o1_setDeathHandlerFlag(EMCState *script);
760  int o1_drinkPotionAnimation(EMCState *script);
761  int o1_makeAmuletAppear(EMCState *script);
762  int o1_drawItemShapeIntoScene(EMCState *script);
763  int o1_setCharacterCurrentFrame(EMCState *script);
764  int o1_waitForConfirmationMouseClick(EMCState *script);
765  int o1_pageFlip(EMCState *script);
766  int o1_setSceneFile(EMCState *script);
767  int o1_getItemInMarbleVase(EMCState *script);
768  int o1_setItemInMarbleVase(EMCState *script);
769  int o1_addItemToInventory(EMCState *script);
770  int o1_intPrint(EMCState *script);
771  int o1_shakeScreen(EMCState *script);
772  int o1_createAmuletJewel(EMCState *script);
773  int o1_setSceneAnimCurrXY(EMCState *script);
774  int o1_poisonBrandonAndRemaps(EMCState *script);
775  int o1_fillFlaskWithWater(EMCState *script);
776  int o1_getCharacterMovementDelay(EMCState *script);
777  int o1_getBirthstoneGem(EMCState *script);
778  int o1_queryBrandonStatusBit(EMCState *script);
779  int o1_playFluteAnimation(EMCState *script);
780  int o1_playWinterScrollSequence(EMCState *script);
781  int o1_getIdolGem(EMCState *script);
782  int o1_setIdolGem(EMCState *script);
783  int o1_totalItemsInScene(EMCState *script);
784  int o1_restoreBrandonsMovementDelay(EMCState *script);
785  int o1_setEntranceMouseCursorTrack(EMCState *script);
786  int o1_itemAppearsOnGround(EMCState *script);
787  int o1_setNoDrawShapesFlag(EMCState *script);
788  int o1_fadeEntirePalette(EMCState *script);
789  int o1_itemOnGroundHere(EMCState *script);
790  int o1_queryCauldronState(EMCState *script);
791  int o1_setCauldronState(EMCState *script);
792  int o1_queryCrystalState(EMCState *script);
793  int o1_setCrystalState(EMCState *script);
794  int o1_setPaletteRange(EMCState *script);
795  int o1_shrinkBrandonDown(EMCState *script);
796  int o1_growBrandonUp(EMCState *script);
797  int o1_setBrandonScaleXAndY(EMCState *script);
798  int o1_resetScaleMode(EMCState *script);
799  int o1_getScaleDepthTableValue(EMCState *script);
800  int o1_setScaleDepthTableValue(EMCState *script);
801  int o1_message(EMCState *script);
802  int o1_checkClickOnNPC(EMCState *script);
803  int o1_getFoyerItem(EMCState *script);
804  int o1_setFoyerItem(EMCState *script);
805  int o1_setNoItemDropRegion(EMCState *script);
806  int o1_walkMalcolmOn(EMCState *script);
807  int o1_passiveProtection(EMCState *script);
808  int o1_setPlayingLoop(EMCState *script);
809  int o1_brandonToStoneSequence(EMCState *script);
810  int o1_brandonHealingSequence(EMCState *script);
811  int o1_protectCommandLine(EMCState *script);
812  int o1_pauseMusicSeconds(EMCState *script);
813  int o1_resetMaskRegion(EMCState *script);
814  int o1_setPaletteChangeFlag(EMCState *script);
815  int o1_vocUnload(EMCState *script);
816  int o1_vocLoad(EMCState *script);
817  int o1_dummy(EMCState *script);
818 };
819 
820 } // End of namespace Kyra
821 
822 #endif
Definition: surface.h:66
Definition: error.h:84
Definition: kyra_lok.h:73
Definition: kyra_v1.h:126
Definition: screen.h:565
Definition: kyra_lok.h:514
Definition: sprites.h:65
Definition: kyra_lok.h:56
Definition: rect.h:144
Definition: kyra_lok.h:50
Definition: system.h:45
Definition: seqplayer_lok.h:29
Definition: script.h:47
Definition: gui_lok.h:94
Definition: wsamovie.h:31
Definition: detection.h:38
Definition: animator_lok.h:29
Definition: kyra_lok.h:97
Definition: screen_lok.h:31
Definition: detection.h:27
Definition: gui.h:38
Definition: kyra_lok.h:41
Definition: debugger.h:54
Definition: system.h:167
Definition: script.h:35
Definition: kyra_lok.h:68
Definition: kyra_lok.h:84