[Scummvm-git-logs] scummvm master -> 58ce27bdc3bc63fbfcd0a70c2f90fd618f9d7e4b

mduggan mgithub at guarana.org
Sun Aug 2 07:30:33 UTC 2020


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:
47e23665ff ULTIMA8: Add unhatch for Crusader eggs
9fecf830c9 ULTIMA8: Update comments
a892193bb5 ULTIMA8: Replicate crusader item selection behavior more closely
58ce27bdc3 ULTIMA8: Fix z bug in isCentreOn


Commit: 47e23665ffb8b3f60f77e1bb5c34e60f5b14b67d
    https://github.com/scummvm/scummvm/commit/47e23665ffb8b3f60f77e1bb5c34e60f5b14b67d
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-08-02T13:17:56+09:00

Commit Message:
ULTIMA8: Add unhatch for Crusader eggs

Changed paths:
    engines/ultima/ultima8/world/egg.cpp
    engines/ultima/ultima8/world/egg.h
    engines/ultima/ultima8/world/egg_hatcher_process.cpp
    engines/ultima/ultima8/world/item.cpp
    engines/ultima/ultima8/world/item.h


diff --git a/engines/ultima/ultima8/world/egg.cpp b/engines/ultima/ultima8/world/egg.cpp
index 1b751d5614..629b4b6859 100644
--- a/engines/ultima/ultima8/world/egg.cpp
+++ b/engines/ultima/ultima8/world/egg.cpp
@@ -45,6 +45,15 @@ uint16 Egg::hatch() {
 	return callUsecodeEvent_hatch();
 }
 
+uint16 Egg::unhatch() {
+	if (GAME_IS_CRUSADER) {
+		if (!_hatched) return 0;
+		_hatched = false;
+		return callUsecodeEvent_unhatch();
+	}
+	return 0;
+}
+
 void Egg::dumpInfo() const {
 	Item::dumpInfo();
 	pout << "range: " << getXRange() << "," << getYRange()
diff --git a/engines/ultima/ultima8/world/egg.h b/engines/ultima/ultima8/world/egg.h
index e531003301..317c1a96fc 100644
--- a/engines/ultima/ultima8/world/egg.h
+++ b/engines/ultima/ultima8/world/egg.h
@@ -55,6 +55,9 @@ public:
 	//! hatch the egg
 	virtual uint16 hatch();
 
+	//! unhatch the egg (for Crusader only)
+	virtual uint16 unhatch();
+
 	//! The item has left the fast area
 	void leaveFastArea() override;
 
diff --git a/engines/ultima/ultima8/world/egg_hatcher_process.cpp b/engines/ultima/ultima8/world/egg_hatcher_process.cpp
index 88c0410708..f4f5187b0f 100644
--- a/engines/ultima/ultima8/world/egg_hatcher_process.cpp
+++ b/engines/ultima/ultima8/world/egg_hatcher_process.cpp
@@ -87,6 +87,8 @@ void EggHatcherProcess::run() {
 			if (tegg && av->hasJustTeleported()) continue;
 
 			egg->hatch();
+		} else {
+			egg->unhatch();
 		}
 	}
 
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index 787e50a99f..3acec564bc 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -1434,6 +1434,10 @@ uint32 Item::callUsecodeEvent_guardianBark(int16 unk) {         // event 15
 	return callUsecodeEvent(0x15, arg_stack.access(), 2); // CONSTANT 0x15
 }
 
