BLADERUNNER: Added Zuben actor
Fixed animation position update Added goal & anim commands to console
This commit is contained in:
parent
225cad379f
commit
e232f13f5d
26 changed files with 1457 additions and 118 deletions
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1618,7 +1618,7 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
|
|||
_animationState = 27;
|
||||
_animationFrame = 0;
|
||||
break;
|
||||
case 52:
|
||||
case kAnimationModeFeeding:
|
||||
_animationState = 55;
|
||||
_animationFrame = 0;
|
||||
break;
|
||||
|
|
1186
engines/bladerunner/script/ai/zuben.cpp
Normal file
1186
engines/bladerunner/script/ai/zuben.cpp
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue