[Scummvm-git-logs] scummvm master -> 0e691072bb352d8cfd16bd17874ca5befe3092f0
antoniou79
antoniou at cti.gr
Thu Aug 22 22:52:33 CEST 2019
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ea6ae69ac6 BLADERUNNER: Named animations for Klein and Hasan
927e5bf67b BLADERUNNER: Restore a banter quote for Sgt Walls
06a08d9c77 BLADERUNNER: Restore Hasan being at Animoid past Act 2
0e691072bb BLADERUNNER: Restore Animoid banter and purchases
Commit: ea6ae69ac6e2093b7c61cc3d21379be3d13c5af0
https://github.com/scummvm/scummvm/commit/ea6ae69ac6e2093b7c61cc3d21379be3d13c5af0
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2019-08-22T23:50:20+03:00
Commit Message:
BLADERUNNER: Named animations for Klein and Hasan
Changed paths:
engines/bladerunner/game_constants.h
engines/bladerunner/script/ai/hasan.cpp
engines/bladerunner/script/ai/klein.cpp
engines/bladerunner/script/ai/mccoy.cpp
engines/bladerunner/script/scene/bb11.cpp
engines/bladerunner/script/scene/ct02.cpp
engines/bladerunner/script/scene/ct06.cpp
engines/bladerunner/script/scene/hc01.cpp
engines/bladerunner/script/scene/nr01.cpp
engines/bladerunner/script/scene/rc01.cpp
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 0454666..b1f40a7 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1822,6 +1822,16 @@ enum GameModelAnimations {
// 671 - 681: Howie Lee animations
// 682 - 687: Fish Dealer animations
// 688 - 697: Dino Klein animations
+ kModelAnimationKleinWalking = 688,
+ kModelAnimationKleinStandingIdle = 689,
+ kModelAnimationKleinTalkScratchBackOfHead = 690,
+ kModelAnimationKleinWorkingOnInstruments = 691,
+ kModelAnimationKleinTalkSmallLeftHandMove = 692,
+ kModelAnimationKleinTalkRightHandTouchFace = 693,
+ kModelAnimationKleinTalkWideHandMotion = 694,
+ kModelAnimationKleinTalkSuggestOrAsk = 695,
+ kModelAnimationKleinTalkDismissive = 696,
+ kModelAnimationKleinTalkRaisingBothHands = 697,
// 698 - 704: Murray animations
// 705 - 715: Hawker's Barkeep animations
// 716 - 721: Holloway animations
@@ -1876,6 +1886,18 @@ enum GameModelAnimations {
// 908 - 917: Mutant 3 animations
// 918 - 919: Taffy Patron (Gordo's hostage) animations
// 920 - 930: Hasan animations
+ kModelAnimationHasanTalkWipeFaceLeftHand01 = 920, // UNUSED
+ kModelAnimationHasanIdleSlightMovement = 921,
+ kModelAnimationHasanTalkSuggest = 922,
+ kModelAnimationHasanTakingABiteSnakeMove = 923,
+ kModelAnimationHasanTalkPointingRightHand = 924, // UNUSED
+ kModelAnimationHasanTalkMovingBothHands = 925,
+ kModelAnimationHasanTalkLeftRightLeftGesture = 926,
+ kModelAnimationHasanTalkRaiseHandSnakeMove = 927,
+ kModelAnimationHasanTalkMovingBothHandsAndNod = 928,
+ kModelAnimationHasanTalkWipeFaceLeftHand02 = 929, // (almost) identical to 920 (same number of frames too)
+ kModelAnimationHasanTalkUpset = 930,
+ // 931 - 996: Item animations
kModelAnimationBadge = 931,
kModelAnimationBomb = 932,
kModelAnimationCandy = 933,
diff --git a/engines/bladerunner/script/ai/hasan.cpp b/engines/bladerunner/script/ai/hasan.cpp
index b2386a2..3f48cc1 100644
--- a/engines/bladerunner/script/ai/hasan.cpp
+++ b/engines/bladerunner/script/ai/hasan.cpp
@@ -126,15 +126,15 @@ bool AIScriptHasan::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
if (_var6 == 1) {
- *animation = 922;
+ *animation = kModelAnimationHasanTalkSuggest;
if (_var3) {
_var3--;
} else {
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(922)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkSuggest)) {
_animationFrame = 0;
_var6 = 0;
- *animation = 921;
+ *animation = kModelAnimationHasanIdleSlightMovement;
_var1 = Random_Query(6, 14);
_var2 = 2 * Random_Query(0, 1) - 1;
_var4 = Random_Query(40, 60);
@@ -144,15 +144,15 @@ bool AIScriptHasan::UpdateAnimation(int *animation, int *frame) {
}
}
} else if (_var6 == 2) {
- *animation = 923;
+ *animation = kModelAnimationHasanTakingABiteSnakeMove;
if (_var3) {
_var3--;
} else {
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(923)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTakingABiteSnakeMove)) {
_animationFrame = 0;
_var6 = 0;
- *animation = 921;
+ *animation = kModelAnimationHasanIdleSlightMovement;
_var1 = Random_Query(6, 14);
_var2 = 2 * Random_Query(0, 1) - 1;
_var5 = Random_Query(40, 60);
@@ -165,16 +165,16 @@ bool AIScriptHasan::UpdateAnimation(int *animation, int *frame) {
}
}
} else if (_var6 == 0) {
- *animation = 921;
+ *animation = kModelAnimationHasanIdleSlightMovement;
if (_var3) {
_var3--;
} else {
_animationFrame += _var2;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(921)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanIdleSlightMovement)) {
_animationFrame = 0;
}
if (_animationFrame < 0) {
- _animationFrame = Slice_Animation_Query_Number_Of_Frames(921) - 1;
+ _animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanIdleSlightMovement) - 1;
}
if (!--_var1) {
_var2 = 2 * Random_Query(0, 1) - 1;
@@ -195,60 +195,60 @@ bool AIScriptHasan::UpdateAnimation(int *animation, int *frame) {
break;
case 1:
- *animation = 925;
+ *animation = kModelAnimationHasanTalkMovingBothHands;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(925)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkMovingBothHands)) {
_animationFrame = 0;
}
break;
case 2:
- *animation = 926;
+ *animation = kModelAnimationHasanTalkLeftRightLeftGesture;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(926)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkLeftRightLeftGesture)) {
_animationFrame = 0;
_animationState = 1;
- *animation = 925;
+ *animation = kModelAnimationHasanTalkMovingBothHands;
}
break;
case 3:
- *animation = 927;
+ *animation = kModelAnimationHasanTalkRaiseHandSnakeMove;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(927)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkRaiseHandSnakeMove)) {
_animationFrame = 0;
_animationState = 1;
- *animation = 925;
+ *animation = kModelAnimationHasanTalkMovingBothHands;
}
break;
case 4:
- *animation = 928;
+ *animation = kModelAnimationHasanTalkMovingBothHandsAndNod;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(928)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkMovingBothHandsAndNod)) {
_animationFrame = 0;
_animationState = 1;
- *animation = 925;
+ *animation = kModelAnimationHasanTalkMovingBothHands;
}
break;
case 5:
- *animation = 929;
+ *animation = kModelAnimationHasanTalkWipeFaceLeftHand02;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(929)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkWipeFaceLeftHand02)) {
_animationFrame = 0;
_animationState = 1;
- *animation = 925;
+ *animation = kModelAnimationHasanTalkMovingBothHands;
}
break;
case 6:
- *animation = 930;
+ *animation = kModelAnimationHasanTalkUpset;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(930)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationHasanTalkUpset)) {
_animationFrame = 0;
_animationState = 1;
- *animation = 925;
+ *animation = kModelAnimationHasanTalkMovingBothHands;
}
break;
diff --git a/engines/bladerunner/script/ai/klein.cpp b/engines/bladerunner/script/ai/klein.cpp
index fbb2cdb..44bd872 100644
--- a/engines/bladerunner/script/ai/klein.cpp
+++ b/engines/bladerunner/script/ai/klein.cpp
@@ -354,17 +354,17 @@ bool AIScriptKlein::UpdateAnimation(int *animation, int *frame) {
if (Actor_Query_Goal_Number(kActorKlein) == kGoalKleinMovingInLab01
|| Actor_Query_Goal_Number(kActorKlein) == kGoalKleinMovingInLab02
) {
- *animation = 691;
+ *animation = kModelAnimationKleinWorkingOnInstruments;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(691)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinWorkingOnInstruments)) {
_animationFrame = 0;
}
} else if (!Game_Flag_Query(kFlagKleinAnimation1)
&& Actor_Query_Goal_Number(kActorKlein) == kGoalKleinGotoLabSpeaker
) {
- *animation = 689;
+ *animation = kModelAnimationKleinStandingIdle;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(689)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinStandingIdle)) {
_animationFrame = 0;
if (Random_Query(1, 10) == 1) {
Game_Flag_Set(kFlagKleinAnimation1);
@@ -382,7 +382,7 @@ bool AIScriptKlein::UpdateAnimation(int *animation, int *frame) {
++_animationFrame;
}
- *animation = 690;
+ *animation = kModelAnimationKleinTalkScratchBackOfHead;
if (_animationFrame <= 9) {
if (Game_Flag_Query(kFlagKleinAnimation3)) {
Game_Flag_Reset(kFlagKleinAnimation3);
@@ -399,69 +399,69 @@ bool AIScriptKlein::UpdateAnimation(int *animation, int *frame) {
Game_Flag_Set(kFlagKleinAnimation3);
}
}
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(690)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkScratchBackOfHead)) {
_animationFrame = 0;
Game_Flag_Reset(kFlagKleinAnimation1);
}
}
break;
case 1:
- *animation = 688;
+ *animation = kModelAnimationKleinWalking;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(688)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinWalking)) {
_animationFrame = 0;
}
break;
case 2:
- *animation = 692;
+ *animation = kModelAnimationKleinTalkSmallLeftHandMove;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(692)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkSmallLeftHandMove)) {
_animationFrame = 0;
}
break;
case 3:
- *animation = 693;
+ *animation = kModelAnimationKleinTalkRightHandTouchFace;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(693)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkRightHandTouchFace)) {
_animationState = 2;
_animationFrame = 0;
- *animation = 692;
+ *animation = kModelAnimationKleinTalkSmallLeftHandMove;
}
break;
case 4:
- *animation = 694;
+ *animation = kModelAnimationKleinTalkWideHandMotion;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(694)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkWideHandMotion)) {
_animationState = 2;
_animationFrame = 0;
- *animation = 692;
+ *animation = kModelAnimationKleinTalkSmallLeftHandMove;
}
break;
case 5:
- *animation = 695;
+ *animation = kModelAnimationKleinTalkSuggestOrAsk;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(695)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkSuggestOrAsk)) {
_animationState = 2;
_animationFrame = 0;
- *animation = 692;
+ *animation = kModelAnimationKleinTalkSmallLeftHandMove;
}
break;
case 6:
- *animation = 696;
+ *animation = kModelAnimationKleinTalkDismissive;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(696)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkDismissive)) {
_animationState = 2;
_animationFrame = 0;
- *animation = 692;
+ *animation = kModelAnimationKleinTalkSmallLeftHandMove;
}
break;
case 7:
- *animation = 697;
+ *animation = kModelAnimationKleinTalkRaisingBothHands;
_animationFrame++;
- if (_animationFrame>= Slice_Animation_Query_Number_Of_Frames(697)) {
+ if (_animationFrame>= Slice_Animation_Query_Number_Of_Frames(kModelAnimationKleinTalkRaisingBothHands)) {
_animationState = 2;
_animationFrame = 0;
- *animation = 692;
+ *animation = kModelAnimationKleinTalkSmallLeftHandMove;
}
break;
case 8:
@@ -470,7 +470,7 @@ bool AIScriptKlein::UpdateAnimation(int *animation, int *frame) {
_animationState = _animationStateNext;
break;
default:
- *animation = 399;
+ *animation = 399; // TODO: A bug? This belongs to Zuben
break;
}
*frame = _animationFrame;
@@ -490,7 +490,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else if (_animationState == 0) {
_animationState = 8;
_animationStateNext = 1;
- _animationNext = 688;
+ _animationNext = kModelAnimationKleinWalking;
}
break;
case kAnimationModeTalk:
@@ -500,7 +500,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else {
_animationState = 8;
_animationStateNext = 2;
- _animationNext = 692;
+ _animationNext = kModelAnimationKleinTalkSmallLeftHandMove;
}
break;
case 12:
@@ -510,7 +510,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else {
_animationState = 8;
_animationStateNext = 3;
- _animationNext = 693;
+ _animationNext = kModelAnimationKleinTalkRightHandTouchFace;
}
break;
case 13:
@@ -520,7 +520,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else {
_animationState = 8;
_animationStateNext = 4;
- _animationNext = 694;
+ _animationNext = kModelAnimationKleinTalkWideHandMotion;
}
break;
case 14:
@@ -530,7 +530,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else {
_animationState = 8;
_animationStateNext = 5;
- _animationNext = 695;
+ _animationNext = kModelAnimationKleinTalkSuggestOrAsk;
}
break;
case 15:
@@ -540,7 +540,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else {
_animationState = 8;
_animationStateNext = 6;
- _animationNext = 696;
+ _animationNext = kModelAnimationKleinTalkDismissive;
}
break;
case 16:
@@ -550,7 +550,7 @@ bool AIScriptKlein::ChangeAnimationMode(int mode) {
} else {
_animationState = 8;
_animationStateNext = 7;
- _animationNext = 697;
+ _animationNext = kModelAnimationKleinTalkRaisingBothHands;
}
break;
}
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index 5ede8c6..390af53 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -424,7 +424,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
case kGoalMcCoyNR10Fall:
Player_Set_Combat_Mode(false);
- Preload(18);
+ Preload(kModelAnimationMcCoyFallsOnHisBack);
Set_Enter(kSetNR10, kSceneNR10);
Player_Loses_Control();
Actor_Force_Stop_Walking(kActorMcCoy);
diff --git a/engines/bladerunner/script/scene/bb11.cpp b/engines/bladerunner/script/scene/bb11.cpp
index 6ad4c65..381b03d 100644
--- a/engines/bladerunner/script/scene/bb11.cpp
+++ b/engines/bladerunner/script/scene/bb11.cpp
@@ -44,17 +44,17 @@ void SceneScriptBB11::InitializeScene() {
Ambient_Sounds_Add_Sound(kSfxTHNDER4, 5, 180, 50, 100, 0, 0, -101, -101, 0, 0);
if (Game_Flag_Query(kFlagBB11SadikFight)) {
- Preload(19);
+ Preload(kModelAnimationMcCoyIdle);
Preload(220);
Preload(227);
Preload(328);
Preload(343);
Preload(344);
- Preload(17);
- Preload(14);
+ Preload(kModelAnimationMcCoyGotHitRight);
+ Preload(kModelAnimationMcCoyRunning);
Preload(324);
Preload(323);
- Preload(18);
+ Preload(kModelAnimationMcCoyFallsOnHisBack);
Preload(345);
}
}
diff --git a/engines/bladerunner/script/scene/ct02.cpp b/engines/bladerunner/script/scene/ct02.cpp
index 07907d1..97efa51 100644
--- a/engines/bladerunner/script/scene/ct02.cpp
+++ b/engines/bladerunner/script/scene/ct02.cpp
@@ -96,10 +96,10 @@ void SceneScriptCT02::SceneLoaded() {
Unclickable_Object("COFFEJUG IN FOREGRO");
Unclickable_Object("BACK-DOOR");
if (!Game_Flag_Query(kFlagCT02PotTipped)) {
- Preload(0);
- Preload(3);
- Preload(3);
- Preload(28);
+ Preload(kModelAnimationMcCoyWithGunIdle);
+ Preload(kModelAnimationMcCoyWithGunWalking);
+ Preload(kModelAnimationMcCoyWithGunWalking); // A bug? Why is this preloaded twice?
+ Preload(kModelAnimationMcCoyDodgeAndDrawGun);
Preload(400);
Preload(419);
Preload(420);
diff --git a/engines/bladerunner/script/scene/ct06.cpp b/engines/bladerunner/script/scene/ct06.cpp
index 1aab6c5..963a53f 100644
--- a/engines/bladerunner/script/scene/ct06.cpp
+++ b/engines/bladerunner/script/scene/ct06.cpp
@@ -68,8 +68,8 @@ void SceneScriptCT06::SceneLoaded() {
Unobstacle_Object("CB BOX04", true);
Unclickable_Object("DOOR");
if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06HideAtFreeSlotA) {
- Preload(3);
- Preload(4);
+ Preload(kModelAnimationMcCoyWithGunWalking);
+ Preload(kModelAnimationMcCoyWithGunRunning);
Preload(389);
Preload(390);
Preload(398);
diff --git a/engines/bladerunner/script/scene/hc01.cpp b/engines/bladerunner/script/scene/hc01.cpp
index 5fa6721..7399346 100644
--- a/engines/bladerunner/script/scene/hc01.cpp
+++ b/engines/bladerunner/script/scene/hc01.cpp
@@ -74,7 +74,7 @@ void SceneScriptHC01::InitializeScene() {
void SceneScriptHC01::SceneLoaded() {
Obstacle_Object("PILLAR", true);
if (Game_Flag_Query(kFlagAR01toHC01)) {
- Preload(19);
+ Preload(kModelAnimationMcCoyIdle);
Preload(426);
Preload(430);
Preload(437);
diff --git a/engines/bladerunner/script/scene/nr01.cpp b/engines/bladerunner/script/scene/nr01.cpp
index 3a0b46d..08d62d7 100644
--- a/engines/bladerunner/script/scene/nr01.cpp
+++ b/engines/bladerunner/script/scene/nr01.cpp
@@ -37,7 +37,7 @@ void SceneScriptNR01::InitializeScene() {
} else if (Game_Flag_Query(kFlagNR01DektoraFall)) {
Setup_Scene_Information( -416.0f, 31.93f, -841.0f, 200);
Actor_Set_Invisible(kActorMcCoy, true);
- Preload(167);
+ Preload(kModelAnimationDektoraInFlamesEndFalling);
} else if (Game_Flag_Query(kFlagNR03toNR01)) {
Setup_Scene_Information( -416.0f, 31.93f, -841.0f, 200);
} else if (Game_Flag_Query(kFlagUG06toNR01)) {
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index 4c0f0b7..1c5ba9a 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -198,9 +198,9 @@ void SceneScriptRC01::SceneLoaded() {
}
if (!Game_Flag_Query(kFlagRC01PoliceDone)) {
- Preload(13);
- Preload(14);
- Preload(19);
+ Preload(kModelAnimationMcCoyWalking);
+ Preload(kModelAnimationMcCoyRunning);
+ Preload(kModelAnimationMcCoyIdle);
Preload(582);
Preload(589);
}
Commit: 927e5bf67bbf213f21e17448bc64223747f9eb58
https://github.com/scummvm/scummvm/commit/927e5bf67bbf213f21e17448bc64223747f9eb58
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2019-08-22T23:50:20+03:00
Commit Message:
BLADERUNNER: Restore a banter quote for Sgt Walls
Changed paths:
engines/bladerunner/script/scene/ps15.cpp
diff --git a/engines/bladerunner/script/scene/ps15.cpp b/engines/bladerunner/script/scene/ps15.cpp
index 6cdd961..d86f5cb 100644
--- a/engines/bladerunner/script/scene/ps15.cpp
+++ b/engines/bladerunner/script/scene/ps15.cpp
@@ -80,7 +80,18 @@ bool SceneScriptPS15::ClickedOnActor(int actorId) {
} else {
Actor_Face_Actor(kActorMcCoy, kActorSergeantWalls, true);
Actor_Says(kActorMcCoy, 8600, 15);
- Actor_Says(kActorSergeantWalls, 190, 12);
+ if (_vm->_cutContent) {
+ switch (Random_Query(1, 2)) {
+ case 1:
+ Actor_Says(kActorSergeantWalls, 190, 12);
+ break;
+ case 2:
+ Actor_Says(kActorSergeantWalls, 200, 12);
+ break;
+ }
+ } else {
+ Actor_Says(kActorSergeantWalls, 190, 12);
+ }
}
return true;
}
Commit: 06a08d9c775f305d78cd64c8db194a0c421ee415
https://github.com/scummvm/scummvm/commit/06a08d9c775f305d78cd64c8db194a0c421ee415
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2019-08-22T23:50:20+03:00
Commit Message:
BLADERUNNER: Restore Hasan being at Animoid past Act 2
This restores the trigger for the last dialogue about the fish scale
Changed paths:
engines/bladerunner/game_constants.h
engines/bladerunner/script/ai/hasan.cpp
engines/bladerunner/script/init_script.cpp
engines/bladerunner/script/scene/rc04.cpp
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index b1f40a7..a425efd 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -578,7 +578,7 @@ enum Flags {
kFlagPS05toPS06 = 136,
kFlagCT04HomelessTalk = 137,
kFlagPS07KleinInsulted = 138,
- // 139 is never used
+ kFlagMcCoyTalkedToBulletBobAboutHasan = 139, // Re-purposed. Original: 139 is never used
// 140 is never used
kFlagRC51Available = 141,
kFlagNotUsed142 = 142, // is never checked
@@ -2518,6 +2518,15 @@ enum GoalZuben {
kGoalZubenGone = 599
};
+enum GoalHasan {
+ kGoalHasanDefault = 0,
+ kGoalHasanIsAway = 300, // original final goal for Hasan
+ kGoalHasanIsWalkingAroundIsAtCT02 = 301, // new goal for restored content
+ kGoalHasanIsWalkingAroundStayAwayFromCT02 = 302, // new goal for restored content
+ kGoalHasanIsWalkingAroundStaysAtCT02 = 303, // new goal for restored content
+ kGoalHasanIsWalkingAroundIsAway = 304 // new goal for restored content
+};
+
enum GoalOfficerLeary {
kGoalOfficerLearyDefault = 0,
kGoalOfficerLearyRC01WalkToCrowd = 1,
diff --git a/engines/bladerunner/script/ai/hasan.cpp b/engines/bladerunner/script/ai/hasan.cpp
index 3f48cc1..696d440 100644
--- a/engines/bladerunner/script/ai/hasan.cpp
+++ b/engines/bladerunner/script/ai/hasan.cpp
@@ -48,15 +48,36 @@ void AIScriptHasan::Initialize() {
Actor_Put_In_Set(kActorHasan, kSetAR01_AR02);
Actor_Set_At_XYZ(kActorHasan, -214.0f, 0.0f, -1379.0f, 371);
- Actor_Set_Goal_Number(kActorHasan, 0);
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanDefault);
}
bool AIScriptHasan::Update() {
- if (Global_Variable_Query(kVariableChapter) != 3 || Actor_Query_Goal_Number(kActorHasan) >= 300)
+ if (_vm->_cutContent) {
+ if (Global_Variable_Query(kVariableChapter) == 1
+ && Actor_Query_Goal_Number(kActorHasan) != kGoalHasanIsAway)
+ {
+ // use this goal to put Hasan in a FreeSlot set for Act 1
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsAway);
+ return true;
+ } else if (Global_Variable_Query(kVariableChapter) == 2
+ && Actor_Query_Goal_Number(kActorHasan) != kGoalHasanDefault
+ ) {
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanDefault);
+ return true;
+ } else if (Global_Variable_Query(kVariableChapter) > 2
+ && Actor_Query_Goal_Number(kActorHasan) < kGoalHasanIsWalkingAroundIsAtCT02) {
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtCT02);
+ return true;
+ }
return false;
+ } else {
+ // original behavior results in Hasan going away when chapter 3 begins
+ if (Global_Variable_Query(kVariableChapter) != 3 || Actor_Query_Goal_Number(kActorHasan) >= kGoalHasanIsAway)
+ return false;
- Actor_Set_Goal_Number(kActorHasan, 300);
- return true;
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsAway);
+ return true;
+ }
}
void AIScriptHasan::TimerExpired(int timer) {
@@ -64,6 +85,51 @@ void AIScriptHasan::TimerExpired(int timer) {
}
void AIScriptHasan::CompletedMovementTrack() {
+ if (_vm->_cutContent) {
+ //
+ // *after Act 2* Hasan will be leaving Animoid Row for sometime
+ if (Global_Variable_Query(kVariableChapter) > 2) {
+ int maxHasanLeaveProb = 4;
+ // if Bullet Bob is dead or McCoy reprimanded Bob about Hasan,
+ // then Hasan is less likely to leave at Animoid Row, *after Act 2*
+ if (Game_Flag_Query(kFlagMcCoyTalkedToBulletBobAboutHasan)
+ || Actor_Query_Goal_Number(kGoalBulletBobDead)
+ || Actor_Query_Goal_Number(kGoalBulletBobGone)
+ ) {
+ maxHasanLeaveProb = 10;
+ }
+
+ if (Actor_Query_Goal_Number(kActorHasan) == kGoalHasanIsWalkingAroundIsAtCT02) {
+ if (Random_Query(1, maxHasanLeaveProb) == 1
+ && Player_Query_Current_Scene() != kSceneAR01
+ && Player_Query_Current_Scene() != kSceneAR02
+ ) {
+ // Hasan leaves Animoid Row
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAway);
+ return; // true;
+ } else {
+ // stay (change goal to a temp one to trigger GoalChanged() (so that we can reset the "track")
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundStaysAtCT02);
+ return; // true;
+ }
+ }
+
+ if (Actor_Query_Goal_Number(kActorHasan) == kGoalHasanIsWalkingAroundIsAway) {
+ if (Random_Query(1, 2) == 1
+ && Player_Query_Current_Scene() != kSceneAR01
+ && Player_Query_Current_Scene() != kSceneAR02
+ ) {
+ // Hasan returns tp Animoid Row
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtCT02);
+ return; // true;
+ } else {
+ // stay away (change goal to a temp one to trigger GoalChanged() (so that we can reset the "track")
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundStayAwayFromCT02);
+ return; // true;
+ }
+ }
+ }
+ }
//return false;
}
@@ -108,9 +174,40 @@ int AIScriptHasan::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueI
}
bool AIScriptHasan::GoalChanged(int currentGoalNumber, int newGoalNumber) {
- if (newGoalNumber == 300) {
- Actor_Put_In_Set(kActorHasan, kSetFreeSlotH);
- Actor_Set_At_Waypoint(kActorHasan, 40, 0);
+ if (_vm->_cutContent) {
+ switch (newGoalNumber) {
+ case kGoalHasanDefault:
+ Actor_Put_In_Set(kActorHasan, kSetAR01_AR02);
+ Actor_Set_At_XYZ(kActorHasan, -214.0f, 0.0f, -1379.0f, 371);
+ break;
+ case kGoalHasanIsAway:
+ Actor_Put_In_Set(kActorHasan, kSetFreeSlotH);
+ Actor_Set_At_Waypoint(kActorHasan, 40, 0); // kSetFreeSlotH
+ break;
+ case kGoalHasanIsWalkingAroundIsAtCT02:
+ AI_Movement_Track_Flush(kActorHasan);
+ AI_Movement_Track_Append(kActorHasan, 554, Random_Query(60, 180)); // kSetAR01_AR02
+ Actor_Face_Heading(kActorHasan, 371, false);
+ AI_Movement_Track_Repeat(kActorHasan);
+ break;
+ case kGoalHasanIsWalkingAroundIsAway:
+ AI_Movement_Track_Flush(kActorHasan);
+ AI_Movement_Track_Append(kActorHasan, 40, Random_Query(10, 40)); // kSetFreeSlotH
+ AI_Movement_Track_Repeat(kActorHasan);
+ break;
+ case kGoalHasanIsWalkingAroundStayAwayFromCT02:
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAway);
+ break;
+ case kGoalHasanIsWalkingAroundStaysAtCT02:
+ Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtCT02);
+ break;
+ }
+ } else {
+ // original behavior - Hasan leaves on Act 3
+ if (newGoalNumber == kGoalHasanIsAway) {
+ Actor_Put_In_Set(kActorHasan, kSetFreeSlotH);
+ Actor_Set_At_Waypoint(kActorHasan, 40, 0); // kSetFreeSlotH
+ }
}
return false;
}
diff --git a/engines/bladerunner/script/init_script.cpp b/engines/bladerunner/script/init_script.cpp
index 6332361..0b8afe1 100644
--- a/engines/bladerunner/script/init_script.cpp
+++ b/engines/bladerunner/script/init_script.cpp
@@ -2242,6 +2242,7 @@ void InitScript::Init_World_Waypoints() {
World_Waypoint_Set(551, kSetKP05_KP06, -737.31f, 0.0f, -145.05f);
// 552 - UNUSED
// 553 - kSetRC03 - Izo AI script
+ // 554 - kSetAR01_AR02 - Hasan AI script (new)
}
void InitScript::Init_SDB() {
diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp
index 774eca6..8efdaf4 100644
--- a/engines/bladerunner/script/scene/rc04.cpp
+++ b/engines/bladerunner/script/scene/rc04.cpp
@@ -209,6 +209,7 @@ void SceneScriptRC04::dialogueWithBulletBob() {
Actor_Says(kActorMcCoy, 5040, 16);
Actor_Says(kActorBulletBob, 550, 11);
Actor_Modify_Friendliness_To_Other(kActorBulletBob, kActorMcCoy, -6);
+ Game_Flag_Set(kFlagMcCoyTalkedToBulletBobAboutHasan);
break;
case 610: // GOGGLES
Commit: 0e691072bb352d8cfd16bd17874ca5befe3092f0
https://github.com/scummvm/scummvm/commit/0e691072bb352d8cfd16bd17874ca5befe3092f0
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2019-08-22T23:50:20+03:00
Commit Message:
BLADERUNNER: Restore Animoid banter and purchases
Changed paths:
engines/bladerunner/game_constants.h
engines/bladerunner/script/scene/ar01.cpp
engines/bladerunner/script/scene/ar02.cpp
engines/bladerunner/script/scene/rc04.cpp
engines/bladerunner/script/scene_script.h
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index a425efd..36c6ab6 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -685,7 +685,7 @@ enum Flags {
// 243 is never used
// 244 is never used
// 245 is never used
- // 246 is never used
+ kFlagWrongInvestigation = 246, // Re-purposed. Original: 246 is never used
kFlagArrivedFromSpinner1 = 247,
kFlagSpinnerAtCT01 = 248,
kFlagSpinnerAtRC01 = 249,
@@ -1186,7 +1186,9 @@ enum Variables {
kVariablePoliceMazePS13TargetCounter = 13,
kVariableMcCoyEvidenceMissed = 14,
// variable 15 has no use
- // variables 16 - 18 are not used
+ kVariableFishDealerBanterTalk = 16, // Re-purposed. Original: not used
+ kVariableInsectDealerBanterTalk = 17, // Re-purposed. Original: not used
+ kVariableHasanBanterTalk = 18, // Re-purposed. Original: not used
kVariableIzoShot = 19, // has no use
// variables 20 - 23 are not used
kVariableBobShot = 24, // has no use
diff --git a/engines/bladerunner/script/scene/ar01.cpp b/engines/bladerunner/script/scene/ar01.cpp
index 227ed73..edc18bb 100644
--- a/engines/bladerunner/script/scene/ar01.cpp
+++ b/engines/bladerunner/script/scene/ar01.cpp
@@ -182,9 +182,10 @@ bool SceneScriptAR01::ClickedOnActor(int actorId) {
Game_Flag_Set(kFlagAR01FishDealerTalk);
Actor_Set_Goal_Number(kActorFishDealer, 1);
} else {
- if ( Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1)
- && !Actor_Clue_Query(kActorMcCoy, kClueFishLadyInterview)
- ) {
+ if (Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1)
+ && !Actor_Clue_Query(kActorMcCoy, kClueFishLadyInterview)
+ && (!_vm->_cutContent || !Game_Flag_Query(kFlagWrongInvestigation))
+ ) {
Actor_Says(kActorMcCoy, 40, 11);
Actor_Says(kActorFishDealer, 120, 14);
Actor_Says(kActorMcCoy, 45, 17);
@@ -198,14 +199,50 @@ bool SceneScriptAR01::ClickedOnActor(int actorId) {
Actor_Clue_Acquire(kActorMcCoy, kClueFishLadyInterview, true, kActorFishDealer);
#endif // BLADERUNNER_ORIGINAL_BUGS
} else {
- if (Random_Query(1, 2) == 1) {
- Actor_Says(kActorMcCoy, 30, 17);
- Actor_Says(kActorFishDealer, 100, 14);
- Actor_Says(kActorFishDealer, 110, 14);
- Actor_Says(kActorMcCoy, 35, 13);
+ if (_vm->_cutContent) {
+ switch (Global_Variable_Query(kVariableFishDealerBanterTalk)) {
+ case 0:
+ Global_Variable_Increment(kVariableFishDealerBanterTalk, 1);
+ Actor_Says(kActorFishDealer, 230, 14);
+ Item_Pickup_Spin_Effect(kModelAnimationGoldfish, 88, 400); // TODO check co-ordinates
+ dialogueWithFishDealerBuyGoldfish();
+ break;
+ case 1:
+ Global_Variable_Increment(kVariableFishDealerBanterTalk, 1);
+ if (Player_Query_Agenda() == kPlayerAgendaSurly
+ || Actor_Query_Friendliness_To_Other(kActorFishDealer, kActorMcCoy) <= 45 ) {
+ Actor_Says(kActorMcCoy, 8600, 17); // You keeping busy, pal?
+ Actor_Says(kActorFishDealer, 180, 14); // I can't stand all day gabbing away. My fish require attention.
+ Actor_Says(kActorMcCoy, 8450, 14); // Does this badge mean anything to you?
+ Actor_Says(kActorFishDealer, 190, 14); // Ah! You think you get better info somewhere else? You welcome to try.
+ } else {
+ Actor_Says(kActorMcCoy, 8514, 11); // Got anything new to tell me?
+ Actor_Says(kActorFishDealer, 170, 14); // Afraid not. But been busy today. Maybe you ask me later.
+ }
+ break;
+
+ default:
+ if (Random_Query(1, 2) == 1) {
+ Actor_Says(kActorMcCoy, 30, 17);
+ Actor_Says(kActorFishDealer, 100, 14);
+ Actor_Says(kActorFishDealer, 110, 14);
+ Actor_Says(kActorMcCoy, 35, 13);
+ } else {
+ Actor_Says(kActorMcCoy, 30, 17);
+ Actor_Says(kActorFishDealer, 220, 14);
+ }
+ }
} else {
- Actor_Says(kActorMcCoy, 30, 17);
- Actor_Says(kActorFishDealer, 220, 14);
+ // original behavior
+ if (Random_Query(1, 2) == 1) {
+ Actor_Says(kActorMcCoy, 30, 17);
+ Actor_Says(kActorFishDealer, 100, 14);
+ Actor_Says(kActorFishDealer, 110, 14);
+ Actor_Says(kActorMcCoy, 35, 13);
+ } else {
+ Actor_Says(kActorMcCoy, 30, 17);
+ Actor_Says(kActorFishDealer, 220, 14);
+ }
}
}
Actor_Set_Goal_Number(kActorFishDealer, 1);
@@ -437,4 +474,37 @@ void SceneScriptAR01::PlayerWalkedOut() {
void SceneScriptAR01::DialogueQueueFlushed(int a1) {
}
+/**
+* This is only for cut content (purchasing the Goldfish)
+*/
+void SceneScriptAR01::dialogueWithFishDealerBuyGoldfish() {
+ Dialogue_Menu_Clear_List();
+
+ Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(530);
+ Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(540);
+
+ if (Global_Variable_Query(kVariableChinyen) >= 75
+ || Query_Difficulty_Level() == kGameDifficultyEasy
+ ) {
+ DM_Add_To_List_Never_Repeat_Once_Selected(530, 7, 5, 3); // BUY
+ }
+ DM_Add_To_List_Never_Repeat_Once_Selected(540, 3, 5, 7); // NO THANKS
+
+ Dialogue_Menu_Appear(320, 240);
+ int answerValue = Dialogue_Menu_Query_Input();
+ Dialogue_Menu_Disappear();
+
+ if (answerValue == 530) { // BUY
+ Actor_Says(kActorMcCoy, 7000, 12);
+ if (Query_Difficulty_Level() != kGameDifficultyEasy) {
+ Global_Variable_Decrement(kVariableChinyen, 75);
+ }
+ Actor_Clue_Acquire(kActorMcCoy, kClueGoldfish, true, kActorFishDealer);
+ Actor_Modify_Friendliness_To_Other(kActorFishDealer, kActorMcCoy, 5);
+ } else if (answerValue == 540) { // NO THANKS
+ Actor_Says(kActorMcCoy, 7005, 13);
+ Actor_Modify_Friendliness_To_Other(kActorFishDealer, kActorMcCoy, -5);
+ }
+}
+
} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/scene/ar02.cpp b/engines/bladerunner/script/scene/ar02.cpp
index a013c16..81846a3 100644
--- a/engines/bladerunner/script/scene/ar02.cpp
+++ b/engines/bladerunner/script/scene/ar02.cpp
@@ -63,12 +63,12 @@ void SceneScriptAR02::InitializeScene() {
Ambient_Sounds_Add_Sound(kSfxTHNDER3, 10, 180, 50, 100, 0, 0, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(kSfxTHNDER4, 10, 180, 50, 100, 0, 0, -101, -101, 0, 0);
if (Game_Flag_Query(kFlagSpinnerAtAR01)
- && Game_Flag_Query(kFlagAR01toAR02)) {
+ && Game_Flag_Query(kFlagAR01toAR02)) {
Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 1, false);
Scene_Loop_Set_Default(2);
Game_Flag_Reset(kFlagAR01toAR02);
} else if (!Game_Flag_Query(kFlagSpinnerAtAR01)
- && Game_Flag_Query(kFlagAR01toAR02)) {
+ && Game_Flag_Query(kFlagAR01toAR02)) {
Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
Scene_Loop_Set_Default(2);
Game_Flag_Reset(kFlagAR01toAR02);
@@ -123,8 +123,8 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
Actor_Face_Actor(kActorMcCoy, kActorInsectDealer, true);
Actor_Face_Actor(kActorInsectDealer, kActorMcCoy, true);
if (Global_Variable_Query(kVariableChapter) == 2) {
- if ( Game_Flag_Query(kFlagAR02InsectDealerInterviewed)
- && !Game_Flag_Query(kFlagAR02InsectDealerTalk)
+ if (Game_Flag_Query(kFlagAR02InsectDealerInterviewed)
+ && !Game_Flag_Query(kFlagAR02InsectDealerTalk)
) {
Game_Flag_Set(kFlagAR02InsectDealerTalk);
Player_Loses_Control();
@@ -132,6 +132,9 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
ADQ_Add(kActorInsectDealer, 210, 14);
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -350.66f, 0.0f, -1117.19f, 0, false, false, false);
Actor_Face_Actor(kActorMcCoy, kActorInsectDealer, true);
+ if (_vm->_cutContent) {
+ Actor_Says(kActorInsectDealer, 220, 14); // Doesn't she deserve a gift?
+ }
Actor_Says(kActorMcCoy, 110, 18);
Actor_Says(kActorInsectDealer, 230, 14);
Actor_Says(kActorMcCoy, 115, 18);
@@ -139,7 +142,7 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
Item_Pickup_Spin_Effect(kModelAnimationMaggieBracelet, 288, 257);
Actor_Says(kActorInsectDealer, 250, 14);
Player_Gains_Control();
- dialogueWithInsectDealer2();
+ dialogueWithInsectDealerBuyBracelet();
} else if (Game_Flag_Query(kFlagAR02InsectDealerInterviewed)) {
Actor_Says(kActorMcCoy, 75, 18);
Actor_Says(kActorInsectDealer, 60, 12);
@@ -148,15 +151,15 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
dialogueWithInsectDealer1();
}
} else if (Global_Variable_Query(kVariableChapter) > 2) {
- if ( Actor_Clue_Query(kActorMcCoy, kCluePeruvianLadyInterview)
- && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyCollection)
+ if (Actor_Clue_Query(kActorMcCoy, kCluePeruvianLadyInterview)
+ && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyCollection)
) {
Actor_Says(kActorMcCoy, 205, 16);
Actor_Says(kActorInsectDealer, 290, 12);
Actor_Says(kActorInsectDealer, 300, 13);
Actor_Says(kActorMcCoy, 210, 15);
Actor_Says(kActorInsectDealer, 310, 12);
- Actor_Says(kActorMcCoy, 215, 13);
+ Actor_Says(kActorMcCoy, 215, 13); // Thanks for your help
if (Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)) {
Actor_Says(kActorMcCoy, 220, 14);
Actor_Says(kActorInsectDealer, 320, 12);
@@ -170,10 +173,59 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
}
Actor_Clue_Acquire(kActorMcCoy, kClueDragonflyCollection, false, kActorInsectDealer);
} else {
- Actor_Says(kActorMcCoy, 240, 17);
- Actor_Says(kActorInsectDealer, 360, 13);
- Actor_Says(kActorInsectDealer, 370, 14);
- Actor_Says(kActorMcCoy, 245, 13);
+ // still from Act 3 and beyond
+ if (_vm->_cutContent) {
+ switch (Global_Variable_Query(kVariableInsectDealerBanterTalk)) {
+ case 0:
+ // how's business
+ Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1);
+ Actor_Says(kActorMcCoy, 240, 17); // How's business?
+ Actor_Says(kActorInsectDealer, 360, 13);
+ Actor_Says(kActorInsectDealer, 370, 14);
+ Actor_Says(kActorMcCoy, 245, 13);
+ break;
+ case 1:
+ Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1);
+ Actor_Says(kActorMcCoy, 8920, 13); // I gotta ask you a question.
+ Actor_Says(kActorInsectDealer, 410, 13); // Ah, perhaps you should ask someone else.
+ if (Player_Query_Agenda() == kPlayerAgendaSurly) {
+ Actor_Says(kActorMcCoy, 8450, 14); // Does this badge mean anything to you?
+ Actor_Says(kActorInsectDealer, 440, 14); // Please, this is all I know.
+ Actor_Modify_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy, -5);
+ }
+ break;
+ case 2:
+ // offer to buy slug
+ Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1);
+ Actor_Says(kActorMcCoy, 8520, 13); // What do you know?
+ Actor_Says(kActorInsectDealer, 450, 13);
+ if (Actor_Query_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy) > 40) {
+ Actor_Says(kActorInsectDealer, 460, 14);
+ Actor_Says(kActorInsectDealer, 470, 13); // This slug, perhaps.
+ Item_Pickup_Spin_Effect(kModelAnimationSlug, 288, 257);
+ dialogueWithInsectDealerBuySlug();
+ }
+ break;
+ case 3:
+ Global_Variable_Increment(kVariableInsectDealerBanterTalk, 1);
+ if (Actor_Query_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy) > 45) {
+ Actor_Says(kActorMcCoy, 8610, 17); // What's the word, friend?
+ } else {
+ Actor_Says(kActorMcCoy, 8615, 17); // Heard anything on the street?
+ }
+ Actor_Says(kActorInsectDealer, 400, 13); // I hear very little.
+ break;
+ default:
+ Actor_Says(kActorMcCoy, 215, 13);
+ break;
+ }
+ } else {
+ // original behavior
+ Actor_Says(kActorMcCoy, 240, 17); // How's business?
+ Actor_Says(kActorInsectDealer, 360, 13);
+ Actor_Says(kActorInsectDealer, 370, 14);
+ Actor_Says(kActorMcCoy, 245, 13);
+ }
}
}
return true;
@@ -181,7 +233,7 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
}
if (actorId == kActorHasan
- && Global_Variable_Query(kVariableChapter) == 2
+ && Global_Variable_Query(kVariableChapter) == 2
) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -240.79f, 0.0f, -1328.89f, 12, true, false, false)) {
Actor_Face_Actor(kActorMcCoy, kActorHasan, true);
@@ -195,6 +247,58 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
dialogueWithHassan();
}
}
+
+ if (_vm->_cutContent) {
+ if (actorId == kActorHasan
+ && Global_Variable_Query(kVariableChapter) > 2) {
+
+ if (Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1)
+ && !Game_Flag_Query(kFlagWrongInvestigation)
+ ) {
+ dialogueWithHassan();
+ } else {
+ switch (Global_Variable_Query(kVariableHasanBanterTalk)) {
+ case 0:
+ Global_Variable_Increment(kVariableHasanBanterTalk, 1);
+ Actor_Says(kActorMcCoy, 155, 13); // How's business?
+ Actor_Says(kActorHasan, 10, 13);
+ Actor_Says(kActorHasan, 20, 14);
+ break;
+ case 1:
+ Global_Variable_Increment(kVariableHasanBanterTalk, 1);
+ Actor_Says(kActorMcCoy, 6980, 13); // What's the word
+ Actor_Says(kActorHasan, 290, 13);
+ if (Actor_Query_Friendliness_To_Other(kActorHasan, kActorMcCoy) > 49) {
+ Actor_Says(kActorHasan, 300, 14);
+ Actor_Says(kActorHasan, 310, 13);
+ Item_Pickup_Spin_Effect(kModelAnimationGarterSnake, 328, 237); // TODO check co-ordinates
+ dialogueWithHassanBuySnake();
+ }
+ break;
+ case 2:
+ // offer to buy snake
+ Global_Variable_Increment(kVariableHasanBanterTalk, 1);
+ if (Player_Query_Agenda() == kPlayerAgendaSurly
+ || Actor_Query_Friendliness_To_Other(kActorHasan, kActorMcCoy) <= 49 ) {
+ Actor_Says(kActorMcCoy, 8915, 14); // You got a minute, pal?
+ Actor_Says(kActorHasan, 260, 14); // My time is quite valuable, noble one
+ Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, -5);
+ } else {
+ Actor_Says(kActorMcCoy, 8615, 13); // Heard anything on the street?
+ Actor_Says(kActorHasan, 250, 13); // I'm afraid not, noble one. But you shall surely be the first to know, if I do hear something.
+ }
+ break;
+ default:
+ if (Actor_Query_Friendliness_To_Other(kActorHasan, kActorMcCoy) <= 45 ) {
+ Actor_Says(kActorMcCoy, 8940, 13);
+ } else {
+ Actor_Says(kActorMcCoy, 1315, 13);
+ }
+ break;
+ }
+ }
+ }
+ }
return false;
}
@@ -280,13 +384,13 @@ void SceneScriptAR02::DialogueQueueFlushed(int a1) {
void SceneScriptAR02::dialogueWithInsectDealer1() {
Dialogue_Menu_Clear_List();
if (Actor_Clue_Query(kActorMcCoy, kClueDragonflyEarring)
- || Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect)
+ || Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect)
) {
DM_Add_To_List_Never_Repeat_Once_Selected(490, 3, 5, 5); // EARRING
}
- if ( Actor_Clue_Query(kActorMcCoy, kClueDragonflyAnklet)
- && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyEarring)
- && !Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect)
+ if (Actor_Clue_Query(kActorMcCoy, kClueDragonflyAnklet)
+ && !Actor_Clue_Query(kActorMcCoy, kClueDragonflyEarring)
+ && !Actor_Clue_Query(kActorMcCoy, kClueBombingSuspect)
) {
DM_Add_To_List_Never_Repeat_Once_Selected(500, 3, 5, 5); // ANKLET
}
@@ -333,16 +437,16 @@ void SceneScriptAR02::dialogueWithInsectDealer1() {
break;
case 520: // DONE
- Actor_Says(kActorMcCoy, 215, 16);
+ Actor_Says(kActorMcCoy, 215, 16); // Thanks for your help.
break;
}
}
-void SceneScriptAR02::dialogueWithInsectDealer2() {
+void SceneScriptAR02::dialogueWithInsectDealerBuyBracelet() {
Dialogue_Menu_Clear_List();
if (Global_Variable_Query(kVariableChinyen) >= 15
- || Query_Difficulty_Level() == kGameDifficultyEasy
+ || Query_Difficulty_Level() == kGameDifficultyEasy
) {
DM_Add_To_List_Never_Repeat_Once_Selected(530, 7, 5, 3); // BUY
}
@@ -370,6 +474,39 @@ void SceneScriptAR02::dialogueWithInsectDealer2() {
}
}
+/**
+* This is only for cut content (purchasing the Electric Slug)
+*/
+void SceneScriptAR02::dialogueWithInsectDealerBuySlug() {
+ Dialogue_Menu_Clear_List();
+
+ Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(530);
+ Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(540);
+
+ if (Global_Variable_Query(kVariableChinyen) >= 85
+ || Query_Difficulty_Level() == kGameDifficultyEasy
+ ) {
+ DM_Add_To_List_Never_Repeat_Once_Selected(530, 7, 5, 3); // BUY
+ }
+ DM_Add_To_List_Never_Repeat_Once_Selected(540, 3, 5, 7); // NO THANKS
+
+ Dialogue_Menu_Appear(320, 240);
+ int answerValue = Dialogue_Menu_Query_Input();
+ Dialogue_Menu_Disappear();
+
+ if (answerValue == 530) { // BUY
+ Actor_Says(kActorMcCoy, 7000, 12);
+ if (Query_Difficulty_Level() != kGameDifficultyEasy) {
+ Global_Variable_Decrement(kVariableChinyen, 85);
+ }
+ Actor_Clue_Acquire(kActorMcCoy, kClueSlug, true, kActorInsectDealer);
+ Actor_Modify_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy, 5);
+ } else if (answerValue == 540) { // NO THANKS
+ Actor_Says(kActorMcCoy, 7005, 13);
+ Actor_Modify_Friendliness_To_Other(kActorInsectDealer, kActorMcCoy, -5);
+ }
+}
+
void SceneScriptAR02::dialogueWithHassan() {
Dialogue_Menu_Clear_List();
if (Actor_Clue_Query(kActorMcCoy, kClueStrangeScale1)) {
@@ -386,7 +523,7 @@ void SceneScriptAR02::dialogueWithHassan() {
switch (answerValue) {
case 550: // SCALE
- Actor_Says(kActorMcCoy, 145, 11);
+ Actor_Says(kActorMcCoy, 145, 11); // This your work?
Actor_Says(kActorHasan, 30, 11);
Actor_Says(kActorMcCoy, 160, 11);
Actor_Says(kActorHasan, 40, 11);
@@ -395,6 +532,9 @@ void SceneScriptAR02::dialogueWithHassan() {
Actor_Says(kActorMcCoy, 170, 11);
Actor_Says(kActorHasan, 60, 11);
Actor_Says(kActorMcCoy, 175, 11);
+ if (_vm->_cutContent) {
+ Game_Flag_Set(kFlagWrongInvestigation);
+ }
Game_Flag_Set(kFlagNotUsed370);
break;
@@ -411,9 +551,9 @@ void SceneScriptAR02::dialogueWithHassan() {
Actor_Says(kActorHasan, 190, 11);
Actor_Says(kActorHasan, 200, 11);
Actor_Says(kActorMcCoy, 200, 11);
- Actor_Says(kActorHasan, 210, 11);
- Actor_Says(kActorHasan, 220, 11);
- Actor_Says(kActorHasan, 230, 11);
+ Actor_Says(kActorHasan, 210, 11); // Perhaps you should ask the Peruvian woman next door.
+ Actor_Says(kActorHasan, 220, 11); // She's an expert on such things
+ Actor_Says(kActorHasan, 230, 11); // and will cut a wonderful deal to friends.
Game_Flag_Set(kFlagNotUsed370);
break;
@@ -429,10 +569,43 @@ void SceneScriptAR02::dialogueWithHassan() {
Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, -1);
Actor_Clue_Acquire(kActorMcCoy, kClueHasanInterview, false, kActorHasan);
} else {
- Actor_Says(kActorMcCoy, 1315, 11);
+ Actor_Says(kActorMcCoy, 1315, 11); // Thanks for your time
}
break;
}
}
+/**
+* This is only for cut content (purchasing the Garter Snake)
+*/
+void SceneScriptAR02::dialogueWithHassanBuySnake() {
+ Dialogue_Menu_Clear_List();
+
+ Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(530);
+ Dialogue_Menu_Clear_Never_Repeat_Was_Selected_Flag(540);
+
+ if (Global_Variable_Query(kVariableChinyen) >= 105
+ || Query_Difficulty_Level() == kGameDifficultyEasy
+ ) {
+ DM_Add_To_List_Never_Repeat_Once_Selected(530, 7, 5, 3); // BUY
+ }
+ DM_Add_To_List_Never_Repeat_Once_Selected(540, 3, 5, 7); // NO THANKS
+
+ Dialogue_Menu_Appear(320, 240);
+ int answerValue = Dialogue_Menu_Query_Input();
+ Dialogue_Menu_Disappear();
+
+ if (answerValue == 530) { // BUY
+ Actor_Says(kActorMcCoy, 7000, 12);
+ if (Query_Difficulty_Level() != kGameDifficultyEasy) {
+ Global_Variable_Decrement(kVariableChinyen, 105);
+ }
+ Actor_Clue_Acquire(kActorMcCoy, kClueGarterSnake, true, kActorHasan);
+ Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, 5);
+ } else if (answerValue == 540) { // NO THANKS
+ Actor_Says(kActorMcCoy, 7005, 13);
+ Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, -5);
+ }
+}
+
} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp
index 8efdaf4..4b4e31b 100644
--- a/engines/bladerunner/script/scene/rc04.cpp
+++ b/engines/bladerunner/script/scene/rc04.cpp
@@ -209,6 +209,9 @@ void SceneScriptRC04::dialogueWithBulletBob() {
Actor_Says(kActorMcCoy, 5040, 16);
Actor_Says(kActorBulletBob, 550, 11);
Actor_Modify_Friendliness_To_Other(kActorBulletBob, kActorMcCoy, -6);
+ if (_vm->_cutContent) {
+ Actor_Modify_Friendliness_To_Other(kActorHasan, kActorMcCoy, 6);
+ }
Game_Flag_Set(kFlagMcCoyTalkedToBulletBobAboutHasan);
break;
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index f5abd45..8fd586a 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -71,12 +71,15 @@ private:
#define END_SCRIPT };
DECLARE_SCRIPT(AR01)
+ void dialogueWithFishDealerBuyGoldfish();
END_SCRIPT
DECLARE_SCRIPT(AR02)
void dialogueWithInsectDealer1();
- void dialogueWithInsectDealer2();
+ void dialogueWithInsectDealerBuyBracelet();
+ void dialogueWithInsectDealerBuySlug();
void dialogueWithHassan();
+ void dialogueWithHassanBuySnake();
END_SCRIPT
DECLARE_SCRIPT(BB01)
More information about the Scummvm-git-logs
mailing list