[Scummvm-git-logs] scummvm master -> a6401e8dac630e7e6e47006ad89f841f0fed830e

antoniou79 antoniou at cti.gr
Sun Sep 8 14:07:55 CEST 2019


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a51efbf560 BLADERUNNER: Debugger output x,y 2d co-ordinate for mouse click info
a6401e8dac BLADERUNNER: Fix Hasan behavior post Act 2


Commit: a51efbf560ec511effe964bd364b8ec287c0d9ab
    https://github.com/scummvm/scummvm/commit/a51efbf560ec511effe964bd364b8ec287c0d9ab
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-09-08T15:05:03+03:00

Commit Message:
BLADERUNNER: Debugger output x,y 2d co-ordinate for mouse click info

Changed paths:
    engines/bladerunner/bladerunner.cpp


diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp
index cc45700..2cea816 100644
--- a/engines/bladerunner/bladerunner.cpp
+++ b/engines/bladerunner/bladerunner.cpp
@@ -1427,7 +1427,7 @@ void BladeRunnerEngine::handleMouseAction(int x, int y, bool mainButton, bool bu
 
 		if (_debugger->_showMouseClickInfo) {
 			// Region has highest priority when overlapping
-			debug("Mouse: %02.2f, %02.2f, %02.2f", scenePosition.x, scenePosition.y, scenePosition.z);
+			debug("Mouse: %02.2f, %02.2f, %02.2f at ScreenX: %d ScreenY: %d", scenePosition.x, scenePosition.y, scenePosition.z, x, y);
 			if ((sceneObjectId < kSceneObjectOffsetActors || sceneObjectId >= kSceneObjectOffsetItems) && exitIndex >= 0) {
 				debug("Clicked on Region-Exit=%d", exitIndex);
 			} else if (regionIndex >= 0) {


Commit: a6401e8dac630e7e6e47006ad89f841f0fed830e
    https://github.com/scummvm/scummvm/commit/a6401e8dac630e7e6e47006ad89f841f0fed830e
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-09-08T15:05:03+03:00

Commit Message:
BLADERUNNER: Fix Hasan behavior post Act 2

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/hasan.cpp
    engines/bladerunner/script/scene/ar01.cpp
    engines/bladerunner/script/scene/ar02.cpp
    engines/bladerunner/script/script.cpp
    engines/bladerunner/script/script.h


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 19af4ce..d641eb5 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -2523,9 +2523,9 @@ enum GoalZuben {
 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
+	kGoalHasanIsWalkingAroundIsAtAR02         = 301, // new goal for restored content
+	kGoalHasanIsWalkingAroundStayAwayFromAR02 = 302, // new goal for restored content
+	kGoalHasanIsWalkingAroundStaysAtAR02      = 303, // new goal for restored content
 	kGoalHasanIsWalkingAroundIsAway           = 304  // new goal for restored content
 };
 
diff --git a/engines/bladerunner/script/ai/hasan.cpp b/engines/bladerunner/script/ai/hasan.cpp
index 696d440..33925e0 100644
--- a/engines/bladerunner/script/ai/hasan.cpp
+++ b/engines/bladerunner/script/ai/hasan.cpp
@@ -65,8 +65,8 @@ bool AIScriptHasan::Update() {
 			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);
+		           && Actor_Query_Goal_Number(kActorHasan) < kGoalHasanIsWalkingAroundIsAtAR02) {
+			Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtAR02);
 			return true;
 		}
 		return false;
@@ -99,7 +99,7 @@ void AIScriptHasan::CompletedMovementTrack() {
 				maxHasanLeaveProb = 10;
 			}
 
-			if (Actor_Query_Goal_Number(kActorHasan) == kGoalHasanIsWalkingAroundIsAtCT02) {
+			if (Actor_Query_Goal_Number(kActorHasan) == kGoalHasanIsWalkingAroundIsAtAR02) {
 				if (Random_Query(1, maxHasanLeaveProb) == 1
 				    && Player_Query_Current_Scene() != kSceneAR01
 					&& Player_Query_Current_Scene() != kSceneAR02
@@ -109,7 +109,7 @@ void AIScriptHasan::CompletedMovementTrack() {
 					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);
+					Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundStaysAtAR02);
 					return; // true;
 				}
 			}
@@ -120,11 +120,11 @@ void AIScriptHasan::CompletedMovementTrack() {
 					&& Player_Query_Current_Scene() != kSceneAR02
 				) {
 					// Hasan returns tp Animoid Row
-					Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtCT02);
+					Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtAR02);
 					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);
+					Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundStayAwayFromAR02);
 					return; // true;
 				}
 			}
@@ -184,8 +184,9 @@ bool AIScriptHasan::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 			Actor_Put_In_Set(kActorHasan, kSetFreeSlotH);
 			Actor_Set_At_Waypoint(kActorHasan, 40, 0); // kSetFreeSlotH
 			break;
-		case kGoalHasanIsWalkingAroundIsAtCT02:
+		case kGoalHasanIsWalkingAroundIsAtAR02:
 			AI_Movement_Track_Flush(kActorHasan);
