TSAGE: Bugfixes and renaming for R2R teleport outside

This commit is contained in:
Paul Gilbert 2013-09-27 20:05:48 -04:00
parent 7990300c96
commit 789c8bbfdb
3 changed files with 68 additions and 65 deletions

View File

@ -4238,7 +4238,7 @@ Scene3600::Scene3600() {
_field254A = 0;
_field254C = 0;
_field254E = 0;
_field2550 = false;
_ghoulTeleported = false;
}
void Scene3600::synchronize(Serializer &s) {
SceneExt::synchronize(s);
@ -4247,7 +4247,7 @@ void Scene3600::synchronize(Serializer &s) {
s.syncAsSint16LE(_field254A);
s.syncAsSint16LE(_field254C);
s.syncAsSint16LE(_field254E);
s.syncAsSint16LE(_field2550);
s.syncAsSint16LE(_ghoulTeleported);
}
Scene3600::Action3600::Action3600() {
@ -4277,8 +4277,8 @@ void Scene3600::Action3600::signal() {
R2_GLOBALS._sound2.play(330, NULL, 0);
R2_GLOBALS._sound2.fade(127, 5, 10, false, NULL);
}
setDelay(1);
warning("TODO: Palette fader using parameter 2 = 256");
R2_GLOBALS._scenePalette.fade((const byte *)&scene->_palette1._palette, true, _field20);
if (_field20 > 0)
_field20 -= 2;
@ -4595,7 +4595,7 @@ void Scene3600::postInit(SceneObjectList *OwnerList) {
_field254E = 0;
}
_field254E = 0;
_field2550 = R2_GLOBALS.getFlag(71);
_ghoulTeleported = R2_GLOBALS.getFlag(71);
R2_GLOBALS._sound1.play(326);
_item1.setDetails(Rect(0, 0, 480, 200), 3600, 0, -1, -1, 1, NULL);
@ -4909,10 +4909,10 @@ void Scene3600::dispatch() {
_actor4.setAction(&_sequenceManager1, this, 3613, &_actor4, NULL);
}
if ((_protector.getRegionIndex() == 200) && (_action1._field1E != 0) && (_field254E == 0)) {
if ((_protector.getRegionIndex() == 200) && (_action1._field1E != 0) && !_ghoulTeleported) {
R2_GLOBALS._sound2.fadeOut2(NULL);
_sceneMode = 3620;
_field2550 = 1;
_ghoulTeleported = true;
R2_GLOBALS._player.disableControl();
if (R2_GLOBALS._player._mover)
@ -4937,8 +4937,9 @@ void Scene3600::dispatch() {
void Scene3700::postInit(SceneObjectList *OwnerList) {
loadScene(3700);
R2_GLOBALS._uiElements._active = false;
SceneExt::postInit();
R2_GLOBALS._uiElements._active = false;
R2_GLOBALS._interfaceY = SCREEN_HEIGHT;
_stripManager.setColors(60, 255);
_stripManager.setFontNumber(3);
@ -4946,30 +4947,31 @@ void Scene3700::postInit(SceneObjectList *OwnerList) {
_stripManager.addSpeaker(&_seekerSpeaker);
_stripManager.addSpeaker(&_mirandaSpeaker);
_actor1.postInit();
_actor1._moveDiff = Common::Point(3, 2);
_quinn.postInit();
_quinn._moveDiff = Common::Point(3, 2);
_actor2.postInit();
_actor2._numFrames = 7;
_actor2._moveDiff = Common::Point(5, 3);
_actor2.hide();
_seeker.postInit();
_seeker._numFrames = 7;
_seeker._moveDiff = Common::Point(5, 3);
_seeker.hide();
_actor3.postInit();
_actor3._moveDiff = Common::Point(3, 2);
_actor3.hide();
_miranda.postInit();
_miranda._moveDiff = Common::Point(3, 2);
_miranda.hide();
_actor4.postInit();
_actor4._numFrames = 7;
_actor4._moveDiff = Common::Point(5, 3);
_actor4.hide();
_webbster.postInit();
_webbster._numFrames = 7;
_webbster._moveDiff = Common::Point(5, 3);
_webbster.hide();
_actor5.postInit();
R2_GLOBALS._player.postInit();
R2_GLOBALS._player.disableControl();
R2_GLOBALS._sound1.play(332);
_sceneMode = 3700;
setAction(&_sequenceManager, this, 3700, &_actor1, &_actor2, &_actor3, &_actor4, &_actor5, NULL);
setAction(&_sequenceManager, this, 3700, &_quinn, &_seeker, &_miranda,
&_webbster, &_actor5, NULL);
}
void Scene3700::remove() {
@ -4984,11 +4986,11 @@ void Scene3700::signal() {
case 3329:
warning("STUB: sub_1D227()");
_sceneMode = 3701;
setAction(&_sequenceManager, this, 3701, &_actor2, &_actor3, &_actor4, NULL);
setAction(&_sequenceManager, this, 3701, &_seeker, &_miranda, &_webbster, NULL);
break;
case 3700:
_actor1.setup(10, 6, 1);
_actor2.setup(20, 5, 1);
_quinn.setup(10, 6, 1);
_seeker.setup(20, 5, 1);
if (R2_GLOBALS.getFlag(71)) {
_sceneMode = 3329;
_stripManager.start(3329, this);

View File

@ -743,7 +743,7 @@ public:
int _field254A;
int _field254C;
int _field254E;
bool _field2550;
bool _ghoulTeleported;
Scene3600();
virtual void postInit(SceneObjectList *OwnerList = NULL);
@ -759,10 +759,10 @@ public:
SpeakerQuinn3700 _quinnSpeaker;
SpeakerSeeker3700 _seekerSpeaker;
SpeakerMiranda3700 _mirandaSpeaker;
SceneActor _actor1;
SceneActor _actor2;
SceneActor _actor3;
SceneActor _actor4;
SceneActor _quinn;
SceneActor _seeker;
SceneActor _miranda;
SceneActor _webbster;
SceneActor _actor5;
SequenceManager _sequenceManager;

View File

@ -866,7 +866,7 @@ void SpeakerMiranda3700::proc15() {
int v = _speakerMode;
if (!_object2) {
_object2 = &scene->_actor3;
_object2 = &scene->_miranda;
_object2->hide();
_object1.postInit();
_object1.setPosition(_object2->_position);
@ -886,25 +886,25 @@ void SpeakerMiranda3700::proc15() {
break;
case 1:
((SceneItem *)_action)->_sceneRegionId = 0;
scene->_actor1.setup(10, 6, 1);
scene->_actor2.setup(20, 5, 1);
scene->_quinn.setup(10, 6, 1);
scene->_seeker.setup(20, 5, 1);
_object2->setup(30, 1, 1);
scene->_actor4.setup(40, 1, 1);
scene->_webbster.setup(40, 1, 1);
_object1.setup(4050, 5, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
case 2:
((SceneItem *)_action)->_sceneRegionId = 0;
scene->_actor3.setup(30, 8, 1);
scene->_miranda.setup(30, 8, 1);
_object1.setup(4052, 3, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
case 3:
((SceneItem *)_action)->_sceneRegionId = 0;
scene->_actor2.setup(20, 1, 1);
scene->_actor3.setup(30, 1, 1);
scene->_seeker.setup(20, 1, 1);
scene->_miranda.setup(30, 1, 1);
_object1.setup(4051, 7, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
default:
signal();
@ -1757,14 +1757,14 @@ void SpeakerQuinn3700::setText(const Common::String &msg) {
switch (_speakerMode) {
case 2:
scene->_actor3.setup(30, 1, 1);
scene->_miranda.setup(30, 1, 1);
R2_GLOBALS._sound2.play(44);
break;
case 3:
scene->_actor3.setup(30, 1, 1);
scene->_miranda.setup(30, 1, 1);
break;
default:
scene->_actor3.setup(30, 7, 1);
scene->_miranda.setup(30, 7, 1);
break;
}
VisualSpeaker::setText(msg);
@ -1776,7 +1776,7 @@ void SpeakerQuinn3700::proc15() {
int v = _speakerMode;
if (!_object2) {
_object2 = &scene->_actor1;
_object2 = &scene->_quinn;
_object2->hide();
_object1.postInit();
_object1.setPosition(_object2->_position);
@ -1797,24 +1797,24 @@ void SpeakerQuinn3700::proc15() {
case 1:
((SceneItem *)_action)->_sceneRegionId = 0;
R2_GLOBALS._sound2.stop();
scene->_actor1.setup(10, 4, 1);
scene->_actor3.setup(30, 7, 1);
scene->_quinn.setup(10, 4, 1);
scene->_miranda.setup(30, 7, 1);
_object1.setup(3701, 1, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
case 2:
((SceneItem *)_action)->_sceneRegionId = 0;
scene->_actor2.setup(20, 1, 1);
scene->_actor3.setup(30, 1, 1);
_object1.setup(3701, 2, 1);
_object1.animate(ANIM_MODE_5, NULL);
scene->_seeker.setup(20, 1, 1);
scene->_miranda.setup(30, 1, 1);
_object1.setup(3702, 1, 1);
_object1.animate(ANIM_MODE_5, this);
break;
case 3:
((SceneItem *)_action)->_sceneRegionId = 0;
scene->_actor1.setup(10, 2, 1);
scene->_actor3.setup(30, 1, 1);
scene->_quinn.setup(10, 2, 1);
scene->_miranda.setup(30, 1, 1);
_object1.setup(4011, 1, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
default:
signal();
@ -2467,10 +2467,11 @@ void SpeakerSeeker3700::setText(const Common::String &msg) {
if (_speakerMode == 1) {
R2_GLOBALS._sound2.play(44);
scene->_actor3.setup(30, 8, 1);
scene->_miranda.setup(30, 8, 1);
} else {
scene->_actor3.setup(30, 2, 1);
scene->_miranda.setup(30, 2, 1);
}
VisualSpeaker::setText(msg);
}
@ -2480,7 +2481,7 @@ void SpeakerSeeker3700::proc15() {
int v = _speakerMode;
if (!_object2) {
_object2 = &scene->_actor2;
_object2 = &scene->_seeker;
_object2->hide();
_object1.postInit();
_object1.setPosition(_object2->_position);
@ -2501,19 +2502,19 @@ void SpeakerSeeker3700::proc15() {
case 1:
((SceneItem *)_action)->_sceneRegionId = 0;
R2_GLOBALS._sound2.stop();
scene->_actor1.setup(10, 8, 1);
scene->_actor2.setup(20, 7, 1);
scene->_actor3.setup(30, 8, 1);
scene->_quinn.setup(10, 8, 1);
scene->_seeker.setup(20, 7, 1);
scene->_miranda.setup(30, 8, 1);
_object1.setup(3701, 3, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
case 2:
((SceneItem *)_action)->_sceneRegionId = 0;
scene->_actor1.setup(10, 2, 1);
scene->_actor2.setup(20, 1, 1);
scene->_actor3.setup(30, 1, 1);
scene->_quinn.setup(10, 2, 1);
scene->_seeker.setup(20, 1, 1);
scene->_miranda.setup(30, 1, 1);
_object1.setup(4031, 1, 1);
_object1.animate(ANIM_MODE_5, NULL);
_object1.animate(ANIM_MODE_5, this);
break;
default:
signal();