aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/entities/august.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lastexpress/entities/august.cpp')
-rw-r--r--engines/lastexpress/entities/august.cpp93
1 files changed, 92 insertions, 1 deletions
diff --git a/engines/lastexpress/entities/august.cpp b/engines/lastexpress/entities/august.cpp
index 8b0481f00f..c26313295a 100644
--- a/engines/lastexpress/entities/august.cpp
+++ b/engines/lastexpress/entities/august.cpp
@@ -1426,7 +1426,98 @@ IMPLEMENT_FUNCTION(37, August, function37)
//////////////////////////////////////////////////////////////////////////
IMPLEMENT_FUNCTION(38, August, function38)
- error("August: callback function 38 not implemented!");
+ switch (savepoint.action) {
+ default:
+ break;
+
+ case kActionNone:
+ TIME_CHECK_SAVEPOINT(kTime1801800, params->param1, kEntityAugust, kEntityRebecca, kAction155980128);
+
+ TIME_CHECK_CALLBACK(kTime1820700, params->param2, 3, setup_callbackActionRestaurantOrSalon);
+ break;
+
+ case kActionDefault:
+ setCallback(1);
+ setup_callbackActionRestaurantOrSalon();
+ break;
+
+ case kActionCallback:
+ switch (getCallback()) {
+ default:
+ break;
+
+ case 1:
+ getData()->entityPosition = kPosition_1540;
+ getData()->location = kLocationOutsideCompartment;
+
+ setCallback(2);
+ setup_updatePosition("109A", kCarRestaurant, 56);
+ break;
+
+ case 2:
+ getScenes()->loadSceneFromItemPosition(kItem3);
+ getData()->location = kLocationInsideCompartment;
+ break;
+
+ case 3:
+ getData()->location = kLocationOutsideCompartment;
+
+ setCallback(4);
+ setup_updatePosition("109D2", kCarRestaurant, 56);
+ break;
+
+ case 4:
+ getInventory()->setLocationAndProcess(kItem3, kObjectLocation1);
+
+ setCallback(5);
+ setup_function17(kTime1849500);
+ break;
+
+ case 5:
+ setup_function39();
+ break;
+
+ case 6:
+ setCallback(7);
+ setup_playSound("AUG2114");
+ break;
+
+ case 7:
+ getEntities()->drawSequenceLeft(kEntityAugust, "108C");
+ getEntities()->updatePositionEnter(kEntityAugust, kCarRestaurant, 56);
+ getEntities()->updatePositionEnter(kEntityAugust, kCarRestaurant, 57);
+
+ setCallback(8);
+ setup_playSound("AUG2114A");
+ break;
+
+ case 8:
+ setCallback(9);
+ setup_playSound("AUG2115");
+ break;
+
+ case 9:
+ setCallback(10);
+ setup_draw2("108D1", "108D2", kEntityRebecca);
+ break;
+
+ case 10:
+ getEntities()->drawSequenceLeft(kEntityAugust, "109B");
+ getEntities()->updatePositionExit(kEntityAugust, kCarRestaurant, 56);
+ getEntities()->updatePositionExit(kEntityAugust, kCarRestaurant, 57);
+ getSavePoints()->push(kEntityAugust, kEntityRebecca, kAction125496184);
+ break;
+ }
+ break;
+
+ case kAction169358379:
+ getSavePoints()->push(kEntityAugust, kEntityRebecca, kAction155465152);
+ getEntities()->drawSequenceLeft(kEntityAugust, "108A");
+
+ setCallback(6);
+ setup_updateFromTime(900);
+ break;
+ }
}
//////////////////////////////////////////////////////////////////////////