[Scummvm-git-logs] scummvm master -> 75d84f7968795985786a8ae8bbf4005932013902

dreammaster noreply at scummvm.org
Mon Jun 29 09:56:53 UTC 2026


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

Summary:
8991a9f54d MADS: FOREST: Clarify loop param as 'y' in open_interface/close_interface
98d15e042e MADS: FOREST: Add missing code from room_404_daemon
bcba744ea8 MADS: FOREST: Fix premature commands_allowed set in room 501
a93e3c3f2a MADS: FOREST: Change all player_has calls to use inventory item constants
75d84f7968 MADS: FOREST: Add optional previous room param to console teleport command


Commit: 8991a9f54d76ba9c192c60e661d559df0c768a90
    https://github.com/scummvm/scummvm/commit/8991a9f54d76ba9c192c60e661d559df0c768a90
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-29T19:56:35+10:00

Commit Message:
MADS: FOREST: Clarify loop param as 'y' in open_interface/close_interface

Changed paths:
    engines/mads/madsv2/forest/extra.cpp


diff --git a/engines/mads/madsv2/forest/extra.cpp b/engines/mads/madsv2/forest/extra.cpp
index c7b10ac19c9..cd102bef847 100644
--- a/engines/mads/madsv2/forest/extra.cpp
+++ b/engines/mads/madsv2/forest/extra.cpp
@@ -195,9 +195,9 @@ void open_interface(InterfaceButton button) {
 
 		if (button == JOURNAL_FLY) {
 			if (count != 23) {
-				int x = count * 2 + 46;
+				int y = count * 2 + 46;
 				int scale = 100 - count * 9;
-				sprite_draw_scaled(series_list[0], 1, &scr_inter, 30, x, scale);
+				sprite_draw_scaled(series_list[0], 1, &scr_inter, 30, y, scale);
 			}
 		} else {
 			sprite_draw(series_list[0], 1, &scr_inter, JOURNAL_X, JOURNAL_Y);
@@ -205,9 +205,9 @@ void open_interface(InterfaceButton button) {
 
 		if (button == BP_FLY) {
 			if (count != 23) {
-				int x = count * 2 + 40;
+				int y = count * 2 + 40;
 				int scale = 100 - count * 9;
-				sprite_draw_scaled(series_list[1], 1, &scr_inter, 96, x, scale);
+				sprite_draw_scaled(series_list[1], 1, &scr_inter, 96, y, scale);
 			}
 		} else {
 			sprite_draw(series_list[1], 1, &scr_inter, BP_X, BP_Y);
@@ -258,9 +258,9 @@ void close_interface(InterfaceButton button) {
 
 		if (button == JOURNAL_FLY) {
 			if (count != 0) {
-				int x = count * 2 + 43;
+				int y = count * 2 + 43;
 				int scale = 100 - count * 9;
-				sprite_draw_scaled(series_list[0], 1, &scr_inter, 30, x, scale);
+				sprite_draw_scaled(series_list[0], 1, &scr_inter, 30, y, scale);
 			} else {
 				sprite_draw(series_list[0], 1, &scr_inter, JOURNAL_X, JOURNAL_Y);
 			}
@@ -270,9 +270,9 @@ void close_interface(InterfaceButton button) {
 
 		if (button == BP_FLY) {
 			if (count != 0) {
-				int x = count * 2 + 37;
+				int y = count * 2 + 37;
 				int scale = 100 - count * 9;
-				sprite_draw_scaled(series_list[1], 1, &scr_inter, 96, x, scale);
+				sprite_draw_scaled(series_list[1], 1, &scr_inter, 96, y, scale);
 			} else {
 				sprite_draw(series_list[1], 1, &scr_inter, BP_X, BP_Y);
 			}


Commit: 98d15e042ee258b02cb8bc8a5cd9f30073681c4c
    https://github.com/scummvm/scummvm/commit/98d15e042ee258b02cb8bc8a5cd9f30073681c4c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-29T19:56:36+10:00

Commit Message:
MADS: FOREST: Add missing code from room_404_daemon

Changed paths:
    engines/mads/madsv2/forest/rooms/room404.cpp


diff --git a/engines/mads/madsv2/forest/rooms/room404.cpp b/engines/mads/madsv2/forest/rooms/room404.cpp
index dc548bf2c95..7971dc6e66f 100644
--- a/engines/mads/madsv2/forest/rooms/room404.cpp
+++ b/engines/mads/madsv2/forest/rooms/room404.cpp
@@ -562,10 +562,27 @@ static void room_404_daemon() {
 
 	case 26:
 		if (scratch._90 == 8) {
-			// TODO: loc_6B27A
+			aa[6] = kernel_run_animation(kernel_name('L', 3), 103);
+			scratch.animation_info[6]._active = -1;
+			scratch._98 = 6;
+			kernel_reset_animation(scratch._9a, 0);
+			kernel_reset_animation(scratch._9c, 0);
+			kernel_synch(KERNEL_ANIM, scratch._9a, KERNEL_NOW, 0);
+			kernel_synch(KERNEL_ANIM, scratch._9c, KERNEL_NOW, 0);
+			kernel_synch(KERNEL_ANIM, aa[6], KERNEL_NOW, 0);
+			scratch._a4 = 2;
+			player.commands_allowed = 0;
+			global[g133] = 1;
+			global[g143] = 1;
+			kernel_timing_trigger(1, 110);
+			player.walker_visible = 0;
+			kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
 		} else if (scratch._90 < 8) {
 			if (scratch._90 == 1) {
-				// TODO: loc_6B318
+				kernel_reset_animation(scratch._9a, 0);
+				kernel_reset_animation(scratch._9c, 0);
+				global[g133] = 1;
+				global[g143] = 1;
 			} else if (scratch._90 == 6) {
 				aa[5] = kernel_run_animation(kernel_name('L', 1), 103);
 				aainfo[5]._active = -1;


Commit: bcba744ea8f8fcabfd919b763efc6767ce9d5244
    https://github.com/scummvm/scummvm/commit/bcba744ea8f8fcabfd919b763efc6767ce9d5244
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-29T19:56:36+10:00

Commit Message:
MADS: FOREST: Fix premature commands_allowed set in room 501

Changed paths:
    engines/mads/madsv2/forest/rooms/room501.cpp


diff --git a/engines/mads/madsv2/forest/rooms/room501.cpp b/engines/mads/madsv2/forest/rooms/room501.cpp
index 2ab5a5091ae..17cf2c119b6 100644
--- a/engines/mads/madsv2/forest/rooms/room501.cpp
+++ b/engines/mads/madsv2/forest/rooms/room501.cpp
@@ -393,8 +393,8 @@ static void room_501_daemon() {
 		if (global[walker_converse_state] != 0) {
 			global[walker_converse_state] = 0;
 			close_interface(CANDLE_FLY);
+			player.commands_allowed = true;
 		}
-		player.commands_allowed = true;
 		break;
 
 	case 24:


Commit: a93e3c3f2a67bbf31a049847f1f7cf3c41900124
    https://github.com/scummvm/scummvm/commit/a93e3c3f2a67bbf31a049847f1f7cf3c41900124
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-29T19:56:36+10:00

Commit Message:
MADS: FOREST: Change all player_has calls to use inventory item constants

Changed paths:
    engines/mads/madsv2/forest/rooms/room199.cpp
    engines/mads/madsv2/forest/rooms/room203.cpp
    engines/mads/madsv2/forest/rooms/room303.cpp
    engines/mads/madsv2/forest/rooms/room307.cpp
    engines/mads/madsv2/forest/rooms/room308.cpp
    engines/mads/madsv2/forest/rooms/room321.cpp
    engines/mads/madsv2/forest/rooms/room322.cpp


diff --git a/engines/mads/madsv2/forest/rooms/room199.cpp b/engines/mads/madsv2/forest/rooms/room199.cpp
index b4f751b92f9..617f3fd47f2 100644
--- a/engines/mads/madsv2/forest/rooms/room199.cpp
+++ b/engines/mads/madsv2/forest/rooms/room199.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "mads/madsv2/forest/rooms/section1.h"
+#include "mads/madsv2/forest/mads/inventory.h"
 #include "mads/madsv2/forest/mads/words.h"
 #include "mads/madsv2/forest/digi.h"
 #include "mads/madsv2/forest/global.h"
@@ -154,19 +155,11 @@ static void room_199_init() {
 	local->bg_active = slot;
 }
 
-static int room_199_anim1() {
-	if (!player_has(6))  return 0;
-	if (!player_has(12)) return 0;
-	if (!player_has(0))  return 0;
-	if (!player_has(2))  return 0;
-	if (!player_has(14)) return 0;
-	if (!player_has(4))  return 0;
-	if (!player_has(8))  return 0;
-	if (!player_has(10)) return 0;
-	if (!player_has(9))  return 0;
-	if (!player_has(11)) return 0;
-	if (!player_has(7))  return 0;
-	return 1;
+static int room_199_has_materials() {
+	return player_has(reeds) && player_has(elm_leaves) && player_has(cogs) &&
+		player_has(feather) && player_has(stick) && player_has(lily_pad) &&
+		player_has(twine) && player_has(web) && player_has(vine_weed) &&
+		player_has(planks) && player_has(sticks) ? 1 : 0;
 }
 
 static void room_199_anim2() {
@@ -177,60 +170,91 @@ static void room_199_anim2() {
 
 	switch (local->val3) {
 	case 1:
-		if (!player_has(14)) digi_play_build(521, 'e', 6, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 2; return;
+		if (!player_has(stick))
+			digi_play_build(521, 'e', 6, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 2;
+		break;
 	case 2:
-		if (!player_has(11)) digi_play_build(521, 'e', 10, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 3; return;
+		if (!player_has(planks))
+			digi_play_build(521, 'e', 10, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 3;
+		break;
 	case 3:
-		if (!player_has(12)) digi_play_build(521, 'e', 3, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 4; return;
+		if (!player_has(elm_leaves))
+			digi_play_build(521, 'e', 3, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 4;
+		break;
 	case 4:
-		if (!player_has(10)) digi_play_build(521, 'e', 8, 1);
+		if (!player_has(web)) digi_play_build(521, 'e', 8, 1);
 		else kernel_timing_trigger(2, 28);
-		local->val3 = 5; return;
+		local->val3 = 5;
+		break;
 	case 5:
-		if (!player_has(9)) digi_play_build(521, 'e', 9, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 6; return;
+		if (!player_has(vine_weed))
+			digi_play_build(521, 'e', 9, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 6;
+		break;
 	case 6:
-		if (!player_has(8)) digi_play_build(521, 'e', 20, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 7; return;
+		if (!player_has(twine)) digi_play_build(521, 'e', 20, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 7;
+		break;
 	case 7:
-		if (!player_has(2)) digi_play_build(521, 'e', 5, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 8; return;
+		if (!player_has(feather))
+			digi_play_build(521, 'e', 5, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 8;
+		break;
 	case 8:
-		if (!player_has(6)) digi_play_build(521, 'e', 2, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 9; return;
+		if (!player_has(reeds))
+			digi_play_build(521, 'e', 2, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 9;
+		break;
 	case 9:
-		if (!player_has(4)) digi_play_build(521, 'e', 7, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 10; return;
+		if (!player_has(lily_pad))
+			digi_play_build(521, 'e', 7, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 10;
+		break;
 	case 10:
-		if (!player_has(0)) digi_play_build(521, 'e', 4, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 11; return;
+		if (!player_has(cogs))
+			digi_play_build(521, 'e', 4, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 11;
+		break;
 	case 11:
-		if (!player_has(7)) digi_play_build(521, 'e', 21, 1);
-		else kernel_timing_trigger(2, 28);
-		local->val3 = 12; return;
+		if (!player_has(sticks))
+			digi_play_build(521, 'e', 21, 1);
+		else
+			kernel_timing_trigger(2, 28);
+		local->val3 = 12;
+		break;
 	case 12:
 		digi_play_build(521, 'b', 1, 1);
-		local->val3 = 20; return;
+		local->val3 = 20;
+		break;
 	case 14:
 		local->val4      = 0;
 		local->val3      = -1;
 		local->anim_flag  = 0;
 		kernel_timing_trigger(2, 113);
-		return;
+		break;
 	default:
-		return;
+		break;
 	}
 }
 
@@ -261,7 +285,7 @@ static void room_199_anim4() {
 
 	switch (local->val3) {
 	case 1:
-		if (player_has(14)) {
+		if (player_has(stick)) {
 			ss[8] = kernel_load_series("*ob014i", 0);
 			seq[8] = kernel_seq_stamp(ss[8], false, 1);
 			kernel_seq_depth(seq[8], 1);
@@ -270,7 +294,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 2:
-		if (player_has(11)) {
+		if (player_has(planks)) {
 			ss[13] = kernel_load_series("*ob011i", 0);
 			seq[13] = kernel_seq_stamp(ss[13], false, 1);
 			kernel_seq_depth(seq[13], 1);
@@ -278,7 +302,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 3:
-		if (player_has(12)) {
+		if (player_has(elm_leaves)) {
 			ss[5] = kernel_load_series("*ob012i", 0);
 			seq[5] = kernel_seq_stamp(ss[5], false, 1);
 			kernel_seq_depth(seq[5], 1);
@@ -287,7 +311,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 4:
-		if (player_has(10)) {
+		if (player_has(web)) {
 			ss[11] = kernel_load_series("*ob010i", 0);
 			seq[11] = kernel_seq_stamp(ss[11], false, 1);
 			kernel_seq_depth(seq[11], 1);
@@ -296,7 +320,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 5:
-		if (player_has(9)) {
+		if (player_has(vine_weed)) {
 			ss[12] = kernel_load_series("*ob009i", 0);
 			seq[12] = kernel_seq_stamp(ss[12], false, 1);
 			kernel_seq_depth(seq[12], 1);
@@ -305,7 +329,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 6:
-		if (player_has(8)) {
+		if (player_has(twine)) {
 			ss[10] = kernel_load_series("*ob008i", 0);
 			seq[10] = kernel_seq_stamp(ss[10], false, 1);
 			kernel_seq_depth(seq[10], 1);
@@ -314,7 +338,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 7:
-		if (player_has(2)) {
+		if (player_has(feather)) {
 			ss[7] = kernel_load_series("*ob002i", 0);
 			seq[7] = kernel_seq_stamp(ss[7], false, 1);
 			kernel_seq_depth(seq[7], 1);
@@ -323,7 +347,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 8:
-		if (player_has(6)) {
+		if (player_has(reeds)) {
 			ss[4] = kernel_load_series("*ob006i", 0);
 			seq[4] = kernel_seq_stamp(ss[4], false, 1);
 			kernel_seq_depth(seq[4], 1);
@@ -332,7 +356,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 9:
-		if (player_has(4)) {
+		if (player_has(lily_pad)) {
 			ss[9] = kernel_load_series("*ob004i", 0);
 			seq[9] = kernel_seq_stamp(ss[9], false, 1);
 			kernel_seq_depth(seq[9], 1);
@@ -341,7 +365,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 10:
-		if (player_has(0)) {
+		if (player_has(cogs)) {
 			ss[6] = kernel_load_series("*ob000i", 0);
 			seq[6] = kernel_seq_stamp(ss[6], false, 1);
 			kernel_seq_depth(seq[6], 1);
@@ -350,7 +374,7 @@ static void room_199_anim4() {
 		}
 		kernel_timing_trigger(15, 115); return;
 	case 11:
-		if (player_has(7)) {
+		if (player_has(sticks)) {
 			ss[14] = kernel_load_series("*ob007i", 0);
 			seq[14] = kernel_seq_stamp(ss[14], false, 1);
 			kernel_seq_depth(seq[14], 1);
@@ -388,7 +412,7 @@ static void room_199_daemon() {
 		leave_journal();
 		player.commands_allowed = true;
 	} else if (trig == 114) {
-		int result = room_199_anim1();
+		int result = room_199_has_materials();
 		global[g100] = result;
 		if (result) {
 			digi_play_build(521, 'e', 11, 1);
diff --git a/engines/mads/madsv2/forest/rooms/room203.cpp b/engines/mads/madsv2/forest/rooms/room203.cpp
index fa821aa3285..ca964400e14 100644
--- a/engines/mads/madsv2/forest/rooms/room203.cpp
+++ b/engines/mads/madsv2/forest/rooms/room203.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "mads/madsv2/forest/rooms/section2.h"
+#include "mads/madsv2/forest/mads/inventory.h"
 #include "mads/madsv2/forest/mads/words.h"
 #include "mads/madsv2/forest/digi.h"
 #include "mads/madsv2/forest/extra.h"
@@ -1779,7 +1780,7 @@ static void room_203_parser() {
 	}
 
 	if (player_parse(words_click_on, words_abigail, 0)) {
-		if (player_has(5) && player_has(8)) {
+		if (player_has(pebbles) && player_has(twine)) {
 			kernel.trigger_setup_mode = KERNEL_TRIGGER_DAEMON;
 			aa[3] = kernel_run_animation(kernel_name('a', 1), 104);
 			scratch._98 = 30;
@@ -1789,7 +1790,7 @@ static void room_203_parser() {
 			player.walker_visible = false;
 			player.commands_allowed = false;
 			kernel_synch(KERNEL_ANIM, aa[3], KERNEL_NOW, 0);
-		} else if (player_has(8)) {
+		} else if (player_has(twine)) {
 			kernel.trigger_setup_mode = KERNEL_TRIGGER_DAEMON;
 			aa[3] = kernel_run_animation(kernel_name('a', 2), 104);
 			aainfo[3]._active = -1;
diff --git a/engines/mads/madsv2/forest/rooms/room303.cpp b/engines/mads/madsv2/forest/rooms/room303.cpp
index d100e787a22..1c9e0990580 100644
--- a/engines/mads/madsv2/forest/rooms/room303.cpp
+++ b/engines/mads/madsv2/forest/rooms/room303.cpp
@@ -417,7 +417,7 @@ static void room_303_init() {
 	seq[1] = kernel_seq_stamp(ss[1], false, KERNEL_FIRST);
 	kernel_seq_depth(seq[1], 15);
 
-	if (!player_has(6)) {
+	if (!player_has(reeds)) {
 		scratch._a6 = -1;
 	} else {
 		kernel_flip_hotspot(words_reeds, false);
diff --git a/engines/mads/madsv2/forest/rooms/room307.cpp b/engines/mads/madsv2/forest/rooms/room307.cpp
index aa93e5f53dc..f962111002d 100644
--- a/engines/mads/madsv2/forest/rooms/room307.cpp
+++ b/engines/mads/madsv2/forest/rooms/room307.cpp
@@ -649,7 +649,7 @@ static void room_307_daemon() {
 			kernel_abort_animation(scratch._9c);
 			scratch._9a = -1;
 			scratch._9c = -1;
-			if (player_has(4)) {
+			if (player_has(lily_pad)) {
 				aa[8] = kernel_run_animation(kernel_name('R', 4), 111);
 				aainfo[8]._active = -1;
 				scratch._92 = 32;
@@ -766,7 +766,7 @@ static void room_307_daemon() {
 		break;
 
 	case 111: {
-		if (player_has(14)) {
+		if (player_has(stick)) {
 			dont_frag_the_palette();
 			kernel_abort_animation(aa[8]);
 		} else {
diff --git a/engines/mads/madsv2/forest/rooms/room308.cpp b/engines/mads/madsv2/forest/rooms/room308.cpp
index a0d26669191..7161c78c886 100644
--- a/engines/mads/madsv2/forest/rooms/room308.cpp
+++ b/engines/mads/madsv2/forest/rooms/room308.cpp
@@ -1010,7 +1010,7 @@ static void room_308_init() {
 			aainfo[23]._active = -1;
 			return;
 		}
-		if (player.been_here_before && player_has(5) && player_has(1) && player_has(15)) {
+		if (player.been_here_before && player_has(pebbles) && player_has(rubber_band) && player_has(forked_stick)) {
 			aa[3] = kernel_run_animation(kernel_name('t', 8), 103);
 			aainfo[3]._active = -1;
 			kernel_synch(KERNEL_ANIM, aa[3], KERNEL_NOW, 0);
@@ -1025,7 +1025,7 @@ static void room_308_init() {
 			aainfo[0]._active = -1;
 			return;
 		}
-		if (!player_has(5) || !player_has(1)) {
+		if (!player_has(pebbles) || !player_has(rubber_band)) {
 			aa[4] = kernel_run_animation(kernel_name('t', 6), 104);
 			aainfo[4]._active = -1;
 			kernel_synch(KERNEL_ANIM, aa[4], KERNEL_NOW, 0);
@@ -1033,7 +1033,7 @@ static void room_308_init() {
 			global_midi_play(15);
 			return;
 		}
-		if (player_has(15)) {
+		if (player_has(forked_stick)) {
 			aa[0] = kernel_run_animation(kernel_name('t', 1), 100);
 			kernel_reset_animation(aa[0], 13);
 			aainfo[0]._active = -1;
@@ -1143,7 +1143,7 @@ static void room_308_daemon() {
 		dont_frag_the_palette();
 		kernel_abort_animation(aa[2]);
 		aainfo[2]._active = 0;
-		if (player_has(5) && player_has(1) && player_has(15)) {
+		if (player_has(pebbles) && player_has(rubber_band) && player_has(forked_stick)) {
 			aa[3] = kernel_run_animation(kernel_name('t', 8), 103);
 			aainfo[3]._active = -1;
 			kernel_synch(KERNEL_ANIM, aa[3], KERNEL_NOW, 0);
diff --git a/engines/mads/madsv2/forest/rooms/room321.cpp b/engines/mads/madsv2/forest/rooms/room321.cpp
index d3345e9daff..1e64d9af78b 100644
--- a/engines/mads/madsv2/forest/rooms/room321.cpp
+++ b/engines/mads/madsv2/forest/rooms/room321.cpp
@@ -134,7 +134,7 @@ static void room_321_init() {
 	scratch._a6 = -1;
 	scratch._aa = 0;
 
-	if (player_has(6))
+	if (player_has(reeds))
 		kernel_flip_hotspot(words_reeds, false);
 
 	if (global[g068] == 0) {
@@ -725,7 +725,7 @@ static void room_321_daemon() {
 			global[g133] = 0;
 			room_321_anim2();
 			kernel_flip_hotspot(words_pebbles, false);
-			if (!player_has(5))
+			if (!player_has(pebbles))
 				inter_move_object(pebbles, PLAYER);
 			global[g068] = -1;
 			global[player_score] = -1;
diff --git a/engines/mads/madsv2/forest/rooms/room322.cpp b/engines/mads/madsv2/forest/rooms/room322.cpp
index 97abe1a68e2..b7217c4f1cf 100644
--- a/engines/mads/madsv2/forest/rooms/room322.cpp
+++ b/engines/mads/madsv2/forest/rooms/room322.cpp
@@ -484,7 +484,7 @@ static void room_322_daemon() {
 			kernel_abort_animation(scratch._a6);
 			scratch._a4 = -1;
 			kernel_reset_animation(scratch._a6, 0);
-			if (player_has(4)) {
+			if (player_has(lily_pad)) {
 				aa[8] = kernel_run_animation("*rm307r4", 111);
 				aainfo[8]._frame = -1;
 				scratch._9c = 32;
@@ -553,7 +553,7 @@ static void room_322_daemon() {
 
 	case 111: {
 		int16 seq_handle;
-		if (player_has(14)) {
+		if (player_has(stick)) {
 			dont_frag_the_palette();
 			kernel_abort_animation(aa[8]);
 		} else {
@@ -572,7 +572,7 @@ static void room_322_daemon() {
 		player.walker_visible = false;
 		kernel_synch(KERNEL_PLAYER, 0, KERNEL_NOW, 0);
 
-		if (player_has(14)) {
+		if (player_has(stick)) {
 			kernel_synch(KERNEL_ANIM, aa[8], KERNEL_NOW, 0);
 		} else {
 			kernel_synch(KERNEL_ANIM, aa[9], KERNEL_NOW, 0);


Commit: 75d84f7968795985786a8ae8bbf4005932013902
    https://github.com/scummvm/scummvm/commit/75d84f7968795985786a8ae8bbf4005932013902
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-29T19:56:36+10:00

Commit Message:
MADS: FOREST: Add optional previous room param to console teleport command

Changed paths:
    engines/mads/madsv2/console.cpp


diff --git a/engines/mads/madsv2/console.cpp b/engines/mads/madsv2/console.cpp
index b61cd96e857..7c2fb30dc39 100644
--- a/engines/mads/madsv2/console.cpp
+++ b/engines/mads/madsv2/console.cpp
@@ -46,12 +46,15 @@ static int strToInt(const char *s) {
 }
 
 bool Console::cmdTeleport(int argc, const char **argv) {
-	if (argc != 2) {
+	if (argc < 2) {
 		debugPrintf("Current room is: %d\n", new_room);
-		debugPrintf("Usage: %s <room number>\n", argv[0]);
+		debugPrintf("Usage: %s <room number> [<previous room>]\n", argv[0]);
 		return true;
 	} else {
+		if (argc >= 3)
+			room_id = strToInt(argv[2]);
 		new_room = strToInt(argv[1]);
+
 		return false;
 	}
 }




More information about the Scummvm-git-logs mailing list