+			World_Waypoint_Set(554, kSetAR01_AR02, -214.0f, 0.0f, -1379.0f);
 			AI_Movement_Track_Append(kActorHasan, 554, Random_Query(60, 180)); // kSetAR01_AR02
 			Actor_Face_Heading(kActorHasan, 371, false);
 			AI_Movement_Track_Repeat(kActorHasan);
@@ -195,11 +196,11 @@ bool AIScriptHasan::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 			AI_Movement_Track_Append(kActorHasan, 40, Random_Query(10, 40)); // kSetFreeSlotH
 			AI_Movement_Track_Repeat(kActorHasan);
 			break;
-		case kGoalHasanIsWalkingAroundStayAwayFromCT02:
+		case kGoalHasanIsWalkingAroundStayAwayFromAR02:
 			Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAway);
 			break;
-		case kGoalHasanIsWalkingAroundStaysAtCT02:
-			Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtCT02);
+		case kGoalHasanIsWalkingAroundStaysAtAR02:
+			Actor_Set_Goal_Number(kActorHasan, kGoalHasanIsWalkingAroundIsAtAR02);
 			break;
 		}
 	} else {
diff --git a/engines/bladerunner/script/scene/ar01.cpp b/engines/bladerunner/script/scene/ar01.cpp
index d7ed9bc..bb872cc 100644
--- a/engines/bladerunner/script/scene/ar01.cpp
+++ b/engines/bladerunner/script/scene/ar01.cpp
@@ -204,7 +204,8 @@ bool SceneScriptAR01::ClickedOnActor(int actorId) {
 						case 0:
 							Global_Variable_Increment(kVariableFishDealerBanterTalk, 1);
 							Actor_Says(kActorFishDealer, 230, 14);
-							Item_Pickup_Spin_Effect(kModelAnimationGoldfish, 88, 400); // TODO check co-ordinates
+
+							Item_Pickup_Spin_Effect_From_Actor(kModelAnimationGoldfish, kActorFishDealer, 0, -40);
 							dialogueWithFishDealerBuyGoldfish();
 							break;
 						case 1:
diff --git a/engines/bladerunner/script/scene/ar02.cpp b/engines/bladerunner/script/scene/ar02.cpp
index de462bb..165a8ae 100644
--- a/engines/bladerunner/script/scene/ar02.cpp
+++ b/engines/bladerunner/script/scene/ar02.cpp
@@ -202,7 +202,7 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
 							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);
+								Item_Pickup_Spin_Effect_From_Actor(kModelAnimationSlug, kActorInsectDealer, 0, -40);
 								dialogueWithInsectDealerBuySlug();
 							}
 							break;
@@ -252,49 +252,54 @@ bool SceneScriptAR02::ClickedOnActor(int actorId) {
 		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);
+			if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -240.79f, 0.0f, -1328.89f, 12, true, false, false)) {
+				Actor_Face_Actor(kActorMcCoy, kActorHasan, true);
+				Actor_Face_Actor(kActorHasan, kActorMcCoy, true);
+
+				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_From_Actor(kModelAnimationGarterSnake, kActorHasan, 0, -40);
+							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;
 					}
-					break;
 				}
 			}
 		}
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index d8faa02..b51a82d 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -870,6 +870,13 @@ void ScriptBase::Item_Pickup_Spin_Effect(int animationId, int x, int y) {
 	_vm->_itemPickup->setup(animationId, x, y);
 }
 
+void ScriptBase::Item_Pickup_Spin_Effect_From_Actor(int animationId, int actorId, int xOffset, int yOffset) {
+	debugC(kDebugScript, "Item_Pickup_Spin_Effect_From_Actor(%d, %d, %d, %d)", animationId, actorId, xOffset, yOffset);
+
+	const Common::Rect &rect = _vm->_actors[actorId]->getScreenRectangle();
+	_vm->_itemPickup->setup(animationId, CLIP((rect.right + rect.left) / 2 + xOffset, 0, 639), CLIP((rect.bottom + rect.top) / 2 + yOffset, 0, 479));
+}
+
 bool ScriptBase::Item_Query_Visible(int itemId) {
 	debugC(kDebugScript, "Item_Query_Visible(%d)", itemId);
 	return _vm->_items->isVisible(itemId);
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index 4eb9290..832c22e 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -127,6 +127,7 @@ protected:
 	void Item_Flag_As_Target(int itemId);
 	void Item_Flag_As_Non_Target(int itemId);
 	void Item_Pickup_Spin_Effect(int animationId, int x, int y);
+	void Item_Pickup_Spin_Effect_From_Actor(int animationId, int actorId, int xOffset = 0, int yOffset = 0); // new for restored content mostly
 	bool Item_Query_Visible(int itemId);
 	void Set_Subtitle_Text_On_Screen(Common::String displayText);
 #if BLADERUNNER_ORIGINAL_BUGS





More information about the Scummvm-git-logs mailing list