Files
scummvm/engines/startrek/rooms/trial4.cpp
T
2019-06-11 01:28:12 +03:00

188 lines
6.0 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#include "startrek/room.h"
#define OBJECT_VLICT 8
#define OBJECT_GUARD 9
#define OBJECT_QUETZECOATL 10
namespace StarTrek {
extern const RoomAction trial4ActionList[] = {
{ {ACTION_TICK, 1, 0, 0}, &Room::trial4Tick1 },
{ {ACTION_TICK, 60, 0, 0}, &Room::trial4Tick60 },
};
extern const int trial4NumActions = ARRAYSIZE(trial4ActionList);
void Room::trial4Tick1() {
playVoc("TRI4LOOP");
loadActorAnim2(OBJECT_VLICT, "vlict1", 0x9f, 0x48);
loadActorAnim2(OBJECT_GUARD, "kgstnd", 0xdc, 0x6a);
loadActorAnim2(OBJECT_QUETZECOATL, "qstand", 0x10e, 0xaa);
playMidiMusicTracks(MIDITRACK_32, -1);
}
void Room::trial4Tick60() {
showText(TX_SPEAKER_VLICT, TX_TRI4_061);
const TextRef choices[] = {
TX_SPEAKER_KIRK,
TX_TRI4_022, TX_TRI4_039, TX_TRI4_032,
TX_BLANK
};
int choice = showMultipleTexts(choices);
if (choice == 0) { // "You were trying to kill us"
showText(TX_SPEAKER_VLICT, TX_TRI4_064);
const TextRef choices2[] = {
TX_SPEAKER_KIRK,
TX_TRI4_033, TX_TRI4_009, TX_TRI4_002,
TX_BLANK
};
showMultipleTexts(choices2); // choice doesn't matter
showText(TX_SPEAKER_VLICT, TX_TRI4_062);
showText(TX_SPEAKER_KIRK, TX_TRI4_014);
showText(TX_SPEAKER_VLICT, TX_TRI4_066);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_043);
const TextRef choices3[] = {
TX_SPEAKER_KIRK,
TX_TRI4_029, TX_TRI4_020, TX_TRI4_030,
TX_BLANK
};
choice = showMultipleTexts(choices3);
if (choice == 0) { // "Then you have my deepest respect"
// Nothing more
} else if (choice == 1) { // "Make it a painless death"
showText(TX_SPEAKER_VLICT, TX_TRI4_063);
} else if (choice == 2) { // "I hope you chose the right time"
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_040);
}
} else if (choice == 1) { // "Use of guile is honorable?"
showText(TX_SPEAKER_VLICT, TX_TRI4_060);
showText(TX_SPEAKER_KIRK, TX_TRI4_013);
showText(TX_SPEAKER_VLICT, TX_TRI4_072);
showText(TX_SPEAKER_KIRK, TX_TRI4_015);
showText(TX_SPEAKER_VLICT, TX_TRI4_071);
showText(TX_SPEAKER_KIRK, TX_TRI4_005);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_052);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_041);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_051);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_053);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_050);
showText(TX_SPEAKER_VLICT, TX_TRI4_070);
const TextRef choices2[] = {
TX_SPEAKER_KIRK,
TX_TRI4_019, TX_TRI4_025, TX_TRI4_008,
TX_BLANK
};
choice = showMultipleTexts(choices2);
if (choice == 1) { // Threatened Vlict
showText(TX_SPEAKER_VLICT, TX_TRI4_069);
showText(TX_SPEAKER_KIRK, TX_TRI4_004);
} // else, nothing more
} else if (choice == 2) { // "You didn't say I couldn't use my ship"
showText(TX_SPEAKER_VLICT, TX_TRI4_058);
const TextRef choices2[] = {
TX_SPEAKER_KIRK,
TX_TRI4_027, TX_TRI4_034, TX_TRI4_018,
TX_BLANK
};
choice = showMultipleTexts(choices2);
if (choice == 0) { // "Let's stop playing games"
showText(TX_SPEAKER_VLICT, TX_TRI4_075);
showText(TX_SPEAKER_KIRK, TX_TRI4_017);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_042);
showText(TX_SPEAKER_VLICT, TX_TRI4_054);
const TextRef choices3[] = {
TX_SPEAKER_KIRK,
TX_TRI4_028, TX_TRI4_021, TX_TRI4_031,
TX_BLANK
};
choice = showMultipleTexts(choices3);
if (choice == 0 || choice == 1) {
showText(TX_SPEAKER_VLICT, TX_TRI4_068);
showText(TX_SPEAKER_MCCOY, TX_TRI4_036);
} else if (choice == 2) {
showText(TX_SPEAKER_VLICT, TX_TRI4_056);
showText(TX_SPEAKER_KIRK, TX_TRI4_001);
}
} else if (choice == 1) { // "You lost, release Quetzecoatl"
showText(TX_SPEAKER_VLICT, TX_TRI4_076);
showText(TX_SPEAKER_MCCOY, TX_TRI4_037);
showText(TX_SPEAKER_VLICT, TX_TRI4_073);
showText(TX_SPEAKER_KIRK, TX_TRI4_011);
showText(TX_SPEAKER_VLICT, TX_TRI4_059);
} else if (choice == 2) { // "Nature beat me to it"
showText(TX_SPEAKER_VLICT, TX_TRI4_065);
showText(TX_SPEAKER_KIRK, TX_TRI4_016);
showText(TX_SPEAKER_VLICT, TX_TRI4_074);
const TextRef choices3[] = {
TX_SPEAKER_KIRK,
TX_TRI4_026, TX_TRI4_024, TX_TRI4_023,
TX_BLANK
};
choice = showMultipleTexts(choices3);
if (choice == 0) { // "The empire will learn you betrayed them"
showText(TX_SPEAKER_VLICT, TX_TRI4_057);
showText(TX_SPEAKER_SPOCK, TX_TRI4_038);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_044);
showText(TX_SPEAKER_KIRK, TX_TRI4_006);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_048);
} else if (choice == 1) { // "You didn't give him a fair trial"
showText(TX_SPEAKER_VLICT, TX_TRI4_055);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_045);
showText(TX_SPEAKER_KIRK, TX_TRI4_003);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_047);
showText(TX_SPEAKER_KIRK, TX_TRI4_010);
} else if (choice == 2) { // "How can a liar like you say 'honor'"
showText(TX_SPEAKER_VLICT, TX_TRI4_067);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_046);
showText(TX_SPEAKER_KIRK, TX_TRI4_007);
showText(TX_SPEAKER_QUETZECOATL, TX_TRI4_049);
}
}
}
showText(TX_SPEAKER_KIRK, TX_TRI4_012);
_awayMission->trial.missionEndMethod = 2;
endMission(_awayMission->trial.missionScore, _awayMission->trial.field2b, 2);
}
}