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

mduggan mgithub at guarana.org
Mon Mar 29 12:24:32 UTC 2021


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

Summary:
3b618a0f1c ULTIMA8: Implement I_setTarget and I_isFalling for Crusader
3d1fa4b6eb ULTIMA8: Wire up I_shoot intrinsic for Crusader
f042700056 ULTIMA8: Wire up more No Regret intrinsics


Commit: 3b618a0f1cdcea418cfd29d7743dfd4b7898bccc
    https://github.com/scummvm/scummvm/commit/3b618a0f1cdcea418cfd29d7743dfd4b7898bccc
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-03-29T19:49:31+09:00

Commit Message:
ULTIMA8: Implement I_setTarget and I_isFalling for Crusader

Changed paths:
    engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
    engines/ultima/ultima8/usecode/regret_intrinsics.h
    engines/ultima/ultima8/usecode/remorse_intrinsics.h
    engines/ultima/ultima8/world/actors/actor.cpp
    engines/ultima/ultima8/world/actors/actor.h
    engines/ultima/ultima8/world/actors/attack_process.h


diff --git a/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h b/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
index edf27b0c2c..574c304446 100644
--- a/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
+++ b/engines/ultima/ultima8/convert/crusader/convert_usecode_crusader.h
@@ -284,7 +284,7 @@ const char* const ConvertUsecodeCrusader::_intrinsics[] = {
 	"int16 Actor::I_getDefaultActivity1(Actor *)",
 	"int16 Actor::I_getDefaultActivity2(Actor *)",
 	"int16 Actor::I_getLastAnimSet(4 bytes)", // part of same coff set 01D, 05A, 0B9, 0D7, 0E4, 124
-	"void Actor::I_attack(Actor *, uint16 target)",
+	"void Actor::I_setTarget(Actor *, uint16 target)",
 	"void Actor::I_SetNPCDataField0x63_0E6(Actor *, int)",
 	"void Actor::I_setDead(4 bytes)", // part of same coff set 021, 060, 073, 0A0, 0A8, 0D8, 0E7, 135
 	"int16 Item::I_cast(6 bytes)",
diff --git a/engines/ultima/ultima8/usecode/regret_intrinsics.h b/engines/ultima/ultima8/usecode/regret_intrinsics.h
index f6f95f3959..30ff85a660 100644
--- a/engines/ultima/ultima8/usecode/regret_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/regret_intrinsics.h
@@ -263,7 +263,7 @@ Intrinsic RegretIntrinsics[] = {
 	Actor::I_getDefaultActivity1, // Intrinsic0D8()
 	Actor::I_getDefaultActivity2, // Intrinsic0D9()
 	Actor::I_getLastAnimSet, // Intrinsic0DA()
-	0, // Actor::I_isFalling()
+	Actor::I_isFalling, // Actor::I_isFalling()
 	Item::I_getQLo, // Intrinsic0DC()
 	Item::I_getQHi, // Intrinsic0DD()
 	Actor::I_getNpcNum, // Intrinsic0DE()
diff --git a/engines/ultima/ultima8/usecode/remorse_intrinsics.h b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
index 824785c8b6..79ee5d4879 100644
--- a/engines/ultima/ultima8/usecode/remorse_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
@@ -278,7 +278,7 @@ Intrinsic RemorseIntrinsics[] = {
 	Actor::I_getDefaultActivity1, // void Intrinsic0E2(4 bytes)
 	Actor::I_getDefaultActivity2, // void Intrinsic0E3(4 bytes)
 	Actor::I_getLastAnimSet, // void Intrinsic0E4(4 bytes)
-	0, // TODO: Actor::I_attack(Actor *, uint16 target) (implement me)
+	Actor::I_setTarget,
 	Actor::I_setUnkByte, // void Intrinsic0E6(6 bytes)
 	Actor::I_setDead,
 	Item::I_cast, // void Intrinsic0E8(6 bytes)
diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 1331eb6c72..e8a6d60df8 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -55,6 +55,7 @@
 #include "ultima/ultima8/world/loop_script.h"
 #include "ultima/ultima8/audio/audio_process.h"
 #include "ultima/ultima8/audio/music_process.h"
+#include "ultima/ultima8/world/gravity_process.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -1405,6 +1406,17 @@ int Actor::calculateAttackDamage(uint16 other, int damage, uint16 damage_type) {
 	return damage;
 }
 
+bool Actor::isFalling() const {
+	ProcId gravitypid = getGravityPID();
+	if (!gravitypid)
+		return false;
+
+	// TODO: this is not exactly the same as the Crusader implementation,
+	// but pretty close.  Is that ok?
+	GravityProcess *proc = dynamic_cast<GravityProcess *>(Kernel::get_instance()->getProcess(gravitypid));
+	return (proc && proc->is_active());
+}
+
 CombatProcess *Actor::getCombatProcess() {
 	Process *p = Kernel::get_instance()->findProcess(_objId, 0xF2); // CONSTANT!
 	if (!p)
@@ -1888,21 +1900,31 @@ uint32 Actor::I_setTarget(const uint8 *args, unsigned int /*argsize*/) {
 	ARG_UINT16(target);
 	if (!actor) return 0;
 
-	assert(GAME_IS_U8);
+	if (GAME_IS_U8) {
+		CombatProcess *cp = actor->getCombatProcess();
+		if (!cp) {
+			actor->setInCombatU8();
+			cp = actor->getCombatProcess();
+		}
+		if (!cp) {
+			warning("Actor::I_setTarget: failed to enter combat mode");
+			return 0;
+		}
 
-	CombatProcess *cp = actor->getCombatProcess();
-	if (!cp) {
-		actor->setInCombatU8();
-		cp = actor->getCombatProcess();
-	}
-	if (!cp) {
-		perr << "Actor::I_setTarget: failed to enter combat mode"
-		     << Std::endl;
-		return 0;
+		cp->setTarget(target);
+	} else {
+		if (actor->isDead() || actor->getObjId() == 1)
+			return 0;
+
+		actor->setActivityCru(5);
+		AttackProcess *ap = actor->getAttackProcess();
+		if (!ap) {
+			warning("Actor::I_setTarget: failed to enter attack mode");
+			return 0;
+		}
+		ap->setTarget(target);
 	}
 
-	cp->setTarget(target);
-
 	return 0;
 }
 
@@ -2416,5 +2438,12 @@ uint32 Actor::I_isKneeling(const uint8 *args, unsigned int /*argsize*/) {
 	return actor->isKneeling() ? 1 : 0;
 }
 
+uint32 Actor::I_isFalling(const uint8 *args, unsigned int /*argsize*/) {
+	ARG_ACTOR_FROM_PTR(actor);
+	if (!actor) return 0;
+
+	return actor->isFalling() ? 1 : 0;
+}
+
 } // End of namespace Ultima8
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima8/world/actors/actor.h b/engines/ultima/ultima8/world/actors/actor.h
index e8cbe9c637..2326976b39 100644
--- a/engines/ultima/ultima8/world/actors/actor.h
+++ b/engines/ultima/ultima8/world/actors/actor.h
@@ -88,6 +88,8 @@ public:
 		return (_actorFlags & ACT_KNEELING) != 0;
 	}
 
+	bool isFalling() const;
+
 	CombatProcess *getCombatProcess(); 	// in U8
 	AttackProcess *getAttackProcess();	// in Crusader
 	virtual void setInCombat(int activity);
@@ -357,6 +359,7 @@ public:
 	INTRINSIC(I_getCurrentActivityNo);
 	INTRINSIC(I_turnToward);
 	INTRINSIC(I_isKneeling);
+	INTRINSIC(I_isFalling);
 
 	enum ActorFlags {
 		ACT_INVINCIBLE     = 0x000001, // flags from npcdata byte 0x1B
diff --git a/engines/ultima/ultima8/world/actors/attack_process.h b/engines/ultima/ultima8/world/actors/attack_process.h
index 73a8650ce7..e3019974cd 100644
--- a/engines/ultima/ultima8/world/actors/attack_process.h
+++ b/engines/ultima/ultima8/world/actors/attack_process.h
@@ -73,6 +73,10 @@ public:
 		return _target;
 	}
 
+	void setTarget(uint16 target) {
+		_target = target;
+	}
+
 	bool loadData(Common::ReadStream *rs, uint32 version);
 	void saveData(Common::WriteStream *ws) override;
 


Commit: 3d1fa4b6eb3541f022ebe4b759b5b9259a4dda02
    https://github.com/scummvm/scummvm/commit/3d1fa4b6eb3541f022ebe4b759b5b9259a4dda02
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-03-29T19:49:31+09:00

Commit Message:
ULTIMA8: Wire up I_shoot intrinsic for Crusader

Changed paths:
    engines/ultima/ultima8/usecode/remorse_intrinsics.h
    engines/ultima/ultima8/world/item.cpp


diff --git a/engines/ultima/ultima8/usecode/remorse_intrinsics.h b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
index 79ee5d4879..d1d54a7e25 100644
--- a/engines/ultima/ultima8/usecode/remorse_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/remorse_intrinsics.h
@@ -181,7 +181,7 @@ Intrinsic RemorseIntrinsics[] = {
 	CameraProcess::I_getCameraY, // void Intrinsic087(void)
 	Item::I_setMapArray,
 	Item::I_getNpcNum, // based on same coff as 102 (-> variable name in TRIGGER::ordinal21)
-	0, // void Intrinsic08A(12 bytes)
+	Item::I_shoot, // void Intrinsic08A(12 bytes)
 	Item::I_enterFastArea, // void Intrinsic08B(4 bytes)
 	Item::I_setBroken, // void Intrinsic08C(4 bytes)
 	Item::I_hurl, // void Intrinsic08D(12 bytes)
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index b2c957af68..3753e5e91a 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -3613,7 +3613,6 @@ uint32 Item::I_shoot(const uint8 *args, unsigned int /*argsize*/) {
 	ARG_UINT16(gravity); // either 2 (fish) or 1 (death disk, dart)
 	if (!item) return 0;
 
-	assert(GAME_IS_U8);
 	MissileTracker tracker(item, point.getX(), point.getY(), point.getZ(),
 	                       speed, gravity);
 	tracker.launchItem();


Commit: f0427000562cc7c3c653a28eab087c8249ebde29
    https://github.com/scummvm/scummvm/commit/f0427000562cc7c3c653a28eab087c8249ebde29
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-03-29T19:49:31+09:00

Commit Message:
ULTIMA8: Wire up more No Regret intrinsics

Changed paths:
    engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
    engines/ultima/ultima8/gumps/movie_gump.cpp
    engines/ultima/ultima8/gumps/movie_gump.h
    engines/ultima/ultima8/usecode/regret_intrinsics.h
    engines/ultima/ultima8/world/item.cpp
    engines/ultima/ultima8/world/item.h


diff --git a/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h b/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
index 571cb58288..dfc92e2f6d 100644
--- a/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
+++ b/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
@@ -106,7 +106,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"MainActor::I_addItemCru()",
 	"Actor::I_getMap()",
 	"Item::callEvent11(sint16)",
-	"Intrinsic003F()",
+	"CameraProcess::I_somethingAboutCameraUpdate()",
 	// 0040
 	"AudioProcess::I_stopSFXCru()",
 	"Item::isOn(uint16)",
@@ -130,7 +130,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"Actor::I_setDefaultActivity2()",
 	"Actor::I_setActivity()",
 	"World::I_setControlledNPCNum()",
-	"Intrinsic0055()",
+	"Item::I_receiveHit()",
 	"Game::I_isReleaseBuild()",
 	"MainActor::I_setMana()",
 	"Item::use(void)",
@@ -152,16 +152,16 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"Item::hurl(sint16,sint16,sint16,sint16)",
 	"Kernel::getNumProcesses(uint16,ProcessType)",
 	"Item::getCY(void)",
-	"Intrinsic006A()",
+	"U8Engine::I_isCfgAnimationOff()",
 	"Intrinsic006B()",
 	"MusicProcess::I_pauseMusic()",
-	"Intrinsic006D()",
+	"MovieGump::I_playMovieCutsceneRegret()",
 	"MusicProcess::I_unpauseMusic()",
 	"Item::isInNpc(void)",
 	// 0070
 	"Ultima8Engine::I_setCruStasis()",
 	"Ultima8Engine::I_clrCruStasis()",
-	"Intrinsic0072()",
+	"PaletteFaderProcess::I_jumpToColor()",
 	"PaletteFaderProcess::I_fadeFromBlack()",
 	"Actor::isDead(void)",
 	"Item::getNpcNum(void)",
@@ -276,7 +276,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"Item::getQLo(void)",
 	"Item::getQHi(void)",
 	"Item::getNpcNum(void)",
-	"Intrinsic00DF()",
+	"Item::I_setField0x81()",
 	// 00E0
 	"Item::hurl(sint16,sint16,sint16,sint16)",
 	"Actor::I_setDead()",
@@ -385,7 +385,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"PaletteFaderProcess::I_fadeToGivenColor()",
 	"Actor::isDead(void)",
 	"Actor::I_setDead()",
-	"Intrinsic0145()",
+	"I_maybeShowCredits()",
 	"PaletteFaderProcess::I_jumpToAllGrey()",
 	"Item::I_getFamilyOfType()",
 	"Item::getNpcNum(void)",
@@ -398,7 +398,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"Egg::getEggXRange(void)",
 	// 0150
 	"Actor::I_clrInCombat()",
-	"Intrinsic0072()",
+	"PaletteFaderProcess::I_jumpToColor()",
 	"Item::setFrame(uint16)",
 	"UCMachine::I_numToStr()",
 	"Actor::I_getDir()",
diff --git a/engines/ultima/ultima8/gumps/movie_gump.cpp b/engines/ultima/ultima8/gumps/movie_gump.cpp
index c77705fc61..78cabc8c3a 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.cpp
+++ b/engines/ultima/ultima8/gumps/movie_gump.cpp
@@ -250,6 +250,21 @@ uint32 MovieGump::I_playMovieCutsceneAlt(const uint8 *args, unsigned int /*argsi
 	return 0;
 }
 
+uint32 MovieGump::I_playMovieCutsceneRegret(const uint8 *args, unsigned int /*argsize*/) {
+	ARG_STRING(name);
+	ARG_UINT8(fade);
+
+	warning("MovieGump::I_playMovieCutsceneRegret: TODO: use fade argument %d", fade);
+
+	Common::SeekableReadStream *rs = _tryLoadCruMovie(name);
+	if (rs) {
+		Gump *gump = new MovieGump(640, 480, rs, false, false);
+		gump->InitGump(nullptr, true);
+		gump->setRelativePosition(CENTER);
+	}
+
+	return 0;
+}
 
 } // End of namespace Ultima8
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima8/gumps/movie_gump.h b/engines/ultima/ultima8/gumps/movie_gump.h
index ee00741710..3ea99e0275 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.h
+++ b/engines/ultima/ultima8/gumps/movie_gump.h
@@ -63,6 +63,7 @@ public:
 	INTRINSIC(I_playMovieOverlay);
 	INTRINSIC(I_playMovieCutscene);
 	INTRINSIC(I_playMovieCutsceneAlt);
+	INTRINSIC(I_playMovieCutsceneRegret);
 
 protected:
 	MoviePlayer *_player;
diff --git a/engines/ultima/ultima8/usecode/regret_intrinsics.h b/engines/ultima/ultima8/usecode/regret_intrinsics.h
index 30ff85a660..e24fc7c285 100644
--- a/engines/ultima/ultima8/usecode/regret_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/regret_intrinsics.h
@@ -125,7 +125,7 @@ Intrinsic RegretIntrinsics[] = {
 	UCMachine::I_true, // Actually Game::I_isReleaseBuild
 	MainActor::I_setMana, // Intrinsic057()
 	Item::I_use, // Intrinsic058()
-	0, // Intrinsic059()
+	Item::I_setUnkEggType, // Intrinsic059()
 	MusicProcess::I_playMusic, // Intrinsic05A()
 	Item::I_getSurfaceWeight, // Intrinsic05B()
 	Item::I_isCentreOn, // Intrinsic05C()
@@ -143,20 +143,20 @@ Intrinsic RegretIntrinsics[] = {
 	Item::I_hurl, // Intrinsic067()
 	Kernel::I_getNumProcesses, // Intrinsic068()
 	Item::I_getCY, // Intrinsic069()
-	0, // Intrinsic06A()
+	0, // Intrinsic06A() I_isAnimDisabled
 	0, // Intrinsic06B()
 	MusicProcess::I_pauseMusic, // Intrinsic06C()
-	0, // Intrinsic06D()
+	MovieGump::I_playMovieCutsceneRegret, // Intrinsic06D()
 	MusicProcess::I_unpauseMusic, // Intrinsic06E()
 	Item::I_isInNpc, // Intrinsic06F()
 	// 0070
 	Ultima8Engine::I_setCruStasis, // Intrinsic070()
 	Ultima8Engine::I_clrCruStasis, // Intrinsic071()
-	0, // Intrinsic072()
+	0, // Intrinsic072() PaletteFaderProcess::I_jumpToColor
 	PaletteFaderProcess::I_fadeFromBlack, // Intrinsic073()
 	Actor::I_isDead, // Intrinsic074()
 	Actor::I_getNpcNum, // Intrinsic075()
-	0, // Intrinsic076()
+	0, // Intrinsic076() - null intrinsic
 	UCMachine::I_true, // Actually Game::I_isViolenceEnabled
 	Item::I_unequip, // Intrinsic078()
 	Item::I_andStatus, // Intrinsic079()
@@ -187,7 +187,7 @@ Intrinsic RegretIntrinsics[] = {
 	CameraProcess::I_getCameraY, // Intrinsic090()
 	Item::I_setMapArray, // Intrinsic091()
 	Actor::I_getNpcNum, // Intrinsic092()
-	0, // Intrinsic093()
+	Item::I_shoot, // Intrinsic093()
 	CameraProcess::I_setCenterOn, // Intrinsic094()
 	Item::I_enterFastArea, // Intrinsic095()
 	Item::I_setBroken, // Intrinsic096()
@@ -199,7 +199,7 @@ Intrinsic RegretIntrinsics[] = {
 	Actor::I_clrInCombat, // Intrinsic09C()
 	PaletteFaderProcess::I_jumpToGreyScale, // Intrinsic09D()
 	PaletteFaderProcess::I_jumpToNormalPalette, // Intrinsic09E()
-	0, // Intrinsic09F(), same as Int05F in Remorse
+	CruStatusGump::I_showStatusGump, // Intrinsic09F(), same as Int05F in Remorse
 	// 00A0
 	Item::I_andStatus, // Intrinsic0A0()
 	Egg::I_getUnkEggType, // Intrinsic0A1()
@@ -267,7 +267,7 @@ Intrinsic RegretIntrinsics[] = {
 	Item::I_getQLo, // Intrinsic0DC()
 	Item::I_getQHi, // Intrinsic0DD()
 	Actor::I_getNpcNum, // Intrinsic0DE()
-	0, // Intrinsic0DF()
+	0, // Intrinsic0DF() Item::I_setField0x81
 	// 00E0
 	Item::I_hurl, // Intrinsic0E0()
 	Actor::I_setDead, // Intrinsic0E1()
@@ -355,13 +355,13 @@ Intrinsic RegretIntrinsics[] = {
 	Item::I_andStatus, // Intrinsic12F()
 	// 0130
 	Actor::I_getNpcNum, // Intrinsic130()
-	0, // Intrinsic131() - same as Intrinsic 116 in No Remorse
+	Item::I_fireDistance, // Intrinsic131() - same as Intrinsic 116 in No Remorse
 	Item::I_andStatus, // Intrinsic132()
 	Item::I_hurl, // Intrinsic133()
 	Item::I_andStatus, // Intrinsic134()
 	CameraProcess::I_getCameraY, // Intrinsic135()
 	CameraProcess::I_getCameraZ, // Intrinsic136()
-	0, // Intrinsic137(), same as Int05D in Remorse
+	CruStatusGump::I_hideStatusGump, // Intrinsic137(), same as Int05D in Remorse
 	Actor::I_clrInCombat, // Intrinsic138()
 	Item::I_getTypeFlag, // Intrinsic139()
 	Actor::I_getNpcNum, // Intrinsic13A()
@@ -376,7 +376,7 @@ Intrinsic RegretIntrinsics[] = {
 	PaletteFaderProcess::I_fadeToGivenColor, // Intrinsic142()
 	Actor::I_isDead, // Intrinsic143()
 	Actor::I_setDead, // Intrinsic144()
-	0, // Intrinsic145()
+	0, // Intrinsic145() - I_maybeShowCredits
 	PaletteFaderProcess::I_jumpToAllGrey, // Intrinsic146()
 	Item::I_getFamilyOfType, // Intrinsic147()
 	Actor::I_getNpcNum, // Intrinsic148()
@@ -389,7 +389,7 @@ Intrinsic RegretIntrinsics[] = {
 	Egg::I_getEggXRange, // Intrinsic14F()
 	// 0150
 	Actor::I_clrInCombat, // Intrinsic150()
-	0, // Intrinsic151()
+	0, // Intrinsic151() PaletteFaderProcess::I_jumpToColor
 	Item::I_setFrame, // Intrinsic152()
 	UCMachine::I_numToStr, // Intrinsic153()
 	Actor::I_getDir, // Intrinsic154()
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index 3753e5e91a..7fd2df1857 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -2694,6 +2694,17 @@ uint32 Item::I_getUnkEggType(const uint8 *args, unsigned int /*argsize*/) {
 	}
 }
 
+uint32 Item::I_setUnkEggType(const uint8 *args, unsigned int /*argsize*/) {
+	ARG_ITEM_FROM_PTR(item);
+	ARG_UINT16(val);
+	if (!item) return 0;
+
+	if (item->getFamily() == ShapeInfo::SF_UNKEGG) {
+		item->setQuality(val);
+	}
+	return 0;
+}
+
 uint32 Item::I_getQuantity(const uint8 *args, unsigned int /*argsize*/) {
 	ARG_ITEM_FROM_PTR(item);
 	if (!item) return 0;
diff --git a/engines/ultima/ultima8/world/item.h b/engines/ultima/ultima8/world/item.h
index 41b0a13087..42268561e1 100644
--- a/engines/ultima/ultima8/world/item.h
+++ b/engines/ultima/ultima8/world/item.h
@@ -515,6 +515,7 @@ public:
 	INTRINSIC(I_setFrame);
 	INTRINSIC(I_getQuality);
 	INTRINSIC(I_getUnkEggType);
+	INTRINSIC(I_setUnkEggType);
 	INTRINSIC(I_getQuantity);
 	INTRINSIC(I_getContainer);
 	INTRINSIC(I_getRootContainer);




More information about the Scummvm-git-logs mailing list