aboutsummaryrefslogtreecommitdiff
path: root/sword1/sword1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sword1/sword1.cpp')
-rw-r--r--sword1/sword1.cpp900
1 files changed, 11 insertions, 889 deletions
diff --git a/sword1/sword1.cpp b/sword1/sword1.cpp
index 86e986dc40..005467e706 100644
--- a/sword1/sword1.cpp
+++ b/sword1/sword1.cpp
@@ -217,870 +217,6 @@ void SwordEngine::reinitialize(void) {
_systemVars.wantFade = true;
}
-void SwordEngine::startPositions(int32 startNumber) {
- // int32 sect;
- Object *compact;
-
- Logic::_scriptVars[CHANGE_STANCE] = STAND;
- Logic::_scriptVars[GEORGE_CDT_FLAG] = GEO_TLK_TABLE;
-
- //-------------------------------------------------------------------------------------------------------
- // START 0==intro; 1==without
-
- if ((startNumber==0)||(startNumber==1))
- {
- if (startNumber==0)
- {
- // Tdebug("Calling fn check cd");
- // FN_check_CD(0,0,1,0,0,0,0,0); // request CD for sc1 (which happens to be CD-1)
- // Tdebug("Calling fn play sequence");
- _logic->fnPlaySequence(0,0,4,0,0,0,0,0); // intro
- debug(1, "Setting start number to 1");
- startNumber=1;
- }
-
-
- Logic::_scriptVars[CHANGE_X] = 481;
- Logic::_scriptVars[CHANGE_Y] = 413;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_1;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==2) // blind_alley
- {
- Logic::_scriptVars[CHANGE_X] = 480;
- Logic::_scriptVars[CHANGE_Y] = 388;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_2;
-
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
- _logic->fnAddObject(0,0,ROSSO_CARD,0,0,0,0,0);
-
- Logic::_scriptVars[POCKET_1] = 1;
- Logic::_scriptVars[POCKET_2] = 1;
- Logic::_scriptVars[POCKET_3] = 1;
- Logic::_scriptVars[POCKET_4] = 1;
- Logic::_scriptVars[POCKET_5] = 1;
- Logic::_scriptVars[POCKET_6] = 1;
- Logic::_scriptVars[POCKET_7] = 1;
- Logic::_scriptVars[POCKET_8] = 1;
- Logic::_scriptVars[POCKET_9] = 1;
-
- Logic::_scriptVars[POCKET_10] = 1;
- Logic::_scriptVars[POCKET_11] = 1;
- Logic::_scriptVars[POCKET_12] = 1;
- Logic::_scriptVars[POCKET_13] = 1;
- Logic::_scriptVars[POCKET_14] = 1;
- Logic::_scriptVars[POCKET_15] = 1;
- Logic::_scriptVars[POCKET_16] = 1;
- Logic::_scriptVars[POCKET_17] = 1;
- Logic::_scriptVars[POCKET_18] = 1;
- Logic::_scriptVars[POCKET_19] = 1;
-
- Logic::_scriptVars[POCKET_20] = 1;
- Logic::_scriptVars[POCKET_21] = 1;
- Logic::_scriptVars[POCKET_22] = 1;
- Logic::_scriptVars[POCKET_23] = 1;
- Logic::_scriptVars[POCKET_24] = 1;
- Logic::_scriptVars[POCKET_25] = 1;
- Logic::_scriptVars[POCKET_26] = 1;
- Logic::_scriptVars[POCKET_27] = 1;
- Logic::_scriptVars[POCKET_28] = 1;
- Logic::_scriptVars[POCKET_29] = 1;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==3) // cafe
- {
- Logic::_scriptVars[CHANGE_X] = 660;
- Logic::_scriptVars[CHANGE_Y] = 368;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_3;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==4) // ready to use phone
- {
- Logic::_scriptVars[CHANGE_X] = 463;
- Logic::_scriptVars[CHANGE_Y] = 391;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_4;
-
- Logic::_scriptVars[MOUE_TEXT] = 1; // stop moue from entering ("Freeze...")
- Logic::_scriptVars[MOUE_NICO_FLAG] = 1; // Moue gave George her number
-// paris_flag=2; // for Nico's phone script
- Logic::_scriptVars[PARIS_FLAG] = 5; // to access room8 (cafe_repaired)
- Logic::_scriptVars[NICO_PHONE_FLAG] = 1; // Nico's number is on envelope
- Logic::_scriptVars[TAILOR_PHONE_FLAG] = 1; // Todryk's number is on envelope
- Logic::_scriptVars[WORKMAN_GONE_FLAG] = 1; // Workman not here
- Logic::_scriptVars[ALBERT_INFO_FLAG] = 1; // Albert has told us the tailor's number (for Nico's phone script)
- Logic::_scriptVars[SEEN_SEWERS_FLAG] = 1;
-
- Logic::_scriptVars[POCKET_30] = 1;
- Logic::_scriptVars[POCKET_31] = 1;
- Logic::_scriptVars[POCKET_32] = 1;
- Logic::_scriptVars[POCKET_33] = 1;
- Logic::_scriptVars[POCKET_34] = 1;
- Logic::_scriptVars[POCKET_35] = 1;
- Logic::_scriptVars[POCKET_36] = 1;
- Logic::_scriptVars[POCKET_37] = 1;
- Logic::_scriptVars[POCKET_38] = 1;
- Logic::_scriptVars[POCKET_39] = 1;
-
- Logic::_scriptVars[POCKET_40] = 1;
- Logic::_scriptVars[POCKET_41] = 1;
- Logic::_scriptVars[POCKET_42] = 1;
- Logic::_scriptVars[POCKET_43] = 1;
- Logic::_scriptVars[POCKET_44] = 1;
- Logic::_scriptVars[POCKET_45] = 1;
- Logic::_scriptVars[POCKET_46] = 1;
- Logic::_scriptVars[POCKET_47] = 1;
- Logic::_scriptVars[POCKET_48] = 1;
- Logic::_scriptVars[POCKET_49] = 1;
-
- Logic::_scriptVars[POCKET_50] = 1;
- Logic::_scriptVars[POCKET_51] = 1;
- Logic::_scriptVars[POCKET_52] = 1;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==5) // court_yard
- {
- Logic::_scriptVars[CHANGE_X] = 400;
- Logic::_scriptVars[CHANGE_Y] = 400;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_5;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==7) // sewer_two
- {
- Logic::_scriptVars[CHANGE_X] = 520;
- Logic::_scriptVars[CHANGE_Y] = 310;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_7;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==8) // cafe_repaired
- {
- Logic::_scriptVars[CHANGE_X] = 481;
- Logic::_scriptVars[CHANGE_Y] = 413;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_8;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==11) // costumier
- {
- Logic::_scriptVars[CHANGE_X] = 264;
- Logic::_scriptVars[CHANGE_Y] = 436;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_11;
-
- _logic->fnAddObject(0,0,TISSUE,0,0,0,0,0);
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- // HOTEL SECTION
- else if (startNumber==12) // hotel_street
- {
- Logic::_scriptVars[CHANGE_X] = 730;
- Logic::_scriptVars[CHANGE_Y] = 460;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_12;
-
- Logic::_scriptVars[PARIS_FLAG] = 6;
-
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
-
- Logic::_scriptVars[NICO_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[NICO_PHONE_FLAG] = 1;
- Logic::_scriptVars[COSTUMES_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[HOTEL_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[AEROPORT_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[TAILOR_PHONE_FLAG] = 1;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==14) // hotel_corridor
- {
- Logic::_scriptVars[CHANGE_X] = 528;
- Logic::_scriptVars[CHANGE_Y] = 484;
- Logic::_scriptVars[CHANGE_DIR] = UP;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_14;
-
- _logic->fnAddObject(0,0,HOTEL_KEY,0,0,0,0,0);
- _logic->fnAddObject(0,0,MANUSCRIPT,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==17) // hotel_assassin
- {
- Logic::_scriptVars[CHANGE_X] = 714;
- Logic::_scriptVars[CHANGE_Y] = 484;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_17;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==18) // gendarmerie
- {
- Logic::_scriptVars[CHANGE_X] = 446;
- Logic::_scriptVars[CHANGE_Y] = 408;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_18;
-
- Logic::_scriptVars[PARIS_FLAG] = 5; // for Moue & Rosso
- }
- //-------------------------------------------------------------------------------------------------------
- // MUSEUM RAID
- else if (startNumber==27) // museum_street
- {
- Logic::_scriptVars[CHANGE_X] = 300;
- Logic::_scriptVars[CHANGE_Y] = 510;
- Logic::_scriptVars[CHANGE_DIR] = UP_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_27;
-
- Logic::_scriptVars[PARIS_FLAG] = 12; // for Lobineau in Museum
- Logic::_scriptVars[MANUSCRIPT_ON_TABLE_10_FLAG] = 1;
- }
- //-------------------------------------------------------------------------------------------------------
- // HOSPITAL SECTION
- else if (startNumber==31) // hospital_street
- {
- Logic::_scriptVars[CHANGE_X] = 400;
- Logic::_scriptVars[CHANGE_Y] = 500;
- Logic::_scriptVars[CHANGE_DIR] = UP_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_31;
-
- Logic::_scriptVars[PARIS_FLAG] = 11;
-
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,LAB_PASS,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==32) // hospital_desk (after we've found out where Marquet is)
- {
- Logic::_scriptVars[CHANGE_X] = 405;
- Logic::_scriptVars[CHANGE_Y] = 446;
- Logic::_scriptVars[CHANGE_DIR] = UP_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_32;
-
- Logic::_scriptVars[PARIS_FLAG] = 11;
-
- Logic::_scriptVars[EVA_TEXT] = 1; // talked to eva
- Logic::_scriptVars[EVA_MARQUET_FLAG] = 2;
- Logic::_scriptVars[EVA_NURSE_FLAG] = 4;
- Logic::_scriptVars[FOUND_WARD_FLAG] = 1;
- Logic::_scriptVars[CONSULTANT_HERE] = 1;
-
- compact = (Object*)_objectMan->fetchObject(PLAYER);
- _logic->fnMegaSet(compact,PLAYER,GEORGE_WLK,MEGA_WHITE,0,0,0,0);
-
- Logic::_scriptVars[GEORGE_CDT_FLAG] = WHT_TLK_TABLE;
- Logic::_scriptVars[GEORGE_TALK_FLAG] = 0;
- Logic::_scriptVars[WHITE_COAT_FLAG] = 1;
- Logic::_scriptVars[GEORGE_ALLOWED_REST_ANIMS] = 0; // because wearing white coat now
-
- Logic::_scriptVars[GOT_BENOIR_FLAG] = 1;
-
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,LAB_PASS,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==35) // hospital_jacques
- {
- Logic::_scriptVars[CHANGE_X] = 640;
- Logic::_scriptVars[CHANGE_Y] = 500;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_35;
-
- Logic::_scriptVars[PARIS_FLAG] = 11;
-
- Logic::_scriptVars[EVA_TEXT] = 1; // talked to eva
- Logic::_scriptVars[EVA_MARQUET_FLAG] = 2;
- Logic::_scriptVars[EVA_NURSE_FLAG] = 4;
- Logic::_scriptVars[FOUND_WARD_FLAG] = 1;
- Logic::_scriptVars[CONSULTANT_HERE] = 1;
-
- compact = (Object*)_objectMan->fetchObject(PLAYER);
- _logic->fnMegaSet(compact,PLAYER,GEORGE_WLK,MEGA_WHITE,0,0,0,0);
-
- Logic::_scriptVars[GEORGE_CDT_FLAG] = WHT_TLK_TABLE;
- Logic::_scriptVars[GEORGE_TALK_FLAG] = 0;
- Logic::_scriptVars[WHITE_COAT_FLAG] = 1;
- Logic::_scriptVars[GEORGE_ALLOWED_REST_ANIMS] = 0; // because wearing white coat now
- Logic::_scriptVars[DOOR_34_OPEN] = 1;
-
- Logic::_scriptVars[GOT_BENOIR_FLAG] = 2;
- Logic::_scriptVars[HOS_POS_FLAG] = 26;
- Logic::_scriptVars[BENOIR_FLAG] = 24; // for 'george_enters_ward' script
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==36) // montfaucon
- {
- Logic::_scriptVars[CHANGE_X] = 300;
- Logic::_scriptVars[CHANGE_Y] = 480;
- Logic::_scriptVars[CHANGE_DIR] = RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_36;
-
- _logic->fnAddObject(0,0,LENS,0,0,0,0,0);
- _logic->fnAddObject(0,0,RED_NOSE,0,0,0,0,0);
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
-
- Logic::_scriptVars[MONTFAUCON_CONTROL_FLAG] = 1;
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==37) // catacomb_sewer
- {
- Logic::_scriptVars[CHANGE_X] = 592;
- Logic::_scriptVars[CHANGE_Y] = 386;
- Logic::_scriptVars[CHANGE_DIR] = RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_37;
-
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
- _logic->fnAddObject(0,0,TRIPOD,0,0,0,0,0);
- _logic->fnAddObject(0,0,GEM,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==38) // catacomb_room
- {
- Logic::_scriptVars[CHANGE_X] = 200;
- Logic::_scriptVars[CHANGE_Y] = 390;
- Logic::_scriptVars[CHANGE_DIR] = RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_38;
-
- _logic->fnAddObject(0,0,TRIPOD,0,0,0,0,0);
- _logic->fnAddObject(0,0,GEM,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==39) // catacomb_meeting
- {
- Logic::_scriptVars[CHANGE_X] = 636;
- Logic::_scriptVars[CHANGE_Y] = 413;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_39;
-
- Logic::_scriptVars[MEETING_FLAG] = 3; // meeting finished
-
- _logic->fnAddObject(0,0,TRIPOD,0,0,0,0,0);
- _logic->fnAddObject(0,0,GEM,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==40) // excavation_exterior
- {
- Logic::_scriptVars[CHANGE_X] = 648;
- Logic::_scriptVars[CHANGE_Y] = 492;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_40;
-
- Logic::_scriptVars[NICO_PHONE_FLAG] = 1;
- Logic::_scriptVars[PARIS_FLAG] = 16;
-
- _logic->fnAddObject(0,0,PLASTER,0,0,0,0,0);
- _logic->fnAddObject(0,0,POLISHED_CHALICE,0,0,0,0,0);
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==48) // templar_church
- {
- Logic::_scriptVars[CHANGE_X] = 315;
- Logic::_scriptVars[CHANGE_Y] = 392;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_48;
-
- _logic->fnAddObject(0,0,CHALICE,0,0,0,0,0);
- _logic->fnAddObject(0,0,LENS,0,0,0,0,0);
-
- Logic::_scriptVars[CHALICE_FLAG] = 2; // from end of Spain1, when George gets chalice
- Logic::_scriptVars[NEJO_TEXT] = 1; // so priest is there
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==99) // test text+speech on blank screen (sc99)
- {
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_99;
-
- // if (testingText)
- if (1)
- {
-// lastLineNo = testTextSection*65536 + LastTextNumber(testTextSection);
- Logic::_scriptVars[LASTLINENO] = 146*65536 + _objectMan->lastTextNumber(146); // don't finished until at last line in last section
- }
- }
- //-------------------------------------------------------------------------------------------------------
- else if (startNumber==80) // Paris Map
- {
- Logic::_scriptVars[CHANGE_X] = 645;
- Logic::_scriptVars[CHANGE_Y] = 160;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_80;
-
- Logic::_scriptVars[PARIS_FLAG] = 3; // for Nico's appartment
- Logic::_scriptVars[NICO_CLOWN_FLAG] = 3;
-
- Logic::_scriptVars[NICO_DOOR_FLAG] = 2; // for instant access to Nico's appartment
-
- _logic->fnAddObject(0,0,RED_NOSE,0,0,0,0,0);
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,PLASTER,0,0,0,0,0);
- _logic->fnAddObject(0,0,LAB_PASS,0,0,0,0,0); // for hospital
-
- Logic::_scriptVars[MANUSCRIPT_FLAG] = 1;
-
- Logic::_scriptVars[NICO_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[NICO_PHONE_FLAG] = 1;
- Logic::_scriptVars[COSTUMES_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[HOTEL_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[MUSEUM_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[HOSPITAL_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[MONTFACN_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[AEROPORT_ADDRESS_FLAG] = 1;
- Logic::_scriptVars[NERVAL_ADDRESS_FLAG] = 1;
-
- Logic::_scriptVars[IRELAND_MAP_FLAG] = 1;
- Logic::_scriptVars[SPAIN_MAP_FLAG] = 1;
- Logic::_scriptVars[SYRIA_FLAG] = 2;
-
- Logic::_scriptVars[TAILOR_PHONE_FLAG] = 1;
- }
- //-------------------------------------------------------------------------------------------------------
- // IRELAND
- else if ((startNumber>=19)&&(startNumber<=26))
- {
- Logic::_scriptVars[PARIS_FLAG] = 9;
-
- // already carrying these objects by the time we reach Ireland...
- _logic->fnAddObject(0,0,RED_NOSE,0,0,0,0,0);
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,LAB_PASS,0,0,0,0,0);
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
- _logic->fnAddObject(0,0,MATCHBOOK,0,0,0,0,0);
- _logic->fnAddObject(0,0,BUZZER,0,0,0,0,0);
- _logic->fnAddObject(0,0,TISSUE,0,0,0,0,0);
-
- switch (startNumber)
- {
- //---------------------------
- case 19: // ireland_street
- {
- Logic::_scriptVars[CHANGE_X] = 256;
- Logic::_scriptVars[CHANGE_Y] = 966;
- Logic::_scriptVars[CHANGE_DIR] = UP_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_19;
- }
- break;
- //---------------------------
- case 20: // macdevitts
- {
- Logic::_scriptVars[CHANGE_X] = 194;
- Logic::_scriptVars[CHANGE_Y] = 417;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_20;
-
- Logic::_scriptVars[FARMER_MOVED_FLAG] = 1;
- Logic::_scriptVars[FARMER_SEAN_FLAG] = 5;
-
- Logic::_scriptVars[PUB_FLAP_FLAG] = 1;
- Logic::_scriptVars[PUB_TRAP_DOOR] = 2;
- Logic::_scriptVars[KNOWS_PEAGRAM_FLAG] = 1;
- }
- break;
- //---------------------------
- case 21: // pub_cellar
- {
- Logic::_scriptVars[CHANGE_X] = 291;
- Logic::_scriptVars[CHANGE_Y] = 444;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_21;
-
- _logic->fnAddObject(0,0,BEER_TOWEL,0,0,0,0,0);
-
- Logic::_scriptVars[FARMER_MOVED_FLAG] = 1;
- Logic::_scriptVars[FLEECY_STUCK] = 1;
- Logic::_scriptVars[LIFTING_KEYS_IN_HOLE_23] = 1;
- }
- break;
- //---------------------------
- case 22: // castle_gate
- {
- Logic::_scriptVars[CHANGE_X] = 547;
- Logic::_scriptVars[CHANGE_Y] = 500;
- Logic::_scriptVars[CHANGE_DIR] = UP_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_22;
-
- Logic::_scriptVars[IRELAND_FLAG] = 4; // so we can get rid of farmer
- }
- break;
- //---------------------------
- case 23: // castle_hay_top
- {
- Logic::_scriptVars[CHANGE_X] = 535;
- Logic::_scriptVars[CHANGE_Y] = 510;
- Logic::_scriptVars[CHANGE_DIR] = UP;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_23;
- }
- break;
- //---------------------------
- case 24: // castle_yard
- {
- Logic::_scriptVars[CHANGE_X] = 815;
- Logic::_scriptVars[CHANGE_Y] = 446;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_24;
- }
- break;
- //---------------------------
- case 25: // castle_dig
- {
- Logic::_scriptVars[CHANGE_X] = 369;
- Logic::_scriptVars[CHANGE_Y] = 492;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_25;
-
- _logic->fnAddObject(0,0,BEER_TOWEL,0,0,0,0,0);
-
- Logic::_scriptVars[BEER_TOWEL_BEEN_WET] = 1;
- Logic::_scriptVars[WET_BEER_TOWEL_TIMER] = 1000;
- }
- break;
- //---------------------------
- case 26: // cellar_dark
- {
- Logic::_scriptVars[CHANGE_X] = 291;
- Logic::_scriptVars[CHANGE_Y] = 444;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_26;
- }
- break;
- //---------------------------
- }
- }
- //-------------------------------------------------------------------------------------------------------
- // SYRIA
-
- else if ((startNumber >= 45) && (startNumber <= 55))
- {
- Logic::_scriptVars[PARIS_FLAG] = 1;
-
- // already carrying these objects by the time we reach Syria...
- _logic->fnAddObject(0,0,BALL,0,0,0,0,0);
- _logic->fnAddObject(0,0,RED_NOSE,0,0,0,0,0);
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
- _logic->fnAddObject(0,0,MATCHBOOK,0,0,0,0,0);
- _logic->fnAddObject(0,0,BUZZER,0,0,0,0,0);
- _logic->fnAddObject(0,0,TISSUE,0,0,0,0,0);
-
- Logic::_scriptVars[CHANGE_STANCE] = STAND; // use STAND for all starts
-
- switch (startNumber)
- {
- //---------------------------
- case 45: // syria_stall
- {
- Logic::_scriptVars[CHANGE_X] = 410;
- Logic::_scriptVars[CHANGE_Y] = 490;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_45;
- }
- break;
- //---------------------------
- case 47: // syria_carpet
- {
- Logic::_scriptVars[CHANGE_X] = 225;
- Logic::_scriptVars[CHANGE_Y] = 775;
- Logic::_scriptVars[CHANGE_DIR] = RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_47;
- }
- break;
- //---------------------------
- case 49: // syria_club
- {
- Logic::_scriptVars[CHANGE_X] = 438;
- Logic::_scriptVars[CHANGE_Y] = 400;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_49;
-
- _logic->fnAddObject(0,0,TOILET_BRUSH,0,0,0,0,0);
- }
- break;
- //---------------------------
- case 50: // syria_toilet
- {
- Logic::_scriptVars[CHANGE_X] = 313;
- Logic::_scriptVars[CHANGE_Y] = 440;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_50;
-
- _logic->fnAddObject(0,0,TOILET_KEY,0,0,0,0,0);
- }
- break;
- //---------------------------
- case 53: // bull_head pan
- {
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_53;
-
- _logic->fnAddObject(0,0,TOWEL_CUT,0,0,0,0,0);
- }
- break;
- //---------------------------
- case 54: // bull_head
- {
- Logic::_scriptVars[CHANGE_X] = 680;
- Logic::_scriptVars[CHANGE_Y] = 425;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_54;
-
- _logic->fnAddObject(0,0,TOWEL_CUT,0,0,0,0,0);
- }
- break;
- //---------------------------
- case 55: // bull_secret
- {
- Logic::_scriptVars[CHANGE_X] = 825;
- Logic::_scriptVars[CHANGE_Y] = 373;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_55;
- }
- break;
- //---------------------------
- default:
- {
- error("Can't start in location %d", startNumber);
- }
- break;
- //---------------------------
- }
- }
- //-------------------------------------------------------------------------------------------------------
- // SPAIN 1 or 2
-
- else if ( ((startNumber >= 56) && (startNumber <= 62)) ||
- ((startNumber >=956) && (startNumber <= 962)) )
- {
- Logic::_scriptVars[PARIS_FLAG] = 1;
-
- if (startNumber > 900) // SPAIN 2
- {
- startNumber -= 900; // set to correct start location
- Logic::_scriptVars[SPAIN_VISIT] = 2; // set my own script flag to indicate 2nd visit
- }
- else
- Logic::_scriptVars[SPAIN_VISIT] = 1; // set my own script flag to indicate 1st visit
-
- // already carrying these objects by the time we reach Spain...
- _logic->fnAddObject(0,0,RED_NOSE,0,0,0,0,0);
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,LAB_PASS,0,0,0,0,0);
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
- _logic->fnAddObject(0,0,BUZZER,0,0,0,0,0);
- _logic->fnAddObject(0,0,TISSUE,0,0,0,0,0);
- _logic->fnAddObject(0,0,BALL,0,0,0,0,0);
- _logic->fnAddObject(0,0,MATCHBOOK,0,0,0,0,0);
-
- if (Logic::_scriptVars[SPAIN_VISIT] == 1) // 1st visit
- _logic->fnAddObject(0,0,PRESSURE_GAUGE,0,0,0,0,0);
- else // 2nd visit
- _logic->fnAddObject(0,0,POLISHED_CHALICE,0,0,0,0,0);
-
- switch (startNumber)
- {
- //---------------------------
- case 56: // Countess' room
- {
- Logic::_scriptVars[CHANGE_X] = 572;
- Logic::_scriptVars[CHANGE_Y] = 443;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_56;
- }
- break;
- //---------------------------
- case 57: // Spain Drive
- {
- Logic::_scriptVars[CHANGE_X] = 1630;
- Logic::_scriptVars[CHANGE_Y] = 460;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_57;
- }
- break;
- //---------------------------
- case 58: // Mausoleum Exterior
- {
- Logic::_scriptVars[CHANGE_X] = SC58_PATH_X;
- Logic::_scriptVars[CHANGE_Y] = SC58_PATH_Y;
- Logic::_scriptVars[CHANGE_DIR] = UP_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_58;
- }
- break;
- //---------------------------
- case 59: // Mausoleum Interior
- {
- Logic::_scriptVars[CHANGE_X] = 750;
- Logic::_scriptVars[CHANGE_Y] = 455;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_59;
- }
- break;
- //---------------------------
- case 60: // Spain Reception
- {
- Logic::_scriptVars[CHANGE_X] = 750;
- Logic::_scriptVars[CHANGE_Y] = 475;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_60;
- }
- break;
- //---------------------------
- case 61: // Spain Well
- {
- Logic::_scriptVars[CHANGE_X] = 400;
- Logic::_scriptVars[CHANGE_Y] = 345;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = LEFT_FLOOR_61;
-
- _logic->fnAddObject(0,0,STONE_KEY,0,0,0,0,0);
- _logic->fnAddObject(0,0,MIRROR,0,0,0,0,0);
- }
- break;
- //---------------------------
- case 62: // CHESS PUZZLE
- {
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_62; // so it doesn't crash!!
-
- _logic->_scriptVars[TOP_MENU_DISABLED] = 1; // because it's irrelevant to the chess puzzle
- _logic->_scriptVars[GEORGE_ALLOWED_REST_ANIMS] = 0; // because it's irrelevant to the chess puzzle
-
- compact = (Object*)_objectMan->fetchObject(PLAYER);
- _logic->fnNoSprite(compact, PLAYER, 0, 0, 0, 0, 0, 0);
- }
- break;
- //---------------------------
- }
- }
- //-------------------------------------------------------------------------------------------------------
- // NIGHT TRAIN
-
- else if ((startNumber >= 63) && (startNumber <= 70))
- {
- Logic::_scriptVars[PARIS_FLAG] = 18;
-
- switch (startNumber)
- {
- //---------------------------
- case 63: // train_one
- {
- Logic::_scriptVars[CHANGE_X] = 710;
- Logic::_scriptVars[CHANGE_Y] = 450;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_63;
- Logic::_scriptVars[DOOR_SC65_FLAG] = 2;
- Logic::_scriptVars[DOOR_ONE_63_OPEN] = 0;
- Logic::_scriptVars[DOOR_65_OPEN] = 1;
- Logic::_scriptVars[VAIL_TEXT] = 1;
- }
- break;
- //---------------------------
- case 65: // compt_one
- {
- Logic::_scriptVars[CHANGE_X] = 460;
- Logic::_scriptVars[CHANGE_Y] = 430;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_65;
- }
- //---------------------------
- case 66: // compt_two
- {
- Logic::_scriptVars[CHANGE_X] = 460;
- Logic::_scriptVars[CHANGE_Y] = 430;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_66;
-
- Logic::_scriptVars[WINDOW_66_OPEN] = 1;
- }
- break;
- //---------------------------
- case 67: // compt_three
- {
- Logic::_scriptVars[CHANGE_X] = 460;
- Logic::_scriptVars[CHANGE_Y] = 430;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_67;
- }
- break;
- //---------------------------
- case 69: // train_guard
- {
- Logic::_scriptVars[CHANGE_X] = 310;
- Logic::_scriptVars[CHANGE_Y] = 430;
- Logic::_scriptVars[CHANGE_DIR] = DOWN;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_69;
- }
- break;
- //---------------------------
- default:
- {
- error("Can't start in location %d", startNumber);
- }
- break;
- //---------------------------
- }
- }
- //-------------------------------------------------------------------------------------------------------
- // SCOTLAND
-
- else if ((startNumber >= 71) && (startNumber <= 73))
- {
- Logic::_scriptVars[PARIS_FLAG] = 1;
-
- // already carrying these objects by the time we reach Scotland...
- _logic->fnAddObject(0,0,RED_NOSE,0,0,0,0,0);
- _logic->fnAddObject(0,0,PHOTOGRAPH,0,0,0,0,0);
- _logic->fnAddObject(0,0,LAB_PASS,0,0,0,0,0);
- _logic->fnAddObject(0,0,LIFTING_KEYS,0,0,0,0,0);
- _logic->fnAddObject(0,0,BUZZER,0,0,0,0,0);
-
- switch (startNumber)
- {
- //---------------------------
- case 71: // churchyard
- {
- Logic::_scriptVars[CHANGE_X] = 1538;
- Logic::_scriptVars[CHANGE_Y] = 444;
- Logic::_scriptVars[CHANGE_DIR] = LEFT;
- Logic::_scriptVars[CHANGE_PLACE] = RIGHT_FLOOR_71;
-
- Logic::_scriptVars[NICO_SCOT_SCREEN] = 71;
- Logic::_scriptVars[NICO_POSITION_71] = 1;
- }
- break;
- //---------------------------
- case 72: // church_tower
- {
- Logic::_scriptVars[CHANGE_X] = 150;
- Logic::_scriptVars[CHANGE_Y] = 503;
- Logic::_scriptVars[CHANGE_DIR] = RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_72;
-
- Logic::_scriptVars[NICO_SCOT_SCREEN] = 72;
- }
- break;
- //---------------------------
- case 73: // crypt
- {
- Logic::_scriptVars[CHANGE_X] = 250;
- Logic::_scriptVars[CHANGE_Y] = 390;
- Logic::_scriptVars[CHANGE_DIR] = DOWN_RIGHT;
- Logic::_scriptVars[CHANGE_PLACE] = FLOOR_73;
-
- Logic::_scriptVars[NICO_SCOT_SCREEN] = 73;
- Logic::_scriptVars[NICO_POSITION_73] = 1;
- }
- break;
- //---------------------------
- }
- }
- else
- {
- error("Can't start in location %d", startNumber);
- }
-
- compact = (Object*)_objectMan->fetchObject(PLAYER);
- _logic->fnEnterSection(compact, PLAYER, startNumber, 0, 0, 0, 0, 0); // (automatically opens the compact resource for that section)
- _systemVars.controlPanelMode = CP_NORMAL;
- _systemVars.wantFade = true;
-}
-
void SwordEngine::checkCdFiles(void) { // check if we're running from cd, hdd or what...
const char *speechFiles[] = {
#ifdef USE_MAD
@@ -1149,18 +285,18 @@ int SwordEngine::go() {
checkCdFiles();
- uint8 startPos = ConfMan.getInt("boot_param");
+ uint16 startPos = ConfMan.getInt("boot_param");
if (startPos)
- startPositions(startPos);
+ _logic->startPositions(startPos);
else {
if (_control->savegamesExist()) {
_systemVars.controlPanelMode = CP_NEWGAME;
if (_control->runPanel() == CONTROL_GAME_RESTORED)
_control->doRestore();
else if (!_systemVars.engineQuit)
- startPositions(0);
+ _logic->startPositions(0);
} else // no savegames, start new game.
- startPositions(0);
+ _logic->startPositions(0);
}
_systemVars.controlPanelMode = CP_NORMAL;
@@ -1173,7 +309,7 @@ int SwordEngine::go() {
if (action == CONTROL_GAME_RESTORED)
_control->doRestore();
else if (action == CONTROL_RESTART_GAME)
- startPositions(1);
+ _logic->startPositions(1);
_systemVars.forceRestart = false;
_systemVars.controlPanelMode = CP_NORMAL;
}
@@ -1227,7 +363,6 @@ uint8 SwordEngine::mainLoop(void) {
_screen->draw();
_mouse->animate();
-
_sound->engine();
_menu->refresh(MENU_TOP);
_menu->refresh(MENU_BOT);
@@ -1235,20 +370,13 @@ uint8 SwordEngine::mainLoop(void) {
newTime = _system->getMillis();
if (newTime - frameTime < 1000 / FRAME_RATE) {
scrollFrameShown = _screen->showScrollFrame();
- int32 restDelay = (1000 / (FRAME_RATE * 2)) - (_system->getMillis() - frameTime);
- if (restDelay > 0)
- delay((uint)restDelay);
+ delay((1000 / (FRAME_RATE * 2)) - (_system->getMillis() - frameTime));
}
newTime = _system->getMillis();
if ((newTime - frameTime < 1000 / FRAME_RATE) || (!scrollFrameShown))
_screen->updateScreen();
-
- int32 frameDelay = (1000 / FRAME_RATE) - (_system->getMillis() - frameTime);
- if (frameDelay > 0)
- delay((uint)frameDelay);
- else
- delay(0);
+ delay((1000 / FRAME_RATE) - (_system->getMillis() - frameTime));
_mouse->engine( _mouseX, _mouseY, _mouseState);
@@ -1267,13 +395,11 @@ uint8 SwordEngine::mainLoop(void) {
if ((retCode == 0) && (Logic::_scriptVars[SCREEN] != 53) && _systemVars.wantFade && (!_systemVars.engineQuit)) {
_screen->fadeDownPalette();
+ int32 relDelay = (int32)_system->getMillis();
while (_screen->stillFading()) {
- int32 relDelay = (int32)_system->getMillis() + (1000 / FRAME_RATE);
+ relDelay += (1000 / FRAME_RATE);
_screen->updateScreen();
- relDelay -= (int32)_system->getMillis();
- relDelay = (relDelay > 0) ? relDelay : 0;
-
- delay(relDelay);
+ delay(relDelay - (int32)_system->getMillis());
}
}
@@ -1284,17 +410,15 @@ uint8 SwordEngine::mainLoop(void) {
return retCode;
}
-void SwordEngine::delay(uint amount) { //copied and mutilated from sky.cpp
+void SwordEngine::delay(int32 amount) { //copied and mutilated from sky.cpp
OSystem::Event event;
-
uint32 start = _system->getMillis();
do {
while (_system->pollEvent(event)) {
switch (event.type) {
case OSystem::EVENT_KEYDOWN:
-
// Make sure backspace works right (this fixes a small issue on OS X)
if (event.kbd.keycode == 8)
_keyPressed = 8;
@@ -1332,10 +456,8 @@ void SwordEngine::delay(uint amount) { //copied and mutilated from sky.cpp
break;
}
}
-
if (amount > 0)
_system->delayMillis(10);
-
} while (_system->getMillis() < start + amount);
}