aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/use.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/dreamweb/use.cpp')
-rw-r--r--engines/dreamweb/use.cpp122
1 files changed, 117 insertions, 5 deletions
diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp
index 08b96cf33a..4e956cd016 100644
--- a/engines/dreamweb/use.cpp
+++ b/engines/dreamweb/use.cpp
@@ -764,6 +764,118 @@ void DreamGenContext::useChurchGate() {
turnPathOn(2); // Open church
}
+void DreamGenContext::useGun() {
+
+ if (data.byte(kObjecttype) != 4) {
+ // gun is not taken
+ showSecondUse();
+ putBackObStuff();
+
+ } else if (data.byte(kReallocation) == 22) {
+ // in pool room
+ showPuzText(34, 300);
+ data.byte(kLastweapon) = 1;
+ data.byte(kCombatcount) = 39;
+ data.byte(kGetback) = 1;
+ data.byte(kProgresspoints)++;
+
+ } else if (data.byte(kReallocation) == 25) {
+ // helicopter
+ showPuzText(34, 300);
+ data.byte(kLastweapon) = 1;
+ data.byte(kCombatcount) = 19;
+ data.byte(kGetback) = 1;
+ data.byte(kDreamnumber) = 2;
+ data.byte(kRoomafterdream) = 38;
+ data.byte(kSartaindead) = 1;
+ data.byte(kProgresspoints)++;
+
+ } else if (data.byte(kReallocation) == 27) {
+ // in rock room
+ showPuzText(46, 300);
+ data.byte(kPointermode) = 2;
+ data.byte(kRockstardead) = 1;
+ data.byte(kLastweapon) = 1;
+ data.byte(kNewsitem) = 1;
+ data.byte(kGetback) = 1;
+ data.byte(kRoomafterdream) = 32;
+ data.byte(kDreamnumber) = 0;
+ data.byte(kProgresspoints)++;
+
+ } else if (data.byte(kReallocation) == 8 && data.byte(kMapx) == 22 && data.byte(kMapy) == 40
+ && !isSetObOnMap(92) && data.byte(kManspath) != 9) {
+ // by studio
+ data.byte(kDestination) = 9;
+ data.byte(kFinaldest) = 9;
+ autoSetWalk();
+ data.byte(kLastweapon) = 1;
+ data.byte(kGetback) = 1;
+ data.byte(kProgresspoints)++;
+
+ } else if (data.byte(kReallocation) == 6 && data.byte(kMapx) == 11 && data.byte(kMapy) == 20
+ && isSetObOnMap(5)) {
+ // sarters
+ data.byte(kDestination) = 1;
+ data.byte(kFinaldest) = 1;
+ autoSetWalk();
+ removeSetObject(5);
+ placeSetObject(6);
+ turnAnyPathOn(1, data.byte(kRoomnum) - 1);
+ data.byte(kLiftflag) = 1;
+ data.word(kWatchingtime) = 40*2;
+ data.word(kReeltowatch) = 4;
+ data.word(kEndwatchreel) = 43;
+ data.byte(kWatchspeed) = 1;
+ data.byte(kSpeedcount) = 1;
+ data.byte(kGetback) = 1;
+ data.byte(kProgresspoints)++;
+
+ } else if (data.byte(kReallocation) == 29) {
+ // aide
+ data.byte(kGetback) = 1;
+ al = 13;
+ resetLocation();
+ setLocation(12);
+ data.byte(kDestpos) = 12;
+ data.byte(kDestination) = 2;
+ data.byte(kFinaldest) = 2;
+ autoSetWalk();
+ data.word(kWatchingtime) = 164*2;
+ data.word(kReeltowatch) = 3;
+ data.word(kEndwatchreel) = 164;
+ data.byte(kWatchspeed) = 1;
+ data.byte(kSpeedcount) = 1;
+ data.byte(kAidedead) = 1;
+ data.byte(kDreamnumber) = 3;
+ data.byte(kRoomafterdream) = 33;
+ data.byte(kProgresspoints)++;
+
+ } else if (data.byte(kReallocation) == 23 && data.byte(kMapx) == 0 && data.byte(kMapy) == 50) {
+ // with boss
+ if (data.byte(kManspath) != 5) {
+ data.byte(kDestination) = 5;
+ data.byte(kFinaldest) = 5;
+ autoSetWalk();
+ }
+ data.byte(kLastweapon) = 1;
+ data.byte(kGetback) = 1;
+
+ } else if (data.byte(kReallocation) == 8 && data.byte(kMapx) == 11 && data.byte(kMapy) == 10) {
+ // tv soldier
+ if (data.byte(kManspath) != 2) {
+ data.byte(kDestination) = 2;
+ data.byte(kFinaldest) = 2;
+ autoSetWalk();
+ }
+ data.byte(kLastweapon) = 1;
+ data.byte(kGetback) = 1;
+
+ } else {
+ showFirstUse();
+ putBackObStuff();
+ }
+}
+
void DreamGenContext::useFullCart() {
data.byte(kProgresspoints)++;
turnAnyPathOn(2, data.byte(kRoomnum) + 6);
@@ -863,7 +975,7 @@ void DreamGenContext::useElvDoor() {
// Axe on door
showPuzText(15, 300);
- _inc(data.byte(kProgresspoints));
+ data.byte(kProgresspoints)++;
data.word(kWatchingtime) = 46 * 2;
data.word(kReeltowatch) = 31;
data.word(kEndwatchreel) = 77;
@@ -1176,10 +1288,10 @@ void DreamGenContext::useDiary() {
data.byte(kGetback) = 0;
RectWithCallback diaryList[] = {
- { kDiaryx+94,kDiaryx+110,kDiaryy+97,kDiaryy+113,&DreamGenContext::diaryKeyN },
- { kDiaryx+151,kDiaryx+167,kDiaryy+71,kDiaryy+87,&DreamGenContext::diaryKeyP },
- { kDiaryx+176,kDiaryx+192,kDiaryy+108,kDiaryy+124,&DreamGenContext::quitKey },
- { 0,320,0,200,&DreamGenContext::blank },
+ { kDiaryx+94,kDiaryx+110,kDiaryy+97,kDiaryy+113,&DreamBase::diaryKeyN },
+ { kDiaryx+151,kDiaryx+167,kDiaryy+71,kDiaryy+87,&DreamBase::diaryKeyP },
+ { kDiaryx+176,kDiaryx+192,kDiaryy+108,kDiaryy+124,&DreamBase::quitKey },
+ { 0,320,0,200,&DreamBase::blank },
{ 0xFFFF,0,0,0,0 }
};