+uint32 Item::callUsecodeEvent_unhatch() {                     // event 15
+	return callUsecodeEvent(0x15);  // CONSTANT
+}
+
 uint32 Item::use() {
 	Actor *actor = dynamic_cast<Actor *>(this);
 	if (actor) {
diff --git a/engines/ultima/ultima8/world/item.h b/engines/ultima/ultima8/world/item.h
index 0242ea6c71..c69a1c218c 100644
--- a/engines/ultima/ultima8/world/item.h
+++ b/engines/ultima/ultima8/world/item.h
@@ -435,7 +435,8 @@ public:
 	uint32 callUsecodeEvent_cast(uint16 unk);                   // event 11
 	uint32 callUsecodeEvent_justMoved();                        // event 12
 	uint32 callUsecodeEvent_AvatarStoleSomething(uint16 unk);   // event 14
-	uint32 callUsecodeEvent_guardianBark(int16 unk);            // event 15
+	uint32 callUsecodeEvent_guardianBark(int16 unk);            // event 15 (Ultima)
+	uint32 callUsecodeEvent_unhatch();							// event 15 (Crusader)
 
 	uint32 use();
 


Commit: 9fecf830c93405fb5185f3667cab91f75a42bee0
    https://github.com/scummvm/scummvm/commit/9fecf830c93405fb5185f3667cab91f75a42bee0
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-08-02T13:17:56+09:00

Commit Message:
ULTIMA8: Update comments

Changed paths:
    engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
    engines/ultima/ultima8/usecode/remorse_intrinsics.h


diff --git a/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h b/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
index 45c4a29214..b7e0286f60 100644
--- a/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
+++ b/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
@@ -380,7 +380,7 @@ const char* const ConvertUsecodeCrusader::_intrinsics[] = {
 	"int16 Actor::I_getLastAnimSet(4 bytes)", // part of same coff set 01D, 05A, 0B9, 0D7, 0E4, 124
 	"void Item::I_setQuality(Item *, int)", // same coff as 07F, 0BA
 	"int16 UCMachine::I_numToStr(int16 num)", // same as 113 based on same coff set 0FF, 113, 126
-	"byte Item::I_getDirToCoords(Item *, uin16 x, uint16 y)", // based on disassembly - FIXME: returns 2* values from U8
+	"byte Item::I_getDirToCoords(Item *, uin16 x, uint16 y)", // based on disassembly
 	"void Item::I_andStatus(Item *, uint16 status)", // part of same coff set 01A, 031, 069, 06E, 099, 0B2, 0BF, 0C1, 0C3, 0E9, 0FC, 101, 104, 106, 108, 10A, 10C, 10E, 110, 114, 117, 11A, 128, 132
 	"int16 Item::I_getNPCNum(Item *)", // part of same coff set 067, 06D, 089, 08E, 0AD, 0F8, 100, 102, 105, 107, 109, 10B, 10D, 10F, 111, 115, 11C, 123, 129
 	"void Item::I_setIsBroken(Item *)", // same coff as 08C, 119
diff --git a/engines/ultima/ultima8/usecode/remorse_intrinsics.h b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
index a6db10b812..666fc1494a 100644
--- a/engines/ultima/ultima8/usecode/remorse_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
@@ -186,7 +186,7 @@ Intrinsic RemorseIntrinsics[] = {
 	Item::I_setBroken, // void Intrinsic08C(4 bytes)
 	Item::I_hurl, // void Intrinsic08D(12 bytes)
 	Item::I_getNpcNum, // based on same coff as 102 (-> variable name in TRIGGER::ordinal21)
-	PaletteFaderProcess::I_jumpToAllBlack, // TODO: PaletteFaderProcess::I_setPalToAllBlack - should also resume cycle process.
+	PaletteFaderProcess::I_jumpToAllBlack, // TODO: should also resume cycle process.
 	// 0x090
 	MusicProcess::I_musicStop, // void Intrinsic090(void)
 	0, // void Intrinsic091(void)


Commit: a892193bb5d7e712ba37c4c66ed7a3501e19efb6
    https://github.com/scummvm/scummvm/commit/a892193bb5d7e712ba37c4c66ed7a3501e19efb6
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-08-02T13:17:56+09:00

Commit Message:
ULTIMA8: Replicate crusader item selection behavior more closely

Changed paths:
    engines/ultima/ultima8/world/item_selection_process.cpp


diff --git a/engines/ultima/ultima8/world/item_selection_process.cpp b/engines/ultima/ultima8/world/item_selection_process.cpp
index 079387d371..21b1aabad5 100644
--- a/engines/ultima/ultima8/world/item_selection_process.cpp
+++ b/engines/ultima/ultima8/world/item_selection_process.cpp
@@ -86,7 +86,7 @@ bool ItemSelectionProcess::selectNextItem() {
 		if (item->getShape() == 0x4ed || family == ShapeInfo::SF_CRUWEAPON ||
 			family == ShapeInfo::SF_CRUAMMO || family == ShapeInfo::SF_CRUBOMB ||
 			family == ShapeInfo::SF_CRUINVITEM ||
-			(info && info->_flags & ShapeInfo::SI_SELECTABLE)) {
+			(info && (info->_flags & ShapeInfo::SI_SELECTABLE))) {
 
 			int32 cx, cy, cz;
 			item->getCentre(cx, cy, cz);
@@ -130,8 +130,16 @@ void ItemSelectionProcess::useSelectedItem() {
 	if (!_selectedItem)
 		return;
 	Item *item = getItem(_selectedItem);
-	if (item)
-		item->callUsecodeEvent_use();
+	if (item) {
+		const ShapeInfo *info = item->getShapeInfo();
+		if (info && (info->_flags & ShapeInfo::SI_SELECTABLE)) {
+			item->callUsecodeEvent_use();
+		} else {
+			MainActor *actor = getMainActor();
+			if (actor)
+				actor->addItemCru(item, true);
+		}
+	}
 	clearSelection();
 }
 


Commit: 58ce27bdc3bc63fbfcd0a70c2f90fd618f9d7e4b
    https://github.com/scummvm/scummvm/commit/58ce27bdc3bc63fbfcd0a70c2f90fd618f9d7e4b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-08-02T16:28:49+09:00

Commit Message:
ULTIMA8: Fix z bug in isCentreOn

Changed paths:
    engines/ultima/ultima8/world/item.cpp


diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index 3acec564bc..003175b4bb 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -587,7 +587,7 @@ bool Item::isCentreOn(const Item &item2) const {
 
 	if (x1c <= x2a || x2b <= x1c) return false;
 	if (y1c <= y2a || y2b <= y1c) return false;
-	if (z2b == z1c) return true;
+	if (z2b == getZ()) return true;
 	return false;
 }
 




More information about the Scummvm-git-logs mailing list