BLADERUNNER: Added Zuben actor

Fixed animation position update
Added goal & anim commands to console
This commit is contained in:
Peter Kohaut 2018-03-06 00:07:42 +01:00
parent 225cad379f
commit e232f13f5d
26 changed files with 1457 additions and 118 deletions

View file

@ -630,8 +630,10 @@ bool Actor::tick(bool forceDraw, Common::Rect *screenRect) {
float originalY = _position.y;
float originalZ = _position.z;
_position.x = _position.x + positionChange.x * cosx - positionChange.y * sinx;
_position.z = _position.z + positionChange.x * sinx + positionChange.y * cosx;
// Yes, Z & Y are switched between world space and model space. X is also negated for some unknown reason (wrong dirertion for angles?)
_position.x = _position.x - positionChange.x * cosx - positionChange.y * sinx;
_position.z = _position.z - positionChange.x * sinx + positionChange.y * cosx;
_position.y = _position.y + positionChange.z;
if (_vm->_sceneObjects->existsOnXZ(_id + kSceneObjectOffsetActors, _position.x, _position.z, false, false) == 1 && !_isImmuneToObstacles) {

View file

@ -56,7 +56,7 @@ public:
ActorDialogueQueue(BladeRunnerEngine *vm);
~ActorDialogueQueue();
void add(int actorId, int speechId, int animationMode);
void add(int actorId, int sentenceId, int animationMode);
void addPause(int delay);
void flush(int a1, bool callScript);
void tick();

View file

@ -25,9 +25,11 @@
#include "bladerunner/actor.h"
#include "bladerunner/aud_stream.h"
#include "bladerunner/audio_mixer.h"
#include "bladerunner/audio_player.h"
#include "bladerunner/bladerunner.h"
#include "common/debug.h"
#include "common/str.h"
namespace BladeRunner {
@ -113,6 +115,12 @@ bool AudioSpeech::isPlaying() const {
return _isActive;
}
bool AudioSpeech::playSpeechLine(int actorId, int sentenceId, int volume, int a4, int priority) {
int balance = _vm->_actors[actorId]->soundBalance();
Common::String name = Common::String::format("%02d-%04d%s.AUD", actorId, sentenceId, _vm->_languageCode);
return _vm->_audioPlayer->playAud(name, _speechVolume * volume / 100, balance, balance, priority, kAudioPlayerOverrideVolume);
}
void AudioSpeech::setVolume(int volume) {
_speechVolume = volume;
}

View file

@ -48,6 +48,8 @@ public:
void stopSpeech();
bool isPlaying() const;
bool playSpeechLine(int actorId, int sentenceId, int volume, int a4, int priority);
void setVolume(int volume);
int getVolume() const;
void playSample();

View file

@ -1024,6 +1024,9 @@ void BladeRunnerEngine::handleKeyDown(Common::Event &event) {
}
void BladeRunnerEngine::handleMouseAction(int x, int y, bool mainButton, bool buttonDown) {
x = CLIP(x, 0, 639);
y = CLIP(y, 0, 479);
int timeNow = getTotalPlayTime();
if (buttonDown) {
@ -1548,7 +1551,7 @@ Common::SeekableReadStream *BladeRunnerEngine::getResourceStream(const Common::S
}
}
error("getResource: Resource %s not found", name.c_str());
warning("getResource: Resource %s not found", name.c_str());
return nullptr;
}

View file

@ -194,10 +194,10 @@ public:
int _walkingToItemId;
bool _isInsideScriptItem;
bool _walkingToEmpty;
int _walkingToEmptyX;
int _walkingToEmptyY;
int _walkingToEmptyX;
int _walkingToEmptyY;
bool _isInsideScriptEmpty;
int _walkingToActorId;
int _walkingToActorId;
bool _isInsideScriptActor;
int _actorUpdateCounter;

View file

@ -22,6 +22,7 @@
#include "bladerunner/debugger.h"
#include "bladerunner/actor.h"
#include "bladerunner/bladerunner.h"
#include "bladerunner/boundingbox.h"
#include "bladerunner/font.h"
@ -55,18 +56,82 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() {
_viewUI = false;
_viewZBuffer = false;
registerCmd("anim", WRAP_METHOD(Debugger, cmdAnimation));
registerCmd("goal", WRAP_METHOD(Debugger, cmdGoal));
registerCmd("draw", WRAP_METHOD(Debugger, cmdDraw));
registerCmd("scene", WRAP_METHOD(Debugger, cmdScene));
registerCmd("chapter", WRAP_METHOD(Debugger, cmdChapter));
registerCmd("flag", WRAP_METHOD(Debugger, cmdFlag));
registerCmd("var", WRAP_METHOD(Debugger, cmdVariable));
registerCmd("say", WRAP_METHOD(Debugger, cmdSay));
}
Debugger::~Debugger() {
}
bool Debugger::cmdAnimation(int argc, const char **argv) {
if (argc != 2 && argc != 3) {
debugPrintf("Get or set animation mode of the actor.\n");
debugPrintf("Usage: %s <actorId> [<animationMode>]\n", argv[0]);
return true;
}
int actorId = atoi(argv[1]);
Actor *actor = nullptr;
if (actorId >= 0 && actorId < (int)_vm->_gameInfo->getActorCount()) {
actor = _vm->_actors[actorId];
}
if (actor == nullptr) {
debugPrintf("Unknown actor %i\n", actorId);
return true;
}
if (argc == 3) {
int animationMode = atoi(argv[2]);
debugPrintf("actorAnimationMode(%i) = %i\n", actorId, animationMode);
actor->changeAnimationMode(animationMode);
return false;
}
debugPrintf("actorAnimationMode(%i) = %i\n", actorId, actor->getAnimationMode());
return true;
}
bool Debugger::cmdGoal(int argc, const char **argv) {
if (argc != 2 && argc != 3) {
debugPrintf("Get or set goal of the actor.\n");
debugPrintf("Usage: %s <actorId> [<goal>]\n", argv[0]);
return true;
}
int actorId = atoi(argv[1]);
Actor *actor = nullptr;
if (actorId >= 0 && actorId < (int)_vm->_gameInfo->getActorCount()) {
actor = _vm->_actors[actorId];
}
if (actor == nullptr) {
debugPrintf("Unknown actor %i\n", actorId);
return true;
}
if (argc == 3) {
int goal = atoi(argv[2]);
debugPrintf("actorGoal(%i) = %i\n", actorId, goal);
actor->setGoal(goal);
return false;
}
debugPrintf("actorGoal(%i) = %i\n", actorId, actor->getGoal());
return true;
}
bool Debugger::cmdDraw(int argc, const char **argv) {
if (argc != 2) {
debugPrintf("Enables debug rendering of scene objects, ui elements, zbuffer or disables debug rendering.\n");
debugPrintf("Usage: %s (obj | ui | zbuf | reset)\n", argv[0]);
return true;
}
@ -93,28 +158,9 @@ bool Debugger::cmdDraw(int argc, const char **argv) {
return true;
}
bool Debugger::cmdScene(int argc, const char **argv) {
if (argc != 1 && argc != 3) {
debugPrintf("Usage: %s [<set_id> <scene_id>]\n", argv[0]);
return true;
}
if (argc == 1) {
debugPrintf("set = %i\nscene = %i\n", _vm->_scene->getSetId(), _vm->_scene->getSceneId());
return true;
}
if (argc == 3) {
int setId = atoi(argv[1]);
int sceneId = atoi(argv[2]);
_vm->_settings->setNewSetAndScene(setId, sceneId);
}
return true;
}
bool Debugger::cmdChapter(int argc, const char **argv) {
if (argc != 2) {
debugPrintf("Changes chapter of the game without changing scene.\n");
debugPrintf("Usage: %s <chapter>\n", argv[0]);
return true;
}
@ -131,7 +177,8 @@ bool Debugger::cmdChapter(int argc, const char **argv) {
bool Debugger::cmdFlag(int argc, const char **argv) {
if (argc != 2 && argc != 3) {
debugPrintf("Usage: %s <id> [<new_value>]\n", argv[0]);
debugPrintf("Get or set game flag (boolean value).\n");
debugPrintf("Usage: %s <id> [<value>]\n", argv[0]);
return true;
}
@ -154,9 +201,52 @@ bool Debugger::cmdFlag(int argc, const char **argv) {
return true;
}
bool Debugger::cmdSay(int argc, const char **argv) {
if (argc != 3) {
debugPrintf("Actor will say specified line.\n");
debugPrintf("Usage: %s <actorId> <sentenceId>\n", argv[0]);
return true;
}
int actorId = atoi(argv[1]);
int sentenceId = atoi(argv[2]);
Actor *actor = nullptr;
if (actorId >= 0 && actorId < (int)_vm->_gameInfo->getActorCount()) {
actor = _vm->_actors[actorId];
}
if (actor == nullptr) {
debugPrintf("Unknown actor %i\n", actorId);
return true;
}
actor->speechPlay(sentenceId, true);
return false;
}
bool Debugger::cmdScene(int argc, const char **argv) {
if (argc != 1 && argc != 3) {
debugPrintf("Changes set and scene.\n");
debugPrintf("Usage: %s [<setId> <sceneId>]\n", argv[0]);
return true;
}
if (argc == 3) {
int setId = atoi(argv[1]);
int sceneId = atoi(argv[2]);
_vm->_settings->setNewSetAndScene(setId, sceneId);
return false;
}
debugPrintf("set = %i\nscene = %i\n", _vm->_scene->getSetId(), _vm->_scene->getSceneId());
return true;
}
bool Debugger::cmdVariable(int argc, const char **argv) {
if (argc != 2 && argc != 3) {
debugPrintf("Usage: %s <id> [<new_value>]\n", argv[0]);
debugPrintf("Get or set game variable (integer).\n");
debugPrintf("Usage: %s <id> [<value>]\n", argv[0]);
return true;
}

View file

@ -47,10 +47,13 @@ public:
Debugger(BladeRunnerEngine *vm);
~Debugger();
bool cmdDraw(int argc, const char **argv);
bool cmdScene(int argc, const char **argv);
bool cmdAnimation(int argc, const char **argv);
bool cmdGoal(int argc, const char **argv);
bool cmdChapter(int argc, const char **argv);
bool cmdDraw(int argc, const char **argv);
bool cmdFlag(int argc, const char **argv);
bool cmdSay(int argc, const char **argv);
bool cmdScene(int argc, const char **argv);
bool cmdVariable(int argc, const char **argv);
void drawBBox(Vector3 start, Vector3 end, View *view, Graphics::Surface *surface, int color);

View file

@ -330,7 +330,7 @@ enum Clues {
kClueMcCoyRetiredDektora = 224,
kClueMcCoyRetiredGordo = 225,
kClueMcCoyRetiredSadik = 226,
kClueMcCoyShotZubenintheback = 227,
kClueMcCoyShotZubenInTheBack = 227,
kClueMcCoyRetiredLutherLance = 228,
kClueMcCoyBetrayal = 229,
kClueMcCoyKilledRunciter2 = 230,
@ -563,6 +563,7 @@ enum AnimationModes {
kAnimationModeIdle = 0,
kAnimationModeWalk = 1,
kAnimationModeRun = 2,
kAnimationModeTalk = 3,
kAnimationModeCombatIdle = 4,
kAnimationModeCombatAim = 5,
kAnimationModeCombatShoot = 6,
@ -593,8 +594,8 @@ enum Scenes {
kSceneBB09 = 10,
kSceneBB10 = 11,
kSceneBB11 = 12,
kSceneCT01 = 13,
kSceneCT02 = 14,
kSceneCT01 = 13, // Chinatown - Howie Lee Restaurant
kSceneCT02 = 14, // Chinatown - Kitchen
kSceneCT03 = 15,
kSceneCT04 = 16,
kSceneCT05 = 17,
@ -724,6 +725,7 @@ enum Sets {
kSetCT02 = 27,
kSetCT05 = 28,
kSetCT06 = 29,
kSetCT07 = 30,
kSetCT09 = 31,
kSetCT10 = 32,
kSetCT11 = 33,

View file

@ -135,4 +135,36 @@ bool GameInfo::open(const Common::String &name) {
return !err;
}
const char *GameInfo::getSceneName(int i) const {
if (i < 0 || i >= (int)_sceneNamesCount) {
warning("GameInfo::getSceneName: unknown id \"%i\"", i);
return nullptr;
}
return _sceneNames[i];
}
const char *GameInfo::getSfxTrack(int i) const {
if (i < 0 || i >= (int)_sfxTrackCount) {
warning("GameInfo::getSfxTrack: unknown id \"%i\"", i);
return nullptr;
}
return _sfxTracks[i];
}
const char *GameInfo::getMusicTrack(int i) const {
if (i < 0 || i >= (int)_musicTrackCount) {
warning("GameInfo::getMusicTrack: unknown id \"%i\"", i);
return nullptr;
}
return _musicTracks[i];
}
const char *GameInfo::getOuttake(int i) const {
if (i < 0 || i >= (int)_outtakeCount) {
warning("GameInfo::getOuttake: unknown id \"%i\"", i);
return nullptr;
}
return _outtakes[i];
}
} // End of namespace BladeRunner

View file

@ -77,10 +77,10 @@ public:
uint32 getCoverWaypointCount() const { return _coverWaypointCount; }
uint32 getFleeWaypointCount() const { return _fleeWaypointCount; }
const char *getSceneName(int i) const { return _sceneNames[i]; }
const char *getSfxTrack(int i) const { return _sfxTracks[i]; }
const char *getMusicTrack(int i) const { return _musicTracks[i]; }
const char *getOuttake(int i) const { return _outtakes[i]; }
const char *getSceneName(int i) const;
const char *getSfxTrack(int i) const;
const char *getMusicTrack(int i) const;
const char *getOuttake(int i) const;
};
} // End of namespace BladeRunner

View file

@ -58,6 +58,7 @@ MODULE_OBJS = \
script/ai/mccoy.o \
script/ai/officer_leary.o \
script/ai/runciter.o \
script/ai/zuben.o \
script/scene_script.o \
script/scene/ar01.o \
script/scene/ar02.o \

View file

@ -55,7 +55,7 @@ Overlays::~Overlays() {
reset();
}
int Overlays::play(const Common::String &name, int loopId, int loopForever, int startNow, int a6) {
int Overlays::play(const Common::String &name, int loopId, bool loopForever, bool startNow, int a6) {
int id = mix_id(name);
int index = findById(id);
if (index < 0) {

View file

@ -57,7 +57,7 @@ public:
bool init();
~Overlays();
int play(const Common::String &name, int a3, int a4, int a5, int a6);
int play(const Common::String &name, int loopId, bool loopForever, bool startNow, int a6);
void remove(const Common::String &name);
void removeAll();
void tick();

View file

@ -24,90 +24,90 @@
namespace BladeRunner {
AIScriptGenericWalkerA::AIScriptGenericWalkerA(BladeRunnerEngine *vm) : AIScriptBase(vm) {
AIScriptTemplate::AIScriptTemplate(BladeRunnerEngine *vm) : AIScriptBase(vm) {
}
void AIScriptGenericWalkerA::Initialize() {
_animationStateNext = 0;
_animationNext = 0;
void AIScriptTemplate::Initialize() {
_animationFrame = 0;
_animationState = 0;
_animationStateNext = 0;
_animationNext = 0;
}
bool AIScriptGenericWalkerA::Update() {
bool AIScriptTemplate::Update() {
return false;
}
void AIScriptGenericWalkerA::TimerExpired(int timer) {
void AIScriptTemplate::TimerExpired(int timer) {
}
void AIScriptGenericWalkerA::CompletedMovementTrack() {
void AIScriptTemplate::CompletedMovementTrack() {
}
void AIScriptGenericWalkerA::ReceivedClue(int clueId, int fromActorId) {
void AIScriptTemplate::ReceivedClue(int clueId, int fromActorId) {
}
void AIScriptGenericWalkerA::ClickedByPlayer() {
void AIScriptTemplate::ClickedByPlayer() {
}
void AIScriptGenericWalkerA::EnteredScene(int sceneId) {
void AIScriptTemplate::EnteredScene(int sceneId) {
}
void AIScriptGenericWalkerA::OtherAgentEnteredThisScene(int otherActorId) {
void AIScriptTemplate::OtherAgentEnteredThisScene(int otherActorId) {
}
void AIScriptGenericWalkerA::OtherAgentExitedThisScene(int otherActorId) {
void AIScriptTemplate::OtherAgentExitedThisScene(int otherActorId) {
}
void AIScriptGenericWalkerA::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
void AIScriptTemplate::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
}
void AIScriptGenericWalkerA::ShotAtAndMissed() {
void AIScriptTemplate::ShotAtAndMissed() {
}
bool AIScriptGenericWalkerA::ShotAtAndHit() {
bool AIScriptTemplate::ShotAtAndHit() {
return false;
}
void AIScriptGenericWalkerA::Retired(int byActorId) {
void AIScriptTemplate::Retired(int byActorId) {
}
int AIScriptGenericWalkerA::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
int AIScriptTemplate::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
return 0;
}
bool AIScriptGenericWalkerA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptTemplate::GoalChanged(int currentGoalNumber, int newGoalNumber) {
return false;
}
bool AIScriptGenericWalkerA::UpdateAnimation(int *animation, int *frame) {
bool AIScriptTemplate::UpdateAnimation(int *animation, int *frame) {
*animation = 0;
*frame = _animationFrame;
return true;
}
bool AIScriptGenericWalkerA::ChangeAnimationMode(int mode) {
bool AIScriptTemplate::ChangeAnimationMode(int mode) {
return true;
}
void AIScriptGenericWalkerA::QueryAnimationState(int *animationState, int *animationFrame, int *animationStateNext, int *animationNext) {
void AIScriptTemplate::QueryAnimationState(int *animationState, int *animationFrame, int *animationStateNext, int *animationNext) {
*animationState = _animationState;
*animationFrame = _animationFrame;
*animationStateNext = _animationStateNext;
*animationNext = _animationNext;
}
void AIScriptGenericWalkerA::SetAnimationState(int animationState, int animationFrame, int animationStateNext, int animationNext) {
void AIScriptTemplate::SetAnimationState(int animationState, int animationFrame, int animationStateNext, int animationNext) {
_animationState = animationState;
_animationFrame = animationFrame;
_animationStateNext = animationStateNext;
_animationNext = animationNext;
}
bool AIScriptGenericWalkerA::ReachedMovementTrackWaypoint(int waypointId) {
bool AIScriptTemplate::ReachedMovementTrackWaypoint(int waypointId) {
return true;
}
void AIScriptGenericWalkerA::FledCombat() {}
void AIScriptTemplate::FledCombat() {}
} // End of namespace BladeRunner

View file

@ -1618,7 +1618,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
_animationState = 27;
_animationFrame = 0;
break;
case 52:
case kAnimationModeFeeding:
_animationState = 55;
_animationFrame = 0;
break;

File diff suppressed because it is too large Load diff

View file

@ -41,6 +41,7 @@ AIScripts::AIScripts(BladeRunnerEngine *vm, int actorCount) {
_AIScripts[kActorMcCoy] = new AIScriptMcCoy(_vm);
_AIScripts[kActorRunciter] = new AIScriptRunciter(_vm);
_AIScripts[kActorZuben] = new AIScriptZuben(_vm);
_AIScripts[kActorOfficerLeary] = new AIScriptOfficerLeary(_vm);
_AIScripts[kActorLeon] = new AIScriptLeon(_vm);
_AIScripts[kActorMaggie] = new AIScriptMaggie(_vm);

View file

@ -128,6 +128,16 @@ DECLARE_SCRIPT(Runciter)
int var_45CD88;
END_SCRIPT
DECLARE_SCRIPT(Zuben)
int _var_45D258;
int _var_45D25C;
int _animationFrameTarget2;
int _animationFrameDelta;
int _animationFrameTarget1;
void dialogue();
END_SCRIPT
DECLARE_SCRIPT(OfficerLeary)
int var_45D5B8;
int var_45D5BC;

View file

@ -127,7 +127,7 @@ struct ClueWeight {
static ClueWeight ClueWeightsForSteele[44] = {
{kClueMcCoyRetiredZuben, 100},
{kClueMcCoyShotZubenintheback, 100},
{kClueMcCoyShotZubenInTheBack, 100},
{kClueMcCoyRetiredLucy, 100},
{kClueMcCoyRetiredDektora, 100},
{kClueMcCoyRetiredSadik, 100},
@ -173,7 +173,7 @@ static ClueWeight ClueWeightsForSteele[44] = {
};
static ClueWeight ClueWeightsForGordo[28] = {
{kClueMcCoyShotZubenintheback, 70},
{kClueMcCoyShotZubenInTheBack, 70},
{kClueMcCoyIsAnnoying, 65},
{kClueMcCoyIsKind, 70},
{kClueMcCoyIsInsane, 95},
@ -204,7 +204,7 @@ static ClueWeight ClueWeightsForGordo[28] = {
};
static ClueWeight ClueWeightsForDektora[46] = {
{kClueMcCoyShotZubenintheback, 70},
{kClueMcCoyShotZubenInTheBack, 70},
{kClueMcCoyIsAnnoying, 45},
{kClueMcCoyIsKind, 70},
{kClueMcCoyIsInsane, 65},
@ -279,7 +279,7 @@ static ClueWeight ClueWeightsForGuzza[23] = {
};
static ClueWeight ClueWeightsForClovis[46] = {
{kClueMcCoyShotZubenintheback, 70},
{kClueMcCoyShotZubenInTheBack, 70},
{kClueMcCoyIsKind, 70},
{kClueMcCoyKilledRunciter1, 70},
{kClueMcCoysDescription, 70},
@ -328,7 +328,7 @@ static ClueWeight ClueWeightsForClovis[46] = {
};
static ClueWeight ClueWeightsForLucy[47] = {
{kClueMcCoyShotZubenintheback, 70},
{kClueMcCoyShotZubenInTheBack, 70},
{kClueMcCoyIsAnnoying, 45},
{kClueMcCoyIsKind, 70},
{kClueMcCoyIsInsane, 65},
@ -378,7 +378,7 @@ static ClueWeight ClueWeightsForLucy[47] = {
};
static ClueWeight ClueWeightsForIzoAndSadik[47] = {
{kClueMcCoyShotZubenintheback, 70},
{kClueMcCoyShotZubenInTheBack, 70},
{kClueMcCoyIsAnnoying, 45},
{kClueMcCoyIsKind, 70},
{kClueMcCoyIsInsane, 65},
@ -452,7 +452,7 @@ static ClueWeight ClueWeightsForCrazylegs[49] = {
{kClueDNALutherLance, 70},
{kClueDNAMarcus, 70},
{kCluePowerSource, 70},
{kClueMcCoyShotZubenintheback, 65},
{kClueMcCoyShotZubenInTheBack, 65},
{kClueMcCoyIsAnnoying, 65},
{kClueMcCoyIsInsane, 65},
{kClueMcCoysDescription, 65},
@ -518,7 +518,7 @@ static ClueWeight ClueWeightsForLuther[44] = {
{kClueGordoInterview3, 50},
{kClueEarlyQInterview, 45},
{kClueCrystalArrestedCrazylegs, 45},
{kClueMcCoyShotZubenintheback, 35},
{kClueMcCoyShotZubenInTheBack, 35},
{kClueMcCoyKilledRunciter1, 35},
{kClueMcCoyKilledRunciter2, 35},
{kClueEarlyAttemptedToSeduceLucy, 35},
@ -586,7 +586,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorTransient, kClueEarlyAttemptedToSeduceLucy, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorTransient, kClueHomelessManKid, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorTransient, kClueFlaskOfAbsinthe, 100, false, false, -1);
Actor_Clue_Add_To_Database(kActorLance, kClueMcCoyShotZubenintheback, 35, false, false, -1);
Actor_Clue_Add_To_Database(kActorLance, kClueMcCoyShotZubenInTheBack, 35, false, false, -1);
Actor_Clue_Add_To_Database(kActorLance, kClueMcCoyIsAnnoying, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorLance, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorLance, kClueMcCoyIsInsane, 55, false, false, -1);
@ -636,7 +636,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyIsKind, 35, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyIsInsane, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyRetiredZuben, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyKilledRunciter1, 40, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyLetZubenEscape, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorBulletBob, kClueMcCoyWarnedIzo, 55, false, false, -1);
@ -683,7 +683,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorRunciter, kClueMcCoyRetiredSadik, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorRunciter, kClueMcCoyRetiredLutherLance, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorRunciter, kClueEarlyAttemptedToSeduceLucy, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorInsectDealer, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorInsectDealer, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorInsectDealer, kClueMcCoyIsAnnoying, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorInsectDealer, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorInsectDealer, kClueMcCoyIsInsane, 55, false, false, -1);
@ -739,7 +739,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyIsInsane, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyRetiredZuben, 100, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyShotZubenintheback, 100, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyShotZubenInTheBack, 100, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueMcCoyWarnedIzo, 85, false, false, -1);
@ -764,7 +764,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueCrystalArrestedCrazylegs, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQ, kClueSightingMcCoyRuncitersShop, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueMcCoyKilledRunciter2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueMcCoyLetZubenEscape, 70, false, false, -1);
@ -789,7 +789,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorZuben, kCluePowerSource, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueCrystalArrestedCrazylegs, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorZuben, kClueSightingMcCoyRuncitersShop, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorHasan, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHasan, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHasan, kClueMcCoyIsAnnoying, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHasan, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorHasan, kClueMcCoyIsInsane, 55, false, false, -1);
@ -850,7 +850,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorMarcus, kClueCrazylegsInterview2, 60, false, false, -1);
Actor_Clue_Add_To_Database(kActorMarcus, kCluePowerSource, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorMarcus, kClueSightingMcCoyRuncitersShop, 60, false, false, -1);
Actor_Clue_Add_To_Database(kActorMia, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorMia, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorMia, kClueMcCoyIsAnnoying, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorMia, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorMia, kClueMcCoyIsInsane, 55, false, false, -1);
@ -889,7 +889,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueCrowdInterviewB, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kCluePaintTransfer, 25, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueMcCoyShotZubenintheback, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueMcCoyShotZubenInTheBack, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueMcCoyKilledRunciter2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueMcCoyLetZubenEscape, 70, false, false, -1);
@ -912,7 +912,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueRunciterConfession1, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerLeary, kClueRunciterConfession2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerGrayford, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerGrayford, kClueMcCoyShotZubenintheback, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerGrayford, kClueMcCoyShotZubenInTheBack, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerGrayford, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerGrayford, kClueMcCoyKilledRunciter2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorOfficerGrayford, kClueMcCoyLetZubenEscape, 70, false, false, -1);
@ -950,7 +950,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyIsInsane, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyRetiredZuben, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueMcCoyWarnedIzo, 85, false, false, -1);
@ -980,7 +980,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorBaker, kClueHollowayInterview, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueRunciterConfession1, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorBaker, kClueRunciterConfession2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorDeskClerk, kClueMcCoyShotZubenintheback, 45, false, false, -1);
Actor_Clue_Add_To_Database(kActorDeskClerk, kClueMcCoyShotZubenInTheBack, 45, false, false, -1);
Actor_Clue_Add_To_Database(kActorDeskClerk, kClueMcCoyIsAnnoying, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorDeskClerk, kClueMcCoyIsKind, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorDeskClerk, kClueMcCoyIsInsane, 65, false, false, -1);
@ -1041,7 +1041,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorHowieLee, kClueMcCoyRetiredGordo, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorHowieLee, kClueMcCoyRetiredZuben, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorHowieLee, kClueEarlyAttemptedToSeduceLucy, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorFishDealer, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorFishDealer, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorFishDealer, kClueMcCoyIsAnnoying, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorFishDealer, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorFishDealer, kClueMcCoyIsInsane, 55, false, false, -1);
@ -1089,7 +1089,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoysWeaponUsedonBob, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyRecoveredHoldensBadge, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyKilledRunciter2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueMcCoyLetZubenEscape, 70, false, false, -1);
@ -1112,7 +1112,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorKlein, kClueHollowayInterview, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueRunciterConfession1, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorKlein, kClueRunciterConfession2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kClueMcCoyIsAnnoying, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kClueMcCoyIsInsane, 55, false, false, -1);
@ -1146,7 +1146,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorMurray, kClueCrazylegsInterview2, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kCluePowerSource, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorMurray, kClueSightingMcCoyRuncitersShop, 60, false, false, -1);
Actor_Clue_Add_To_Database(kActorHawkersBarkeep, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHawkersBarkeep, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHawkersBarkeep, kClueMcCoyIsAnnoying, 60, false, false, -1);
Actor_Clue_Add_To_Database(kActorHawkersBarkeep, kClueMcCoyIsKind, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHawkersBarkeep, kClueMcCoyIsInsane, 55, false, false, -1);
@ -1199,7 +1199,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyIsInsane, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyRetiredZuben, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorHolloway, kClueMcCoyWarnedIzo, 85, false, false, -1);
@ -1244,7 +1244,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyRecoveredHoldensBadge, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyHelpedLucy, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyKilledRunciter2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorSergeantWalls, kClueMcCoyLetZubenEscape, 70, false, false, -1);
@ -1303,7 +1303,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyIsInsane, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyRetiredZuben, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorPhotographer, kClueMcCoyWarnedIzo, 85, false, false, -1);
@ -1338,7 +1338,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyIsKind, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyIsInsane, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyRetiredZuben, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyShotZubenintheback, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyShotZubenInTheBack, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyKilledRunciter1, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyLetZubenEscape, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorEarlyQBartender, kClueMcCoyWarnedIzo, 50, false, false, -1);
@ -1372,7 +1372,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorTaffyPatron, kClueRunciterConfession2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffyPatron, kClueMcCoyIsABladeRunner, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorTyrell, kClueMcCoyIsKind, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorTyrell, kClueMcCoyShotZubenintheback, 40, false, false, -1);
Actor_Clue_Add_To_Database(kActorTyrell, kClueMcCoyShotZubenInTheBack, 40, false, false, -1);
Actor_Clue_Add_To_Database(kActorTyrell, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorTyrell, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorTyrell, kClueMcCoyWarnedIzo, 65, false, false, -1);
@ -1436,7 +1436,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorGaff, kClueCar, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyHelpedLucy, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyIsKind, 90, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyKilledRunciter1, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyKilledRunciter2, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorGaff, kClueMcCoyLetZubenEscape, 70, false, false, -1);
@ -1465,7 +1465,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyIsKind, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyIsInsane, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyRetiredZuben, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyShotZubenintheback, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyShotZubenInTheBack, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyKilledRunciter1, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyLetZubenEscape, 50, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueMcCoyWarnedIzo, 50, false, false, -1);
@ -1490,7 +1490,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorTaffy, kClueCrystalArrestedCrazylegs, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorTaffy, kClueSightingMcCoyRuncitersShop, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueMcCoyRetiredZuben, 60, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueMcCoyShotZubenintheback, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueMcCoyShotZubenInTheBack, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueMcCoyIsAnnoying, 45, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueMcCoyIsInsane, 65, false, false, -1);
@ -1535,7 +1535,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorSebastian, kClueCrystalArrestedCrazylegs, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorSebastian, kClueSightingMcCoyRuncitersShop, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorRachael, kClueMcCoyIsKind, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorRachael, kClueMcCoyShotZubenintheback, 40, false, false, -1);
Actor_Clue_Add_To_Database(kActorRachael, kClueMcCoyShotZubenInTheBack, 40, false, false, -1);
Actor_Clue_Add_To_Database(kActorRachael, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorRachael, kClueMcCoyWarnedIzo, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorRachael, kClueMcCoyHelpedIzoIzoIsAReplicant, 65, false, false, -1);
@ -1559,7 +1559,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorGeneralDoll, kClueMcCoyIsInsane, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorGeneralDoll, kClueMcCoyIsStupid, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorGeneralDoll, kClueMcCoyIsABladeRunner, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorIsabella, kClueMcCoyShotZubenintheback, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorIsabella, kClueMcCoyShotZubenInTheBack, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorIsabella, kClueMcCoyIsAnnoying, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorIsabella, kClueMcCoyIsKind, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorIsabella, kClueMcCoyIsInsane, 55, false, false, -1);
@ -1598,7 +1598,7 @@ void InitScript::Init_Clues2() {
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyIsKind, 55, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyIsInsane, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyRetiredZuben, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyShotZubenintheback, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyShotZubenInTheBack, 70, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyKilledRunciter1, 40, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyLetZubenEscape, 65, false, false, -1);
Actor_Clue_Add_To_Database(kActorLeon, kClueMcCoyWarnedIzo, 65, false, false, -1);

View file

@ -125,7 +125,7 @@ bool SceneScriptCT01::ClickedOnActor(int actorId) {
Game_Flag_Set(26);
Actor_Set_Goal_Number(kActorHowieLee, 0);
} else if (!Game_Flag_Query(30) && Actor_Query_Friendliness_To_Other(kActorHowieLee, kActorMcCoy) >= 40) {
sub_40269C();
dialogueWithHowieLee();
Actor_Set_Goal_Number(kActorHowieLee, 0);
} else {
if (Game_Flag_Query(31)) {
@ -395,7 +395,7 @@ void SceneScriptCT01::PlayerWalkedIn() {
}
void SceneScriptCT01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
if (Game_Flag_Query(123)) {
Ambient_Sounds_Remove_Looping_Sound(55, true);
Ambient_Sounds_Remove_Looping_Sound(56, true);
@ -403,8 +403,8 @@ void SceneScriptCT01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Looping_Sounds(1);
}
Music_Stop(5);
if (!Game_Flag_Query(176) && Global_Variable_Query(kVariableChapter)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(1);
if (!Game_Flag_Query(176) && Global_Variable_Query(kVariableChapter) == 1) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(kOuttakeTowards3, true, -1);
}
@ -413,7 +413,7 @@ void SceneScriptCT01::PlayerWalkedOut() {
void SceneScriptCT01::DialogueQueueFlushed(int a1) {
}
void SceneScriptCT01::sub_40269C() {
void SceneScriptCT01::dialogueWithHowieLee() {
Dialogue_Menu_Clear_List();
if (Actor_Clue_Query(kActorMcCoy, kClueLucy)) {
DM_Add_To_List_Never_Repeat_Once_Selected(40, 4, 5, 6);

View file

@ -105,7 +105,7 @@ bool SceneScriptCT02::ClickedOn3DObject(const char *objectName, bool a2) {
return false;
}
void SceneScriptCT02::sub_401ACC() {
void SceneScriptCT02::dialogueWithZuben() {
Dialogue_Menu_Clear_List();
if (Actor_Clue_Query(kActorMcCoy, kClueLucy)) {
DM_Add_To_List_Never_Repeat_Once_Selected(270, 8, 5, 3);
@ -209,7 +209,7 @@ bool SceneScriptCT02::ClickedOnActor(int actorId) {
Actor_Says(kActorMcCoy, 375, 9);
Game_Flag_Set(59);
}
sub_401ACC();
dialogueWithZuben();
return true;
}
}

View file

@ -119,11 +119,11 @@ DECLARE_SCRIPT(BB51)
END_SCRIPT
DECLARE_SCRIPT(CT01)
void sub_40269C();
void dialogueWithHowieLee();
END_SCRIPT
DECLARE_SCRIPT(CT02)
void sub_401ACC();
void dialogueWithZuben();
END_SCRIPT
DECLARE_SCRIPT(CT03)

View file

@ -755,9 +755,8 @@ void ScriptBase::Sound_Play(int id, int volume, int panFrom, int panTo, int prio
_vm->_audioPlayer->playAud(name, volume, panFrom, panTo, priority);
}
void ScriptBase::Sound_Play_Speech_Line(int actorId, int speechId, int a3, int a4, int a5) {
//TODO
warning("Sound_Play_Speech_Line(%d, %d, %d, %d, %d)", actorId, speechId, a3, a4, a5);
void ScriptBase::Sound_Play_Speech_Line(int actorId, int sentenceId, int volume, int a4, int priority) {
_vm->_audioSpeech->playSpeechLine(actorId, sentenceId, volume, a4, priority);
}
void ScriptBase::Sound_Left_Footstep_Walk(int actorId) {
@ -835,7 +834,7 @@ bool ScriptBase::Music_Is_Playing() {
return _vm->_music->isPlaying();
}
void ScriptBase::Overlay_Play(const char *overlay, int loopId, int loopForever, int startNow, int a5) {
void ScriptBase::Overlay_Play(const char *overlay, int loopId, bool loopForever, bool startNow, int a5) {
_vm->_overlays->play(overlay, loopId, loopForever, startNow, a5);
}

View file

@ -153,7 +153,7 @@ protected:
int Global_Variable_Decrement(int, int);
int Random_Query(int min, int max);
void Sound_Play(int id, int volume, int panFrom, int panTo, int priority);
void Sound_Play_Speech_Line(int actorId, int speechId, int a3, int a4, int a5);
void Sound_Play_Speech_Line(int actorId, int sentenceId, int volume, int a4, int priority);
void Sound_Left_Footstep_Walk(int actorId);
void Sound_Right_Footstep_Walk(int actorId);
void Sound_Left_Footstep_Run(int actorId);
@ -166,7 +166,7 @@ protected:
void Music_Adjust(int volume, int pan, int delay);
void Music_Stop(int delay);
bool Music_Is_Playing();
void Overlay_Play(const char *overlay, int loopId, int loopForever, int startNow, int a5);
void Overlay_Play(const char *overlay, int loopId, bool loopForever, bool startNow, int a5);
void Overlay_Remove(const char *overlay);
void Scene_Loop_Set_Default(int loopId);
void Scene_Loop_Start_Special(int sceneLoopMode, int loopId, bool immediately);

View file

@ -246,13 +246,13 @@ void VQADecoder::readPacket(uint readFlags) {
IFFChunkHeader chd;
if (remain(_s) < 8) {
warning("remain: %d", remain(_s));
warning("VQADecoder::readPacket: remain: %d", remain(_s));
assert(remain(_s) < 8);
}
do {
if (!readIFFChunkHeader(_s, &chd)) {
warning("Error reading chunk header");
error("VQADecoder::readPacket: Error reading chunk header");
return;
}
@ -274,7 +274,7 @@ void VQADecoder::readPacket(uint readFlags) {
}
if (!rc) {
warning("Error handling chunk %s", strTag(chd.id));
warning("VQADecoder::readPacket: Error handling chunk %s", strTag(chd.id));
return;
}
} while (chd.id != kVQFR);
@ -282,7 +282,7 @@ void VQADecoder::readPacket(uint readFlags) {
void VQADecoder::readFrame(int frame, uint readFlags) {
if (frame < 0 || frame >= numFrames()) {
error("frame %d out of bounds, frame count is %d", frame, numFrames());
error("VQADecoder::readFrame: frame %d out of bounds, frame count is %d", frame, numFrames());
}
uint32 frameOffset = 2 * (_frameInfo[frame] & 0x0FFFFFFF);