aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorathrxx2011-12-17 22:55:19 +0100
committerJohannes Schickel2011-12-26 16:18:17 +0100
commitd807b3d42b4a49dfe8262f496f9b341aef3c8bdd (patch)
treec1407b7c107b06a084f1135d9863a6bd0e635faf
parentc0e782fd0b2ba9de69563e8bcb4fb43e2f311b35 (diff)
downloadscummvm-rg350-d807b3d42b4a49dfe8262f496f9b341aef3c8bdd.tar.gz
scummvm-rg350-d807b3d42b4a49dfe8262f496f9b341aef3c8bdd.tar.bz2
scummvm-rg350-d807b3d42b4a49dfe8262f496f9b341aef3c8bdd.zip
KYRA: (EOB) - implement EOB1 party transfer
-rw-r--r--devtools/create_kyradat/create_kyradat.cpp314
-rw-r--r--devtools/create_kyradat/create_kyradat.h154
-rw-r--r--devtools/create_kyradat/extract.cpp8
-rw-r--r--devtools/create_kyradat/games.cpp158
-rw-r--r--devtools/create_kyradat/tables.cpp210
-rw-r--r--dists/engine-data/kyra.datbin465243 -> 465809 bytes
-rw-r--r--engines/kyra/chargen.cpp412
-rw-r--r--engines/kyra/eobcommon.cpp5
-rw-r--r--engines/kyra/eobcommon.h3
-rw-r--r--engines/kyra/gui_eob.cpp104
-rw-r--r--engines/kyra/gui_eob.h3
-rw-r--r--engines/kyra/items_eob.cpp2
-rw-r--r--engines/kyra/resource.h6
-rw-r--r--engines/kyra/saveload_eob.cpp68
-rw-r--r--engines/kyra/staticres_eob.cpp11
15 files changed, 957 insertions, 501 deletions
diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index 207385ef4f..13f9711d5c 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -298,7 +298,7 @@ const ExtractFilename extractFilenames[] = {
{ kEoBBaseNumSpellsWisAdj, kTypeRawData, false },
{ kEoBBaseNumSpellsPal, kTypeRawData, false },
{ kEoBBaseNumSpellsMage, kTypeRawData, false },
-
+
{ kEoBBaseCharGuiStringsHp, kTypeStringList, true },
{ kEoBBaseCharGuiStringsWp1, kTypeStringList, true },
{ kEoBBaseCharGuiStringsWp2, kTypeStringList, true },
@@ -380,7 +380,7 @@ const ExtractFilename extractFilenames[] = {
{ kEoBBaseMagicStrings6, kTypeStringList, true },
{ kEoBBaseMagicStrings7, kTypeStringList, true },
{ kEoBBaseMagicStrings8, kTypeStringList, true },
-
+
{ kEoBBaseExpObjectTlMode, kTypeRawData, false },
{ kEoBBaseExpObjectTblIndex, kTypeRawData, false },
{ kEoBBaseExpObjectShpStart, kTypeRawData, false },
@@ -463,89 +463,95 @@ const ExtractFilename extractFilenames[] = {
// EYE OF THE BEHOLDER II
{ kEoB2MainMenuStrings, kTypeStringList, true },
+
+ { kEoB2TransferPortraitFrames, kLoLTypeRaw16, false },
{ kEoB2TransferConvertTable, kTypeRawData, false },
+ { kEoB2TransferItemTable, kTypeRawData, false },
{ kEoB2TransferExpTable, kLoLTypeRaw32, false },
+ { kEoB2TransferStrings1, kTypeStringList, true },
+ { kEoB2TransferStrings2, kTypeStringList, true },
+ { kEoB2TransferLabels, kTypeStringList, true },
{ kEoB2IntroStrings, k2TypeSfxList, true },
{ kEoB2IntroCPSFiles, kTypeStringList, true },
{ kEoB2IntroSeqData00, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData01, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData02, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData03, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData04, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData05, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData06, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData07, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData08, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData09, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData10, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData11, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData12, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData13, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData14, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData15, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData16, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData17, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData18, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData19, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData20, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData21, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData22, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData23, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData24, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData25, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData26, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData27, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData28, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData29, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData30, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData31, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData32, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData33, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData34, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData35, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData36, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData37, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData38, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData39, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData40, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData41, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData42, kEoB2TypeSeqData, false },
- { kEoB2IntroSeqData43, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData01, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData02, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData03, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData04, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData05, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData06, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData07, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData08, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData09, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData10, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData11, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData12, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData13, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData14, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData15, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData16, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData17, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData18, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData19, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData20, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData21, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData22, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData23, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData24, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData25, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData26, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData27, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData28, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData29, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData30, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData31, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData32, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData33, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData34, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData35, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData36, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData37, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData38, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData39, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData40, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData41, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData42, kEoB2TypeSeqData, false },
+ { kEoB2IntroSeqData43, kEoB2TypeSeqData, false },
{ kEoB2IntroShapes00, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes01, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes04, kEoB2TypeShapeData, false },
- { kEoB2IntroShapes07, kEoB2TypeShapeData, false },
+ { kEoB2IntroShapes01, kEoB2TypeShapeData, false },
+ { kEoB2IntroShapes04, kEoB2TypeShapeData, false },
+ { kEoB2IntroShapes07, kEoB2TypeShapeData, false },
{ kEoB2FinaleStrings, k2TypeSfxList, true },
{ kEoB2CreditsData, kTypeRawData, true },
{ kEoB2FinaleCPSFiles, kTypeStringList, true },
{ kEoB2FinaleSeqData00, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData01, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData02, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData03, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData04, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData05, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData06, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData07, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData08, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData09, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData10, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData11, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData12, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData13, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData14, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData15, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData16, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData17, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData18, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData19, kEoB2TypeSeqData, false },
- { kEoB2FinaleSeqData20, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData01, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData02, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData03, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData04, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData05, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData06, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData07, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData08, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData09, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData10, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData11, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData12, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData13, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData14, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData15, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData16, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData17, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData18, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData19, kEoB2TypeSeqData, false },
+ { kEoB2FinaleSeqData20, kEoB2TypeSeqData, false },
{ kEoB2FinaleShapes00, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes03, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes07, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes09, kEoB2TypeShapeData, false },
- { kEoB2FinaleShapes10, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes03, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes07, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes09, kEoB2TypeShapeData, false },
+ { kEoB2FinaleShapes10, kEoB2TypeShapeData, false },
{ kEoB2NpcShapeData, kTypeRawData, false },
{ kEoBBaseClassModifierFlags, kTypeRawData, false },
{ kEoBBaseMonsterStepTable01, kTypeRawData, false },
@@ -579,7 +585,7 @@ const ExtractFilename extractFilenames[] = {
{ kEoB2WallOfForceNumW, kTypeRawData, false },
{ kEoB2WallOfForceNumH, kTypeRawData, false },
{ kEoB2WallOfForceShpId, kTypeRawData, false },
-
+
// LANDS OF LORE
// Ingame
@@ -1434,7 +1440,7 @@ const char *getIdString(const int id) {
case kEoBBaseOkStrings:
return "kEoBBaseOkStrings";
case kEoBBaseNpcJoinStrings:
- return "kEoBBaseNpcJoinStrings";
+ return "kEoBBaseNpcJoinStrings";
case kEoBBaseCancelStrings:
return "kEoBBaseCancelStrings";
case kEoBBaseAbortStrings:
@@ -1782,167 +1788,177 @@ const char *getIdString(const int id) {
return "kEoB1Npc7Strings";
case kEoB2MainMenuStrings:
return "kEoB2MainMenuStrings";
+ case kEoB2TransferPortraitFrames:
+ return "kEoB2TransferPortraitFrames";
case kEoB2TransferConvertTable:
return "kEoB2TransferConvertTable";
+ case kEoB2TransferItemTable:
+ return "kEoB2TransferItemTable";
case kEoB2TransferExpTable:
return "kEoB2TransferExpTable";
+ case kEoB2TransferStrings1:
+ return "kEoB2TransferStrings1";
+ case kEoB2TransferStrings2:
+ return "kEoB2TransferStrings2";
+ case kEoB2TransferLabels:
+ return "kEoB2TransferLabels";
case kEoB2IntroStrings:
return "kEoB2IntroStrings";
case kEoB2IntroCPSFiles:
return "kEoB2IntroCPSFiles";
case kEoB2IntroSeqData00:
return "kEoB2IntroSeqData00";
- case kEoB2IntroSeqData01:
+ case kEoB2IntroSeqData01:
return "kEoB2IntroSeqData01";
- case kEoB2IntroSeqData02:
+ case kEoB2IntroSeqData02:
return "kEoB2IntroSeqData02";
- case kEoB2IntroSeqData03:
+ case kEoB2IntroSeqData03:
return "kEoB2IntroSeqData03";
- case kEoB2IntroSeqData04:
+ case kEoB2IntroSeqData04:
return "kEoB2IntroSeqData04";
- case kEoB2IntroSeqData05:
+ case kEoB2IntroSeqData05:
return "kEoB2IntroSeqData05";
- case kEoB2IntroSeqData06:
+ case kEoB2IntroSeqData06:
return "kEoB2IntroSeqData06";
- case kEoB2IntroSeqData07:
+ case kEoB2IntroSeqData07:
return "kEoB2IntroSeqData07";
- case kEoB2IntroSeqData08:
+ case kEoB2IntroSeqData08:
return "kEoB2IntroSeqData08";
- case kEoB2IntroSeqData09:
+ case kEoB2IntroSeqData09:
return "kEoB2IntroSeqData09";
- case kEoB2IntroSeqData10:
+ case kEoB2IntroSeqData10:
return "kEoB2IntroSeqData10";
- case kEoB2IntroSeqData11:
+ case kEoB2IntroSeqData11:
return "kEoB2IntroSeqData11";
- case kEoB2IntroSeqData12:
+ case kEoB2IntroSeqData12:
return "kEoB2IntroSeqData12";
- case kEoB2IntroSeqData13:
+ case kEoB2IntroSeqData13:
return "kEoB2IntroSeqData13";
- case kEoB2IntroSeqData14:
+ case kEoB2IntroSeqData14:
return "kEoB2IntroSeqData14";
- case kEoB2IntroSeqData15:
+ case kEoB2IntroSeqData15:
return "kEoB2IntroSeqData15";
- case kEoB2IntroSeqData16:
+ case kEoB2IntroSeqData16:
return "kEoB2IntroSeqData16";
- case kEoB2IntroSeqData17:
+ case kEoB2IntroSeqData17:
return "kEoB2IntroSeqData17";
- case kEoB2IntroSeqData18:
+ case kEoB2IntroSeqData18:
return "kEoB2IntroSeqData18";
- case kEoB2IntroSeqData19:
+ case kEoB2IntroSeqData19:
return "kEoB2IntroSeqData19";
- case kEoB2IntroSeqData20:
+ case kEoB2IntroSeqData20:
return "kEoB2IntroSeqData20";
- case kEoB2IntroSeqData21:
+ case kEoB2IntroSeqData21:
return "kEoB2IntroSeqData21";
- case kEoB2IntroSeqData22:
+ case kEoB2IntroSeqData22:
return "kEoB2IntroSeqData22";
- case kEoB2IntroSeqData23:
+ case kEoB2IntroSeqData23:
return "kEoB2IntroSeqData23";
- case kEoB2IntroSeqData24:
+ case kEoB2IntroSeqData24:
return "kEoB2IntroSeqData24";
- case kEoB2IntroSeqData25:
+ case kEoB2IntroSeqData25:
return "kEoB2IntroSeqData25";
- case kEoB2IntroSeqData26:
+ case kEoB2IntroSeqData26:
return "kEoB2IntroSeqData26";
- case kEoB2IntroSeqData27:
+ case kEoB2IntroSeqData27:
return "kEoB2IntroSeqData27";
- case kEoB2IntroSeqData28:
+ case kEoB2IntroSeqData28:
return "kEoB2IntroSeqData28";
- case kEoB2IntroSeqData29:
+ case kEoB2IntroSeqData29:
return "kEoB2IntroSeqData29";
- case kEoB2IntroSeqData30:
+ case kEoB2IntroSeqData30:
return "kEoB2IntroSeqData30";
- case kEoB2IntroSeqData31:
+ case kEoB2IntroSeqData31:
return "kEoB2IntroSeqData31";
- case kEoB2IntroSeqData32:
+ case kEoB2IntroSeqData32:
return "kEoB2IntroSeqData32";
- case kEoB2IntroSeqData33:
+ case kEoB2IntroSeqData33:
return "kEoB2IntroSeqData33";
- case kEoB2IntroSeqData34:
+ case kEoB2IntroSeqData34:
return "kEoB2IntroSeqData34";
- case kEoB2IntroSeqData35:
+ case kEoB2IntroSeqData35:
return "kEoB2IntroSeqData35";
- case kEoB2IntroSeqData36:
+ case kEoB2IntroSeqData36:
return "kEoB2IntroSeqData36";
- case kEoB2IntroSeqData37:
+ case kEoB2IntroSeqData37:
return "kEoB2IntroSeqData37";
- case kEoB2IntroSeqData38:
+ case kEoB2IntroSeqData38:
return "kEoB2IntroSeqData38";
- case kEoB2IntroSeqData39:
+ case kEoB2IntroSeqData39:
return "kEoB2IntroSeqData39";
- case kEoB2IntroSeqData40:
+ case kEoB2IntroSeqData40:
return "kEoB2IntroSeqData40";
- case kEoB2IntroSeqData41:
+ case kEoB2IntroSeqData41:
return "kEoB2IntroSeqData41";
- case kEoB2IntroSeqData42:
+ case kEoB2IntroSeqData42:
return "kEoB2IntroSeqData42";
- case kEoB2IntroSeqData43:
+ case kEoB2IntroSeqData43:
return "kEoB2IntroSeqData43";
- case kEoB2IntroShapes00:
+ case kEoB2IntroShapes00:
return "kEoB2IntroShapes00";
- case kEoB2IntroShapes01:
+ case kEoB2IntroShapes01:
return "kEoB2IntroShapes01";
- case kEoB2IntroShapes04:
+ case kEoB2IntroShapes04:
return "kEoB2IntroShapes04";
- case kEoB2IntroShapes07:
+ case kEoB2IntroShapes07:
return "kEoB2IntroShapes07";
case kEoB2FinaleStrings:
return "kEoB2FinaleStrings";
case kEoB2CreditsData:
return "kEoB2CreditsData";
case kEoB2FinaleCPSFiles:
- return "kEoB2FinaleCPSFiles";
- case kEoB2FinaleSeqData00:
+ return "kEoB2FinaleCPSFiles";
+ case kEoB2FinaleSeqData00:
return "kEoB2FinaleSeqData00";
- case kEoB2FinaleSeqData01:
+ case kEoB2FinaleSeqData01:
return "kEoB2FinaleSeqData01";
- case kEoB2FinaleSeqData02:
+ case kEoB2FinaleSeqData02:
return "kEoB2FinaleSeqData02";
- case kEoB2FinaleSeqData03:
+ case kEoB2FinaleSeqData03:
return "kEoB2FinaleSeqData03";
- case kEoB2FinaleSeqData04:
+ case kEoB2FinaleSeqData04:
return "kEoB2FinaleSeqData04";
- case kEoB2FinaleSeqData05:
+ case kEoB2FinaleSeqData05:
return "kEoB2FinaleSeqData05";
- case kEoB2FinaleSeqData06:
+ case kEoB2FinaleSeqData06:
return "kEoB2FinaleSeqData06";
- case kEoB2FinaleSeqData07:
+ case kEoB2FinaleSeqData07:
return "kEoB2FinaleSeqData07";
- case kEoB2FinaleSeqData08:
+ case kEoB2FinaleSeqData08:
return "kEoB2FinaleSeqData08";
- case kEoB2FinaleSeqData09:
+ case kEoB2FinaleSeqData09:
return "kEoB2FinaleSeqData09";
- case kEoB2FinaleSeqData10:
+ case kEoB2FinaleSeqData10:
return "kEoB2FinaleSeqData10";
- case kEoB2FinaleSeqData11:
+ case kEoB2FinaleSeqData11:
return "kEoB2FinaleSeqData11";
- case kEoB2FinaleSeqData12:
+ case kEoB2FinaleSeqData12:
return "kEoB2FinaleSeqData12";
- case kEoB2FinaleSeqData13:
+ case kEoB2FinaleSeqData13:
return "kEoB2FinaleSeqData13";
- case kEoB2FinaleSeqData14:
+ case kEoB2FinaleSeqData14:
return "kEoB2FinaleSeqData14";
- case kEoB2FinaleSeqData15:
+ case kEoB2FinaleSeqData15:
return "kEoB2FinaleSeqData15";
- case kEoB2FinaleSeqData16:
+ case kEoB2FinaleSeqData16:
return "kEoB2FinaleSeqData16";
- case kEoB2FinaleSeqData17:
+ case kEoB2FinaleSeqData17:
return "kEoB2FinaleSeqData17";
- case kEoB2FinaleSeqData18:
+ case kEoB2FinaleSeqData18:
return "kEoB2FinaleSeqData18";
- case kEoB2FinaleSeqData19:
+ case kEoB2FinaleSeqData19:
return "kEoB2FinaleSeqData19";
- case kEoB2FinaleSeqData20:
- return "kEoB2FinaleSeqData20";
- case kEoB2FinaleShapes00:
+ case kEoB2FinaleSeqData20:
+ return "kEoB2FinaleSeqData20";
+ case kEoB2FinaleShapes00:
return "kEoB2FinaleShapes00";
- case kEoB2FinaleShapes03:
+ case kEoB2FinaleShapes03:
return "kEoB2FinaleShapes03";
- case kEoB2FinaleShapes07:
+ case kEoB2FinaleShapes07:
return "kEoB2FinaleShapes07";
- case kEoB2FinaleShapes09:
+ case kEoB2FinaleShapes09:
return "kEoB2FinaleShapes09";
- case kEoB2FinaleShapes10:
+ case kEoB2FinaleShapes10:
return "kEoB2FinaleShapes10";
case kEoB2NpcShapeData:
return "kEoB2NpcShapeData";
diff --git a/devtools/create_kyradat/create_kyradat.h b/devtools/create_kyradat/create_kyradat.h
index 271ffb5283..3de785d603 100644
--- a/devtools/create_kyradat/create_kyradat.h
+++ b/devtools/create_kyradat/create_kyradat.h
@@ -218,7 +218,7 @@ enum kExtractID {
kEoBBaseItemSuffixStringsRings,
kEoBBaseItemSuffixStringsPotions,
kEoBBaseItemSuffixStringsWands,
-
+
kEoBBaseRipItemStrings,
kEoBBaseCursedString,
kEoBBaseEnchantedString,
@@ -233,7 +233,7 @@ enum kExtractID {
kEoBBasePotionStrings,
kEoBBaseWandString,
kEoBBaseItemMisuseStrings,
-
+
kEoBBaseTakenStrings,
kEoBBasePotionEffectStrings,
@@ -363,7 +363,7 @@ enum kExtractID {
kEoBBaseFlightObjSclIndex,
kEoBBaseDscTelptrShpCoords,
-
+
kEoBBasePortalSeqData,
kEoBBaseManDef,
kEoBBaseManWord,
@@ -463,89 +463,95 @@ enum kExtractID {
kEoB1Npc7Strings,
kEoB2MainMenuStrings,
+
+ kEoB2TransferPortraitFrames,
kEoB2TransferConvertTable,
+ kEoB2TransferItemTable,
kEoB2TransferExpTable,
+ kEoB2TransferStrings1,
+ kEoB2TransferStrings2,
+ kEoB2TransferLabels,
kEoB2IntroStrings,
kEoB2IntroCPSFiles,
kEoB2IntroSeqData00,
- kEoB2IntroSeqData01,
- kEoB2IntroSeqData02,
- kEoB2IntroSeqData03,
- kEoB2IntroSeqData04,
- kEoB2IntroSeqData05,
- kEoB2IntroSeqData06,
- kEoB2IntroSeqData07,
- kEoB2IntroSeqData08,
- kEoB2IntroSeqData09,
- kEoB2IntroSeqData10,
- kEoB2IntroSeqData11,
- kEoB2IntroSeqData12,
- kEoB2IntroSeqData13,
- kEoB2IntroSeqData14,
- kEoB2IntroSeqData15,
- kEoB2IntroSeqData16,
- kEoB2IntroSeqData17,
- kEoB2IntroSeqData18,
- kEoB2IntroSeqData19,
- kEoB2IntroSeqData20,
- kEoB2IntroSeqData21,
- kEoB2IntroSeqData22,
- kEoB2IntroSeqData23,
- kEoB2IntroSeqData24,
- kEoB2IntroSeqData25,
- kEoB2IntroSeqData26,
- kEoB2IntroSeqData27,
- kEoB2IntroSeqData28,
- kEoB2IntroSeqData29,
- kEoB2IntroSeqData30,
- kEoB2IntroSeqData31,
- kEoB2IntroSeqData32,
- kEoB2IntroSeqData33,
- kEoB2IntroSeqData34,
- kEoB2IntroSeqData35,
- kEoB2IntroSeqData36,
- kEoB2IntroSeqData37,
- kEoB2IntroSeqData38,
- kEoB2IntroSeqData39,
- kEoB2IntroSeqData40,
- kEoB2IntroSeqData41,
- kEoB2IntroSeqData42,
- kEoB2IntroSeqData43,
+ kEoB2IntroSeqData01,
+ kEoB2IntroSeqData02,
+ kEoB2IntroSeqData03,
+ kEoB2IntroSeqData04,
+ kEoB2IntroSeqData05,
+ kEoB2IntroSeqData06,
+ kEoB2IntroSeqData07,
+ kEoB2IntroSeqData08,
+ kEoB2IntroSeqData09,
+ kEoB2IntroSeqData10,
+ kEoB2IntroSeqData11,
+ kEoB2IntroSeqData12,
+ kEoB2IntroSeqData13,
+ kEoB2IntroSeqData14,
+ kEoB2IntroSeqData15,
+ kEoB2IntroSeqData16,
+ kEoB2IntroSeqData17,
+ kEoB2IntroSeqData18,
+ kEoB2IntroSeqData19,
+ kEoB2IntroSeqData20,
+ kEoB2IntroSeqData21,
+ kEoB2IntroSeqData22,
+ kEoB2IntroSeqData23,
+ kEoB2IntroSeqData24,
+ kEoB2IntroSeqData25,
+ kEoB2IntroSeqData26,
+ kEoB2IntroSeqData27,
+ kEoB2IntroSeqData28,
+ kEoB2IntroSeqData29,
+ kEoB2IntroSeqData30,
+ kEoB2IntroSeqData31,
+ kEoB2IntroSeqData32,
+ kEoB2IntroSeqData33,
+ kEoB2IntroSeqData34,
+ kEoB2IntroSeqData35,
+ kEoB2IntroSeqData36,
+ kEoB2IntroSeqData37,
+ kEoB2IntroSeqData38,
+ kEoB2IntroSeqData39,
+ kEoB2IntroSeqData40,
+ kEoB2IntroSeqData41,
+ kEoB2IntroSeqData42,
+ kEoB2IntroSeqData43,
kEoB2IntroShapes00,
- kEoB2IntroShapes01,
- kEoB2IntroShapes04,
- kEoB2IntroShapes07,
+ kEoB2IntroShapes01,
+ kEoB2IntroShapes04,
+ kEoB2IntroShapes07,
kEoB2FinaleStrings,
kEoB2CreditsData,
kEoB2FinaleCPSFiles,
kEoB2FinaleSeqData00,
- kEoB2FinaleSeqData01,
- kEoB2FinaleSeqData02,
- kEoB2FinaleSeqData03,
- kEoB2FinaleSeqData04,
- kEoB2FinaleSeqData05,
- kEoB2FinaleSeqData06,
- kEoB2FinaleSeqData07,
- kEoB2FinaleSeqData08,
- kEoB2FinaleSeqData09,
- kEoB2FinaleSeqData10,
- kEoB2FinaleSeqData11,
- kEoB2FinaleSeqData12,
- kEoB2FinaleSeqData13,
- kEoB2FinaleSeqData14,
- kEoB2FinaleSeqData15,
- kEoB2FinaleSeqData16,
- kEoB2FinaleSeqData17,
- kEoB2FinaleSeqData18,
- kEoB2FinaleSeqData19,
- kEoB2FinaleSeqData20,
+ kEoB2FinaleSeqData01,
+ kEoB2FinaleSeqData02,
+ kEoB2FinaleSeqData03,
+ kEoB2FinaleSeqData04,
+ kEoB2FinaleSeqData05,
+ kEoB2FinaleSeqData06,
+ kEoB2FinaleSeqData07,
+ kEoB2FinaleSeqData08,
+ kEoB2FinaleSeqData09,
+ kEoB2FinaleSeqData10,
+ kEoB2FinaleSeqData11,
+ kEoB2FinaleSeqData12,
+ kEoB2FinaleSeqData13,
+ kEoB2FinaleSeqData14,
+ kEoB2FinaleSeqData15,
+ kEoB2FinaleSeqData16,
+ kEoB2FinaleSeqData17,
+ kEoB2FinaleSeqData18,
+ kEoB2FinaleSeqData19,
+ kEoB2FinaleSeqData20,
kEoB2FinaleShapes00,
- kEoB2FinaleShapes03,
- kEoB2FinaleShapes07,
- kEoB2FinaleShapes09,
- kEoB2FinaleShapes10,
+ kEoB2FinaleShapes03,
+ kEoB2FinaleShapes07,
+ kEoB2FinaleShapes09,
+ kEoB2FinaleShapes10,
kEoB2NpcShapeData,
kEoB2Npc1Strings,
@@ -606,7 +612,7 @@ enum kExtractID {
kLoLDscDoor4,
kLoLDscDoorX,
kLoLDscDoorY,
- kLoLDscOvlIndex,
+ kLoLDscOvlIndex,
kLoLScrollXTop,
kLoLScrollYTop,
diff --git a/devtools/create_kyradat/extract.cpp b/devtools/create_kyradat/extract.cpp
index 6a97114f6c..420b661384 100644
--- a/devtools/create_kyradat/extract.cpp
+++ b/devtools/create_kyradat/extract.cpp
@@ -394,7 +394,7 @@ bool extractStrings(PAKFile &out, const ExtractInformation *info, const byte *da
}
}
}
-
+
} while (input < c);
} else {
uint32 copySize = size;
@@ -1084,10 +1084,10 @@ bool extractEoB2ShapeData(PAKFile &out, const ExtractInformation *info, const by
bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte *data, const uint32 size, const char *filename, int id) {
// We use one extraction routine for both EOB 1 and EOB 2 (in spite of the data format differences)
// since it is easy enough to generate a common output usable by both engines
-
+
uint8 *buffer = 0;
uint32 outsize = 0;
-
+
if (info->game == kEoB1) {
uint16 num = size / 243;
outsize = num * 111 + 2;
@@ -1120,7 +1120,7 @@ bool extractEoBNpcData(PAKFile &out, const ExtractInformation *info, const byte
for (int ii = 0; ii < 27; ii++) {
WRITE_BE_UINT16(dst, READ_LE_UINT16(src));
src += 2; dst += 2;
- }
+ }
// skipping more zero space
src += 70;
}
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index b3c855aafc..74f85177b4 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -1110,7 +1110,7 @@ const int eob1FloppyNeed[] = {
kEoBBaseItemSuffixStringsRings,
kEoBBaseItemSuffixStringsPotions,
kEoBBaseItemSuffixStringsWands,
-
+
kEoBBaseRipItemStrings,
kEoBBaseCursedString,
kEoBBaseEnchantedString,
@@ -1159,7 +1159,7 @@ const int eob1FloppyNeed[] = {
kEoBBaseNumSpellsWisAdj,
kEoBBaseNumSpellsPal,
kEoBBaseNumSpellsMage,
-
+
kEoBBaseCharGuiStringsHp,
kEoBBaseCharGuiStringsWp1,
kEoBBaseCharGuiStringsWr,
@@ -1268,11 +1268,11 @@ const int eob1FloppyNeed[] = {
kRpgCommonDscShapeIndex,
kRpgCommonDscX,
kRpgCommonDscTileIndex,
- kRpgCommonDscUnk2,
+ kRpgCommonDscUnk2,
kRpgCommonDscDimData1,
kRpgCommonDscDimData2,
kRpgCommonDscBlockMap,
- kRpgCommonDscDimMap,
+ kRpgCommonDscDimMap,
kRpgCommonDscBlockIndex,
kEoBBaseClassModifierFlags,
@@ -1485,90 +1485,96 @@ const int eob2FloppyNeed[] = {
kEoBBaseFlightObjSclIndex,
kEoB2MainMenuStrings,
+
+ kEoB2TransferPortraitFrames,
kEoB2TransferConvertTable,
+ kEoB2TransferItemTable,
kEoB2TransferExpTable,
+ kEoB2TransferStrings1,
+ kEoB2TransferStrings2,
+ kEoB2TransferLabels,
kEoB2IntroStrings,
kEoB2IntroCPSFiles,
kEoB2IntroSeqData00,
- kEoB2IntroSeqData01,
- kEoB2IntroSeqData02,
- kEoB2IntroSeqData03,
- kEoB2IntroSeqData04,
- kEoB2IntroSeqData05,
- kEoB2IntroSeqData06,
- kEoB2IntroSeqData07,
- kEoB2IntroSeqData08,
- kEoB2IntroSeqData09,
- kEoB2IntroSeqData10,
- kEoB2IntroSeqData11,
- kEoB2IntroSeqData12,
- kEoB2IntroSeqData13,
- kEoB2IntroSeqData14,
- kEoB2IntroSeqData15,
- kEoB2IntroSeqData16,
- kEoB2IntroSeqData17,
- kEoB2IntroSeqData18,
- kEoB2IntroSeqData19,
- kEoB2IntroSeqData20,
- kEoB2IntroSeqData21,
- kEoB2IntroSeqData22,
- kEoB2IntroSeqData23,
- kEoB2IntroSeqData24,
- kEoB2IntroSeqData25,
- kEoB2IntroSeqData26,
- kEoB2IntroSeqData27,
- kEoB2IntroSeqData28,
- kEoB2IntroSeqData29,
- kEoB2IntroSeqData30,
- kEoB2IntroSeqData31,
- kEoB2IntroSeqData32,
- kEoB2IntroSeqData33,
- kEoB2IntroSeqData34,
- kEoB2IntroSeqData35,
- kEoB2IntroSeqData36,
- kEoB2IntroSeqData37,
- kEoB2IntroSeqData38,
- kEoB2IntroSeqData39,
- kEoB2IntroSeqData40,
- kEoB2IntroSeqData41,
- kEoB2IntroSeqData42,
- kEoB2IntroSeqData43,
+ kEoB2IntroSeqData01,
+ kEoB2IntroSeqData02,
+ kEoB2IntroSeqData03,
+ kEoB2IntroSeqData04,
+ kEoB2IntroSeqData05,
+ kEoB2IntroSeqData06,
+ kEoB2IntroSeqData07,
+ kEoB2IntroSeqData08,
+ kEoB2IntroSeqData09,
+ kEoB2IntroSeqData10,
+ kEoB2IntroSeqData11,
+ kEoB2IntroSeqData12,
+ kEoB2IntroSeqData13,
+ kEoB2IntroSeqData14,
+ kEoB2IntroSeqData15,
+ kEoB2IntroSeqData16,
+ kEoB2IntroSeqData17,
+ kEoB2IntroSeqData18,
+ kEoB2IntroSeqData19,
+ kEoB2IntroSeqData20,
+ kEoB2IntroSeqData21,
+ kEoB2IntroSeqData22,
+ kEoB2IntroSeqData23,
+ kEoB2IntroSeqData24,
+ kEoB2IntroSeqData25,
+ kEoB2IntroSeqData26,
+ kEoB2IntroSeqData27,
+ kEoB2IntroSeqData28,
+ kEoB2IntroSeqData29,
+ kEoB2IntroSeqData30,
+ kEoB2IntroSeqData31,
+ kEoB2IntroSeqData32,
+ kEoB2IntroSeqData33,
+ kEoB2IntroSeqData34,
+ kEoB2IntroSeqData35,
+ kEoB2IntroSeqData36,
+ kEoB2IntroSeqData37,
+ kEoB2IntroSeqData38,
+ kEoB2IntroSeqData39,
+ kEoB2IntroSeqData40,
+ kEoB2IntroSeqData41,
+ kEoB2IntroSeqData42,
+ kEoB2IntroSeqData43,
kEoB2IntroShapes00,
- kEoB2IntroShapes01,
- kEoB2IntroShapes04,
- kEoB2IntroShapes07,
+ kEoB2IntroShapes01,
+ kEoB2IntroShapes04,
+ kEoB2IntroShapes07,
kEoB2FinaleStrings,
kEoB2CreditsData,
kEoB2FinaleCPSFiles,
kEoB2FinaleSeqData00,
- kEoB2FinaleSeqData01,
- kEoB2FinaleSeqData02,
- kEoB2FinaleSeqData03,
- kEoB2FinaleSeqData04,
- kEoB2FinaleSeqData05,
- kEoB2FinaleSeqData06,
- kEoB2FinaleSeqData07,
- kEoB2FinaleSeqData08,
- kEoB2FinaleSeqData09,
- kEoB2FinaleSeqData10,
- kEoB2FinaleSeqData11,
- kEoB2FinaleSeqData12,
- kEoB2FinaleSeqData13,
- kEoB2FinaleSeqData14,
- kEoB2FinaleSeqData15,
- kEoB2FinaleSeqData16,
- kEoB2FinaleSeqData17,
- kEoB2FinaleSeqData18,
- kEoB2FinaleSeqData19,
- kEoB2FinaleSeqData20,
+ kEoB2FinaleSeqData01,
+ kEoB2FinaleSeqData02,
+ kEoB2FinaleSeqData03,
+ kEoB2FinaleSeqData04,
+ kEoB2FinaleSeqData05,
+ kEoB2FinaleSeqData06,
+ kEoB2FinaleSeqData07,
+ kEoB2FinaleSeqData08,
+ kEoB2FinaleSeqData09,
+ kEoB2FinaleSeqData10,
+ kEoB2FinaleSeqData11,
+ kEoB2FinaleSeqData12,
+ kEoB2FinaleSeqData13,
+ kEoB2FinaleSeqData14,
+ kEoB2FinaleSeqData15,
+ kEoB2FinaleSeqData16,
+ kEoB2FinaleSeqData17,
+ kEoB2FinaleSeqData18,
+ kEoB2FinaleSeqData19,
+ kEoB2FinaleSeqData20,
kEoB2FinaleShapes00,
- kEoB2FinaleShapes03,
- kEoB2FinaleShapes07,
- kEoB2FinaleShapes09,
- kEoB2FinaleShapes10,
+ kEoB2FinaleShapes03,
+ kEoB2FinaleShapes07,
+ kEoB2FinaleShapes09,
+ kEoB2FinaleShapes10,
kEoB2NpcShapeData,
kEoBBaseClassModifierFlags,
@@ -1584,7 +1590,7 @@ const int eob2FloppyNeed[] = {
kEoBBaseMonsterCloseAttChkTable2,
kEoBBaseMonsterCloseAttDstTable1,
kEoBBaseMonsterCloseAttDstTable2,
-
+
kEoBBaseMonsterProximityTable,
kEoBBaseFindBlockMonstersTable,
kEoBBaseMonsterDirChangeTable,
@@ -1611,7 +1617,7 @@ const int eob2FloppyNeed[] = {
kRpgCommonDscDimData1,
kRpgCommonDscDimData2,
kRpgCommonDscBlockMap,
- kRpgCommonDscDimMap,
+ kRpgCommonDscDimMap,
kRpgCommonDscBlockIndex,
-1
diff --git a/devtools/create_kyradat/tables.cpp b/devtools/create_kyradat/tables.cpp
index a606cc46bd..3ff10c2a26 100644
--- a/devtools/create_kyradat/tables.cpp
+++ b/devtools/create_kyradat/tables.cpp
@@ -342,9 +342,9 @@ const ExtractEntrySearchData k1PlacedStringsProvider[] = {
{ IT_ITA, kPlatformPC, { 0x0000000D, 0x0000040D, { { 0x9C, 0x71, 0x53, 0x35, 0xC3, 0xE8, 0x46, 0xB9, 0xD2, 0xFA, 0x1C, 0x8C, 0xC3, 0xFF, 0xBC, 0x1F } } } }, // floppy
{ IT_ITA, kPlatformPC, { 0x00000011, 0x000003B8, { { 0xC8, 0xA6, 0xE4, 0x8A, 0xF7, 0x4C, 0x3F, 0xA6, 0x24, 0x7F, 0xEF, 0xE4, 0x63, 0x8B, 0x72, 0xF3 } } } }, // (fan) CD
-
+
{ ES_ESP, kPlatformPC, { 0x0000000D, 0x00000439, { { 0x57, 0xAE, 0x1C, 0xC1, 0xF5, 0xE8, 0x5B, 0x9E, 0x90, 0x02, 0xB9, 0x8D, 0x86, 0x38, 0xFB, 0xA8 } } } },
-
+
{ RU_RUS, kPlatformPC, { 0x00000009, 0x00000203, { { 0x7D, 0xAE, 0x67, 0x94, 0x8E, 0x73, 0x35, 0xC1, 0x11, 0xB4, 0x55, 0x6E, 0x92, 0x25, 0x39, 0xE4 } } } },
EXTRACT_END_ENTRY
@@ -563,7 +563,7 @@ const ExtractEntrySearchData k1ThePoisonStringsProvider[] = {
{ ES_ESP, kPlatformPC, { 0x00000059, 0x00001DF7, { { 0x16, 0x7B, 0x5F, 0x91, 0x06, 0x5B, 0xFC, 0x9C, 0x88, 0x61, 0xCC, 0x1B, 0x52, 0x4F, 0x91, 0xC5 } } } },
{ RU_RUS, kPlatformPC, { 0x00000052, 0x0000136F, { { 0xEF, 0xD2, 0xA0, 0x5F, 0xD5, 0xE6, 0x77, 0x96, 0xFA, 0xC5, 0x60, 0x7C, 0xB7, 0xA8, 0x7C, 0x7A } } } },
-
+
{ EN_ANY, kPlatformAmiga, { 0x00000058, 0x00001C24, { { 0xBA, 0x1F, 0xBD, 0x5C, 0x85, 0x3D, 0x3C, 0x92, 0xD1, 0x13, 0xF3, 0x40, 0x2E, 0xBB, 0x1C, 0xE2 } } } },
{ DE_DEU, kPlatformAmiga, { 0x00000073, 0x00002690, { { 0x44, 0xAE, 0xC9, 0xFD, 0x9F, 0x8E, 0x1B, 0xDD, 0x3F, 0xE4, 0x4D, 0x4B, 0x5A, 0x13, 0xE5, 0x99 } } } },
@@ -1222,7 +1222,7 @@ const ExtractEntrySearchData k2IngamePakFilesProvider[] = {
const ExtractEntrySearchData k2IngameSfxFilesProvider[] = {
{ UNK_LANG, kPlatformPC, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
{ UNK_LANG, kPlatformFMTowns, { 0x00000967, 0x0002101A, { { 0x09, 0xC7, 0xB7, 0x2A, 0x76, 0xF1, 0x4B, 0x87, 0xC5, 0x83, 0xFF, 0xF3, 0xDB, 0x3C, 0x66, 0x60 } } } },
- { UNK_LANG, kPlatformPC98, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
+ { UNK_LANG, kPlatformPC98, { 0x000006F1, 0x0001545E, { { 0xD3, 0x8A, 0xA1, 0xD4, 0x83, 0x77, 0x96, 0x6D, 0x87, 0xB1, 0x71, 0x8F, 0x38, 0x6A, 0x34, 0xDC } } } },
EXTRACT_END_ENTRY
};
@@ -1392,7 +1392,7 @@ const ExtractEntrySearchData kEoBBaseChargenClassMinStatsProvider[] = {
};
const ExtractEntrySearchData kEoBBaseChargenRaceMinStatsProvider[] = {
- { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x000000B2, { { 0x08, 0xF0, 0x8F, 0x22, 0x9D, 0xD8, 0xBE, 0x52, 0x70, 0x7C, 0xCA, 0x8D, 0xB2, 0xF5, 0xC6, 0xB8 } } } },
+ { UNK_LANG, kPlatformUnknown, { 0x00000048, 0x000000B2, { { 0x08, 0xF0, 0x8F, 0x22, 0x9D, 0xD8, 0xBE, 0x52, 0x70, 0x7C, 0xCA, 0x8D, 0xB2, 0xF5, 0xC6, 0xB8 } } } },
EXTRACT_END_ENTRY
};
@@ -1627,7 +1627,7 @@ const ExtractEntrySearchData kEoBBaseCancelStringsProvider[] = {
};
const ExtractEntrySearchData kEoBBaseAbortStringsProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000006, 0x00000178, { { 0xDD, 0xEC, 0x68, 0x6D, 0x2E, 0x10, 0x34, 0x94, 0x46, 0x25, 0xF9, 0xAB, 0x29, 0x27, 0x32, 0xA8 } } } },
+ { EN_ANY, kPlatformUnknown, { 0x00000006, 0x00000178, { { 0xDD, 0xEC, 0x68, 0x6D, 0x2E, 0x10, 0x34, 0x94, 0x46, 0x25, 0xF9, 0xAB, 0x29, 0x27, 0x32, 0xA8 } } } },
{ DE_DEU, kPlatformUnknown, { 0x00000006, 0x00000145, { { 0x22, 0x45, 0x35, 0xC6, 0x28, 0x00, 0x22, 0xAA, 0xD1, 0x15, 0x48, 0xE6, 0xE5, 0x62, 0x73, 0x37 } } } },
EXTRACT_END_ENTRY
};
@@ -1823,7 +1823,7 @@ const ExtractEntrySearchData kEoBBaseNumSpellsMageProvider[] = {
};
const ExtractEntrySearchData kEoBBaseCharGuiStringsHpProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x00000352, { { 0x9C, 0x13, 0x3D, 0x2A, 0x68, 0x11, 0x81, 0xA4, 0x77, 0x54, 0x47, 0x43, 0xA1, 0xDA, 0x55, 0x50 } } } },
+ { EN_ANY, kPlatformUnknown, { 0x0000000F, 0x00000352, { { 0x9C, 0x13, 0x3D, 0x2A, 0x68, 0x11, 0x81, 0xA4, 0x77, 0x54, 0x47, 0x43, 0xA1, 0xDA, 0x55, 0x50 } } } },
{ DE_DEU, kPlatformUnknown, { 0x0000000E, 0x000002AC, { { 0xBB, 0xD5, 0x36, 0xB2, 0x8A, 0x60, 0x78, 0x04, 0x46, 0x2D, 0x35, 0x59, 0x3E, 0x42, 0xB9, 0x83 } } } }, // EoB 1
{ DE_DEU, kPlatformUnknown, { 0x0000000E, 0x000002B8, { { 0x77, 0x76, 0xA0, 0x38, 0xE9, 0xB6, 0x0C, 0x43, 0xFE, 0x5A, 0x51, 0xC7, 0x1B, 0x59, 0xD3, 0x63 } } } }, // EoB 2
EXTRACT_END_ENTRY
@@ -1842,7 +1842,7 @@ const ExtractEntrySearchData kEoBBaseCharGuiStringsWp2Provider[] = {
};
const ExtractEntrySearchData kEoBBaseCharGuiStringsWrProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000014, 0x00000477, { { 0xAA, 0x26, 0xD5, 0xFD, 0xE6, 0x16, 0x53, 0x19, 0x39, 0x46, 0xEB, 0xCD, 0x88, 0xEC, 0x5E, 0xCB } } } },
+ { EN_ANY, kPlatformUnknown, { 0x00000014, 0x00000477, { { 0xAA, 0x26, 0xD5, 0xFD, 0xE6, 0x16, 0x53, 0x19, 0x39, 0x46, 0xEB, 0xCD, 0x88, 0xEC, 0x5E, 0xCB } } } },
{ DE_DEU, kPlatformUnknown, { 0x00000015, 0x000004A4, { { 0x53, 0x54, 0x37, 0x35, 0x27, 0x1F, 0xB9, 0x09, 0x9C, 0xE9, 0x5E, 0x11, 0xBD, 0x8F, 0x15, 0xAE } } } }, // EoB 1
{ DE_DEU, kPlatformUnknown, { 0x00000011, 0x00000402, { { 0xE0, 0x92, 0xF4, 0x49, 0xB7, 0x74, 0xBB, 0xEB, 0x90, 0x0D, 0x75, 0x65, 0xBB, 0xF6, 0xB6, 0xE9 } } } }, // EoB 2
EXTRACT_END_ENTRY
@@ -1861,7 +1861,7 @@ const ExtractEntrySearchData kEoBBaseCharGuiStringsSt2Provider[] = {
};
const ExtractEntrySearchData kEoBBaseCharGuiStringsInProvider[] = {
- { EN_ANY, kPlatformUnknown, { 0x00000023, 0x000008CB, { { 0xF0, 0xE9, 0xF1, 0x05, 0x47, 0x3A, 0x5D, 0xCA, 0x9F, 0x75, 0x9D, 0x51, 0x9E, 0xEC, 0x9B, 0x67 } } } },
+ { EN_ANY, kPlatformUnknown, { 0x00000023, 0x000008CB, { { 0xF0, 0xE9, 0xF1, 0x05, 0x47, 0x3A, 0x5D, 0xCA, 0x9F, 0x75, 0x9D, 0x51, 0x9E, 0xEC, 0x9B, 0x67 } } } },
{ DE_DEU, kPlatformUnknown, { 0x00000020, 0x00000810, { { 0xF5, 0x39, 0x1E, 0x0E, 0x65, 0xEF, 0x09, 0xF2, 0x8D, 0x90, 0xC4, 0xF6, 0x8A, 0xED, 0xAD, 0xDF } } } }, // EoB 1
{ DE_DEU, kPlatformUnknown, { 0x00000023, 0x00000940, { { 0xAB, 0xF6, 0xE4, 0xD4, 0x07, 0x07, 0xDA, 0x92, 0x71, 0xE2, 0x73, 0x1F, 0x06, 0xE3, 0x12, 0xEB } } } }, // EoB 2
EXTRACT_END_ENTRY
@@ -2649,16 +2649,44 @@ const ExtractEntrySearchData kEoB2MainMenuStringsProvider[] = {
EXTRACT_END_ENTRY
};
+const ExtractEntrySearchData kEoB2TransferPortraitFramesProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x00000040, 0x00000B25, { { 0x13, 0x25, 0x69, 0xC6, 0xE4, 0x9D, 0x35, 0x11, 0xAB, 0xE2, 0xC1, 0xEF, 0x21, 0x8B, 0xB8, 0x28 } } } },
+ EXTRACT_END_ENTRY
+};
+
const ExtractEntrySearchData kEoB2TransferConvertTableProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000031, 0x000004BC, { { 0x96, 0x53, 0xA2, 0xF1, 0x26, 0xFE, 0x1B, 0x5E, 0xDF, 0x62, 0x2C, 0x8C, 0xBD, 0x62, 0x5A, 0xF9 } } } },
EXTRACT_END_ENTRY
};
+const ExtractEntrySearchData kEoB2TransferItemTableProvider[] = {
+ { UNK_LANG, kPlatformUnknown, { 0x0000003C, 0x00000025, { { 0xD0, 0xA4, 0xB3, 0x7D, 0x74, 0x4D, 0x16, 0x43, 0x56, 0x07, 0x84, 0xAA, 0x96, 0xBD, 0x82, 0x25 } } } },
+ EXTRACT_END_ENTRY
+};
+
const ExtractEntrySearchData kEoB2TransferExpTableProvider[] = {
{ UNK_LANG, kPlatformUnknown, { 0x00000018, 0x0000076B, { { 0x91, 0x65, 0x5B, 0x8D, 0xE8, 0x5B, 0x28, 0x32, 0x4D, 0x7A, 0x57, 0x8E, 0x18, 0x5B, 0x1A, 0xE9 } } } },
EXTRACT_END_ENTRY
};
+const ExtractEntrySearchData kEoB2TransferStrings1Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x00000010, 0x000003D3, { { 0x31, 0xE4, 0x65, 0x69, 0x0A, 0xA1, 0x1D, 0xD1, 0xFE, 0xF8, 0x5C, 0x29, 0xB1, 0x46, 0xBD, 0xBE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000010, 0x000003E2, { { 0xF0, 0x10, 0xF8, 0x9F, 0x05, 0x1E, 0x31, 0x33, 0x4E, 0xC8, 0x49, 0xBC, 0x9E, 0xAD, 0xD4, 0x99 } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferStrings2Provider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000006A, 0x00002681, { { 0x12, 0x4D, 0x29, 0x9D, 0xD3, 0xFC, 0x39, 0x22, 0x73, 0x1E, 0x5C, 0xAF, 0x1F, 0xD1, 0xAA, 0x87 } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000057, 0x00001F8E, { { 0x85, 0xD8, 0x39, 0x1E, 0x6D, 0x97, 0xBD, 0x0E, 0xDD, 0xCF, 0x19, 0x47, 0x31, 0xDC, 0x7C, 0x1A } } } },
+ EXTRACT_END_ENTRY
+};
+
+const ExtractEntrySearchData kEoB2TransferLabelsProvider[] = {
+ { EN_ANY, kPlatformUnknown, { 0x0000000A, 0x00000240, { { 0x2A, 0x8B, 0x54, 0x99, 0x94, 0x35, 0x2B, 0xAB, 0x7F, 0x7F, 0x98, 0xA3, 0xFD, 0x57, 0x20, 0xDE } } } },
+ { DE_DEU, kPlatformUnknown, { 0x00000009, 0x000001DF, { { 0x47, 0x6B, 0xBA, 0xCD, 0x99, 0x74, 0xCA, 0x3C, 0xAA, 0xC6, 0xB4, 0x50, 0x38, 0x90, 0x25, 0xB8 } } } },
+ EXTRACT_END_ENTRY
+};
+
const ExtractEntrySearchData kEoB2IntroStringsProvider[] = {
{ EN_ANY, kPlatformUnknown, { 0x00000321, 0x0000DBC3, { { 0x11, 0x9B, 0x54, 0xB3, 0x34, 0xF0, 0xB5, 0xE1, 0xFA, 0x6A, 0x31, 0x02, 0x59, 0x29, 0xCA, 0x94 } } } },
{ DE_DEU, kPlatformUnknown, { 0x0000038E, 0x0001119C, { { 0x92, 0x63, 0x18, 0xDD, 0x9F, 0x62, 0xF5, 0xBC, 0x3D, 0x93, 0xDC, 0x6E, 0xE5, 0xBE, 0x8C, 0x0B } } } },
@@ -3846,8 +3874,8 @@ const ExtractEntry extractProviders[] = {
{ k3SfxMap, k3SfxMapProvider },
{ k3ItemAnimData, k3ItemAnimDataProvider },
{ k3ItemMagicTable, k3ItemMagicTableProvider },
- { k3ItemStringMap, k3ItemStringMapProvider },
-
+ { k3ItemStringMap, k3ItemStringMapProvider },
+
{ kEoBBaseChargenStrings1, kEoBBaseChargenStrings1Provider },
{ kEoBBaseChargenStrings2, kEoBBaseChargenStrings2Provider },
{ kEoBBaseChargenStartLevels, kEoBBaseChargenStartLevelsProvider },
@@ -3867,7 +3895,7 @@ const ExtractEntry extractProviders[] = {
{ kEoBBaseSaveThrwLvlIndex, kEoBBaseSaveThrwLvlIndexProvider },
{ kEoBBaseSaveThrwModDiv, kEoBBaseSaveThrwModDivProvider },
{ kEoBBaseSaveThrwModExt, kEoBBaseSaveThrwModExtProvider },
-
+
{ kEoBBasePryDoorStrings, kEoBBasePryDoorStringsProvider },
{ kEoBBaseWarningStrings, kEoBBaseWarningStringsProvider },
@@ -3923,7 +3951,7 @@ const ExtractEntry extractProviders[] = {
{ kEoBBaseMenuStringsSpec, kEoBBaseMenuStringsSpecProvider },
{ kEoBBaseMenuStringsSpellNo, kEoBBaseMenuStringsSpellNoProvider },
{ kEoBBaseMenuYesNoStrings, kEoBBaseMenuYesNoStringsProvider },
-
+
{ kEoBBaseSpellLevelsMage, kEoBBaseSpellLevelsMageProvider },
{ kEoBBaseSpellLevelsCleric, kEoBBaseSpellLevelsClericProvider },
{ kEoBBaseNumSpellsCleric, kEoBBaseNumSpellsClericProvider },
@@ -3980,7 +4008,7 @@ const ExtractEntry extractProviders[] = {
{ kEoBBaseDscTelptrShpCoords, kEoBBaseDscTelptrShpCoordsProvider },
{ kEoBBasePortalSeqData, kEoBBasePortalSeqDataProvider },
- { kEoBBaseManDef, kEoBBaseManDefProvider },
+ { kEoBBaseManDef, kEoBBaseManDefProvider },
{ kEoBBaseManWord, kEoBBaseManWordProvider },
{ kEoBBaseManPrompt, kEoBBaseManPromptProvider },
@@ -4018,7 +4046,7 @@ const ExtractEntry extractProviders[] = {
{ kEoBBaseExpObjectTbl2, kEoBBaseExpObjectTbl2Provider },
{ kEoBBaseExpObjectTbl3, kEoBBaseExpObjectTbl3Provider },
{ kEoBBaseExpObjectY, kEoBBaseExpObjectYProvider },
-
+
{ kEoBBaseSparkDefSteps, kEoBBaseSparkDefStepsProvider },
{ kEoBBaseSparkDefSubSteps, kEoBBaseSparkDefSubStepsProvider },
{ kEoBBaseSparkDefShift, kEoBBaseSparkDefShiftProvider },
@@ -4039,7 +4067,7 @@ const ExtractEntry extractProviders[] = {
{ kEoBBaseConeOfColdDest2, kEoBBaseConeOfColdDest2Provider },
{ kEoBBaseConeOfColdDest3, kEoBBaseConeOfColdDest3Provider },
{ kEoBBaseConeOfColdDest4, kEoBBaseConeOfColdDest4Provider },
- { kEoBBaseConeOfColdGfxTbl, kEoBBaseConeOfColdGfxTblProvider },
+ { kEoBBaseConeOfColdGfxTbl, kEoBBaseConeOfColdGfxTblProvider },
{ kEoB1MainMenuStrings, kEoB1MainMenuStringsProvider },
{ kEoB1BonusStrings, kEoB1BonusStringsProvider },
@@ -4093,89 +4121,95 @@ const ExtractEntry extractProviders[] = {
{ kEoB1Npc7Strings, kEoB1Npc7StringsProvider },
{ kEoB2MainMenuStrings, kEoB2MainMenuStringsProvider },
+
+ { kEoB2TransferPortraitFrames, kEoB2TransferPortraitFramesProvider },
{ kEoB2TransferConvertTable, kEoB2TransferConvertTableProvider },
+ { kEoB2TransferItemTable, kEoB2TransferItemTableProvider },
{ kEoB2TransferExpTable, kEoB2TransferExpTableProvider },
+ { kEoB2TransferStrings1, kEoB2TransferStrings1Provider },
+ { kEoB2TransferStrings2, kEoB2TransferStrings2Provider },
+ { kEoB2TransferLabels, kEoB2TransferLabelsProvider },
{ kEoB2IntroStrings, kEoB2IntroStringsProvider },
{ kEoB2IntroCPSFiles, kEoB2IntroCPSFilesProvider },
{ kEoB2IntroSeqData00, kEoB2IntroSeqData00Provider },
- { kEoB2IntroSeqData01, kEoB2IntroSeqData01Provider },
- { kEoB2IntroSeqData02, kEoB2IntroSeqData02Provider },
- { kEoB2IntroSeqData03, kEoB2IntroSeqData03Provider },
- { kEoB2IntroSeqData04, kEoB2IntroSeqData04Provider },
- { kEoB2IntroSeqData05, kEoB2IntroSeqData05Provider },
- { kEoB2IntroSeqData06, kEoB2IntroSeqData06Provider },
- { kEoB2IntroSeqData07, kEoB2IntroSeqData07Provider },
- { kEoB2IntroSeqData08, kEoB2IntroSeqData08Provider },
- { kEoB2IntroSeqData09, kEoB2IntroSeqData09Provider },
- { kEoB2IntroSeqData10, kEoB2IntroSeqData10Provider },
- { kEoB2IntroSeqData11, kEoB2IntroSeqData11Provider },
- { kEoB2IntroSeqData12, kEoB2IntroSeqData12Provider },
- { kEoB2IntroSeqData13, kEoB2IntroSeqData13Provider },
- { kEoB2IntroSeqData14, kEoB2IntroSeqData14Provider },
- { kEoB2IntroSeqData15, kEoB2IntroSeqData15Provider },
- { kEoB2IntroSeqData16, kEoB2IntroSeqData16Provider },
- { kEoB2IntroSeqData17, kEoB2IntroSeqData17Provider },
- { kEoB2IntroSeqData18, kEoB2IntroSeqData18Provider },
- { kEoB2IntroSeqData19, kEoB2IntroSeqData19Provider },
- { kEoB2IntroSeqData20, kEoB2IntroSeqData20Provider },
- { kEoB2IntroSeqData21, kEoB2IntroSeqData21Provider },
- { kEoB2IntroSeqData22, kEoB2IntroSeqData22Provider },
- { kEoB2IntroSeqData23, kEoB2IntroSeqData23Provider },
- { kEoB2IntroSeqData24, kEoB2IntroSeqData24Provider },
- { kEoB2IntroSeqData25, kEoB2IntroSeqData25Provider },
- { kEoB2IntroSeqData26, kEoB2IntroSeqData26Provider },
- { kEoB2IntroSeqData27, kEoB2IntroSeqData27Provider },
- { kEoB2IntroSeqData28, kEoB2IntroSeqData28Provider },
- { kEoB2IntroSeqData29, kEoB2IntroSeqData29Provider },
- { kEoB2IntroSeqData30, kEoB2IntroSeqData30Provider },
- { kEoB2IntroSeqData31, kEoB2IntroSeqData31Provider },
- { kEoB2IntroSeqData32, kEoB2IntroSeqData32Provider },
- { kEoB2IntroSeqData33, kEoB2IntroSeqData33Provider },
- { kEoB2IntroSeqData34, kEoB2IntroSeqData34Provider },
- { kEoB2IntroSeqData35, kEoB2IntroSeqData35Provider },
- { kEoB2IntroSeqData36, kEoB2IntroSeqData36Provider },
- { kEoB2IntroSeqData37, kEoB2IntroSeqData37Provider },
- { kEoB2IntroSeqData38, kEoB2IntroSeqData38Provider },
- { kEoB2IntroSeqData39, kEoB2IntroSeqData39Provider },
- { kEoB2IntroSeqData40, kEoB2IntroSeqData40Provider },
- { kEoB2IntroSeqData41, kEoB2IntroSeqData41Provider },
- { kEoB2IntroSeqData42, kEoB2IntroSeqData42Provider },
- { kEoB2IntroSeqData43, kEoB2IntroSeqData43Provider },
+ { kEoB2IntroSeqData01, kEoB2IntroSeqData01Provider },
+ { kEoB2IntroSeqData02, kEoB2IntroSeqData02Provider },
+ { kEoB2IntroSeqData03, kEoB2IntroSeqData03Provider },
+ { kEoB2IntroSeqData04, kEoB2IntroSeqData04Provider },
+ { kEoB2IntroSeqData05, kEoB2IntroSeqData05Provider },
+ { kEoB2IntroSeqData06, kEoB2IntroSeqData06Provider },
+ { kEoB2IntroSeqData07, kEoB2IntroSeqData07Provider },
+ { kEoB2IntroSeqData08, kEoB2IntroSeqData08Provider },
+ { kEoB2IntroSeqData09, kEoB2IntroSeqData09Provider },
+ { kEoB2IntroSeqData10, kEoB2IntroSeqData10Provider },
+ { kEoB2IntroSeqData11, kEoB2IntroSeqData11Provider },
+ { kEoB2IntroSeqData12, kEoB2IntroSeqData12Provider },
+ { kEoB2IntroSeqData13, kEoB2IntroSeqData13Provider },
+ { kEoB2IntroSeqData14, kEoB2IntroSeqData14Provider },
+ { kEoB2IntroSeqData15, kEoB2IntroSeqData15Provider },
+ { kEoB2IntroSeqData16, kEoB2IntroSeqData16Provider },
+ { kEoB2IntroSeqData17, kEoB2IntroSeqData17Provider },
+ { kEoB2IntroSeqData18, kEoB2IntroSeqData18Provider },
+ { kEoB2IntroSeqData19, kEoB2IntroSeqData19Provider },
+ { kEoB2IntroSeqData20, kEoB2IntroSeqData20Provider },
+ { kEoB2IntroSeqData21, kEoB2IntroSeqData21Provider },
+ { kEoB2IntroSeqData22, kEoB2IntroSeqData22Provider },
+ { kEoB2IntroSeqData23, kEoB2IntroSeqData23Provider },
+ { kEoB2IntroSeqData24, kEoB2IntroSeqData24Provider },
+ { kEoB2IntroSeqData25, kEoB2IntroSeqData25Provider },
+ { kEoB2IntroSeqData26, kEoB2IntroSeqData26Provider },
+ { kEoB2IntroSeqData27, kEoB2IntroSeqData27Provider },
+ { kEoB2IntroSeqData28, kEoB2IntroSeqData28Provider },
+ { kEoB2IntroSeqData29, kEoB2IntroSeqData29Provider },
+ { kEoB2IntroSeqData30, kEoB2IntroSeqData30Provider },
+ { kEoB2IntroSeqData31, kEoB2IntroSeqData31Provider },
+ { kEoB2IntroSeqData32, kEoB2IntroSeqData32Provider },
+ { kEoB2IntroSeqData33, kEoB2IntroSeqData33Provider },
+ { kEoB2IntroSeqData34, kEoB2IntroSeqData34Provider },
+ { kEoB2IntroSeqData35, kEoB2IntroSeqData35Provider },
+ { kEoB2IntroSeqData36, kEoB2IntroSeqData36Provider },
+ { kEoB2IntroSeqData37, kEoB2IntroSeqData37Provider },
+ { kEoB2IntroSeqData38, kEoB2IntroSeqData38Provider },
+ { kEoB2IntroSeqData39, kEoB2IntroSeqData39Provider },
+ { kEoB2IntroSeqData40, kEoB2IntroSeqData40Provider },
+ { kEoB2IntroSeqData41, kEoB2IntroSeqData41Provider },
+ { kEoB2IntroSeqData42, kEoB2IntroSeqData42Provider },
+ { kEoB2IntroSeqData43, kEoB2IntroSeqData43Provider },
{ kEoB2IntroShapes00, kEoB2IntroShapes00Provider },
- { kEoB2IntroShapes01, kEoB2IntroShapes01Provider },
- { kEoB2IntroShapes04, kEoB2IntroShapes04Provider },
- { kEoB2IntroShapes07, kEoB2IntroShapes07Provider },
+ { kEoB2IntroShapes01, kEoB2IntroShapes01Provider },
+ { kEoB2IntroShapes04, kEoB2IntroShapes04Provider },
+ { kEoB2IntroShapes07, kEoB2IntroShapes07Provider },
{ kEoB2FinaleStrings, kEoB2FinaleStringsProvider },
{ kEoB2CreditsData, kEoB2CreditsDataProvider },
{ kEoB2FinaleCPSFiles, kEoB2FinaleCPSFilesProvider },
{ kEoB2FinaleSeqData00, kEoB2FinaleSeqData00Provider },
- { kEoB2FinaleSeqData01, kEoB2FinaleSeqData01Provider },
- { kEoB2FinaleSeqData02, kEoB2FinaleSeqData02Provider },
- { kEoB2FinaleSeqData03, kEoB2FinaleSeqData03Provider },
- { kEoB2FinaleSeqData04, kEoB2FinaleSeqData04Provider },
- { kEoB2FinaleSeqData05, kEoB2FinaleSeqData05Provider },
- { kEoB2FinaleSeqData06, kEoB2FinaleSeqData06Provider },
- { kEoB2FinaleSeqData07, kEoB2FinaleSeqData07Provider },
- { kEoB2FinaleSeqData08, kEoB2FinaleSeqData08Provider },
- { kEoB2FinaleSeqData09, kEoB2FinaleSeqData09Provider },
- { kEoB2FinaleSeqData10, kEoB2FinaleSeqData10Provider },
- { kEoB2FinaleSeqData11, kEoB2FinaleSeqData11Provider },
- { kEoB2FinaleSeqData12, kEoB2FinaleSeqData12Provider },
- { kEoB2FinaleSeqData13, kEoB2FinaleSeqData13Provider },
- { kEoB2FinaleSeqData14, kEoB2FinaleSeqData14Provider },
- { kEoB2FinaleSeqData15, kEoB2FinaleSeqData15Provider },
- { kEoB2FinaleSeqData16, kEoB2FinaleSeqData16Provider },
- { kEoB2FinaleSeqData17, kEoB2FinaleSeqData17Provider },
- { kEoB2FinaleSeqData18, kEoB2FinaleSeqData18Provider },
- { kEoB2FinaleSeqData19, kEoB2FinaleSeqData19Provider },
- { kEoB2FinaleSeqData20, kEoB2FinaleSeqData20Provider },
+ { kEoB2FinaleSeqData01, kEoB2FinaleSeqData01Provider },
+ { kEoB2FinaleSeqData02, kEoB2FinaleSeqData02Provider },
+ { kEoB2FinaleSeqData03, kEoB2FinaleSeqData03Provider },
+ { kEoB2FinaleSeqData04, kEoB2FinaleSeqData04Provider },
+ { kEoB2FinaleSeqData05, kEoB2FinaleSeqData05Provider },
+ { kEoB2FinaleSeqData06, kEoB2FinaleSeqData06Provider },
+ { kEoB2FinaleSeqData07, kEoB2FinaleSeqData07Provider },
+ { kEoB2FinaleSeqData08, kEoB2FinaleSeqData08Provider },
+ { kEoB2FinaleSeqData09, kEoB2FinaleSeqData09Provider },
+ { kEoB2FinaleSeqData10, kEoB2FinaleSeqData10Provider },
+ { kEoB2FinaleSeqData11, kEoB2FinaleSeqData11Provider },
+ { kEoB2FinaleSeqData12, kEoB2FinaleSeqData12Provider },
+ { kEoB2FinaleSeqData13, kEoB2FinaleSeqData13Provider },
+ { kEoB2FinaleSeqData14, kEoB2FinaleSeqData14Provider },
+ { kEoB2FinaleSeqData15, kEoB2FinaleSeqData15Provider },
+ { kEoB2FinaleSeqData16, kEoB2FinaleSeqData16Provider },
+ { kEoB2FinaleSeqData17, kEoB2FinaleSeqData17Provider },
+ { kEoB2FinaleSeqData18, kEoB2FinaleSeqData18Provider },
+ { kEoB2FinaleSeqData19, kEoB2FinaleSeqData19Provider },
+ { kEoB2FinaleSeqData20, kEoB2FinaleSeqData20Provider },
{ kEoB2FinaleShapes00, kEoB2FinaleShapes00Provider },
- { kEoB2FinaleShapes03, kEoB2FinaleShapes03Provider },
- { kEoB2FinaleShapes07, kEoB2FinaleShapes07Provider },
- { kEoB2FinaleShapes09, kEoB2FinaleShapes09Provider },
- { kEoB2FinaleShapes10, kEoB2FinaleShapes10Provider },
+ { kEoB2FinaleShapes03, kEoB2FinaleShapes03Provider },
+ { kEoB2FinaleShapes07, kEoB2FinaleShapes07Provider },
+ { kEoB2FinaleShapes09, kEoB2FinaleShapes09Provider },
+ { kEoB2FinaleShapes10, kEoB2FinaleShapes10Provider },
{ kEoB2NpcShapeData, kEoB2NpcShapeDataProvider },
{ kEoBBaseClassModifierFlags, kEoBBaseClassModifierFlagsProvider },
@@ -4193,7 +4227,7 @@ const ExtractEntry extractProviders[] = {
{ kEoBBaseMonsterCloseAttChkTable2, kEoBBaseMonsterCloseAttChkTable2Provider },
{ kEoBBaseMonsterCloseAttDstTable1, kEoBBaseMonsterCloseAttDstTable1Provider },
{ kEoBBaseMonsterCloseAttDstTable2, kEoBBaseMonsterCloseAttDstTable2Provider },
-
+
{ kEoBBaseMonsterProximityTable, kEoBBaseMonsterProximityTableProvider },
{ kEoBBaseFindBlockMonstersTable, kEoBBaseFindBlockMonstersTableProvider },
{ kEoBBaseMonsterDirChangeTable, kEoBBaseMonsterDirChangeTableProvider },
@@ -4212,7 +4246,7 @@ const ExtractEntry extractProviders[] = {
{ kEoB2WallOfForceNumW, kEoB2WallOfForceNumWProvider },
{ kEoB2WallOfForceNumH, kEoB2WallOfForceNumHProvider },
{ kEoB2WallOfForceShpId, kEoB2WallOfForceShpIdProvider },
-
+
{ kLoLIngamePakFiles, kLoLIngamePakFilesProvider },
{ kLoLCharacterDefs, kLoLCharacterDefsProvider },
{ kLoLIngameSfxFiles, kLoLIngameSfxFilesProvider },
diff --git a/dists/engine-data/kyra.dat b/dists/engine-data/kyra.dat
index 704c8adc3c..56c7184756 100644
--- a/dists/engine-data/kyra.dat
+++ b/dists/engine-data/kyra.dat
Binary files differ
diff --git a/engines/kyra/chargen.cpp b/engines/kyra/chargen.cpp
index b326f92caf..16911a3ddd 100644
--- a/engines/kyra/chargen.cpp
+++ b/engines/kyra/chargen.cpp
@@ -69,7 +69,7 @@ private:
void finish();
uint8 **_chargenMagicShapes;
- uint8 **_chargenButtonLabels;
+ uint8 *_chargenButtonLabels[17];
int _activeBox;
int _magicShapesBox;
int _updateBoxShapesIndex;
@@ -115,7 +115,7 @@ private:
};
CharacterGenerator::CharacterGenerator(EoBCoreEngine *vm, Screen_EoB *screen) : _vm(vm), _screen(screen),
- _characters(0), _faceShapes(0), _chargenMagicShapes(0), _chargenButtonLabels(0), _chargenMagicShapeTimer(0),
+ _characters(0), _faceShapes(0), _chargenMagicShapes(0), _chargenMagicShapeTimer(0),
_updateBoxShapesIndex(0), _lastUpdateBoxShapesIndex(0), _magicShapesBox(6), _activeBox(0) {
_chargenStatStrings = _vm->_chargenStatStrings;
@@ -145,11 +145,8 @@ CharacterGenerator::~CharacterGenerator() {
delete[] _chargenMagicShapes;
}
- if (_chargenButtonLabels) {
- for (int i = 0; i < 17; i++)
- delete[] _chargenButtonLabels[i];
- delete[] _chargenButtonLabels;
- }
+ for (int i = 0; i < 17; i++)
+ delete[] _chargenButtonLabels[i];
}
bool CharacterGenerator::start(EoBCharacter *characters, uint8 ***faceShapes) {
@@ -261,7 +258,6 @@ void CharacterGenerator::init() {
for (int i = 0; i < 10; i++)
_chargenMagicShapes[i] = _screen->encodeShape(i << 2, 0, 4, 32, true);
- _chargenButtonLabels = new uint8*[17];
for (int i = 0; i < 17; i++) {
const CreatePartyModButton *c = &_chargenModButtons[i];
_chargenButtonLabels[i] = c->labelW? _screen->encodeShape(c->encodeLabelX, c->encodeLabelY, c->labelW, c->labelH, true) : 0;
@@ -1322,12 +1318,8 @@ void CharacterGenerator::finish() {
_chargenMagicShapes = 0;
}
- if (_chargenButtonLabels) {
- for (int i = 0; i < 17; i++)
- delete[] _chargenButtonLabels[i];
- delete[] _chargenButtonLabels;
- _chargenButtonLabels = 0;
- }
+ for (int i = 0; i < 17; i++)
+ delete[] _chargenButtonLabels[i];
}
const EoBChargenButtonDef CharacterGenerator::_chargenButtonDefs[] = {
@@ -1444,17 +1436,45 @@ private:
bool selectAndLoadTransferFile();
Common::String transferFileDialogue();
+ int selectCharactersMenu();
+ void drawCharPortraitWithStats(int charIndex, bool enabled);
+ void updateHighlight(int index);
+
void convertStats();
+ void convertInventory();
+ Item convertItem(Item eob1Item);
+ void giveKhelbensCoin();
EoBCoreEngine *_vm;
Screen_EoB *_screen;
+
+ int _highlight;
+ EoBItem *_oldItems;
+
+ const uint16 *_portraitFrames;
+ const uint8 *_convertTable;
+ const uint8 *_itemTable;
+ const uint32 *_expTable;
+ const char *const *_strings1;
+ const char *const *_strings2;
+ const char *const *_labels;
};
TransferPartyWiz::TransferPartyWiz(EoBCoreEngine *vm, Screen_EoB *screen) : _vm(vm), _screen(screen) {
+ int temp;
+ _portraitFrames = _vm->staticres()->loadRawDataBe16(kEoB2TransferPortraitFrames, temp);
+ _convertTable = _vm->staticres()->loadRawData(kEoB2TransferConvertTable, temp);
+ _itemTable = _vm->staticres()->loadRawData(kEoB2TransferItemTable, temp);
+ _expTable = _vm->staticres()->loadRawDataBe32(kEoB2TransferExpTable, temp);
+ _strings1 = _vm->staticres()->loadStrings(kEoB2TransferStrings1, temp);
+ _strings2 = _vm->staticres()->loadStrings(kEoB2TransferStrings2, temp);
+ _labels = _vm->staticres()->loadStrings(kEoB2TransferLabels, temp);
+ _highlight = -1;
+ _oldItems = 0;
}
TransferPartyWiz::~TransferPartyWiz() {
-
+ delete[] _oldItems;
}
bool TransferPartyWiz::start() {
@@ -1465,11 +1485,39 @@ bool TransferPartyWiz::start() {
convertStats();
+ _oldItems = new EoBItem[600];
+ memcpy(_oldItems, _vm->_items, sizeof(EoBItem) * 600);
+ _vm->loadItemDefs();
+
+ int selection = selectCharactersMenu();
+ if (selection == 0) {
+ for (int i = 0; i < 6; i++)
+ delete[] _vm->_characters[i].faceShape;
+ memset(_vm->_characters, 0, sizeof(EoBCharacter) * 6);
+ return false;
+ }
+
+ int ch = 0;
+ for (int i = 0; i < 6; i++) {
+ if (selection & (1 << i)) {
+ if (ch != i) {
+ delete[] _vm->_characters[ch].faceShape;
+ memcpy(&_vm->_characters[ch], &_vm->_characters[i], sizeof(EoBCharacter));
+ _vm->_characters[i].faceShape = 0;
+ }
+ ch++;
+ }
+ }
+ memset(&_vm->_characters[4], 0, sizeof(EoBCharacter) * 2);
+
+ convertInventory();
+ giveKhelbensCoin();
+
return true;
}
bool TransferPartyWiz::selectAndLoadTransferFile() {
- for (int numLoops = 1; numLoops; numLoops--) {
+ for (int numLoops = 1; numLoops; numLoops--) {
_screen->copyPage(12, 0);
_vm->_savegameFilename = transferFileDialogue();
if (_vm->_savegameFilename.empty()) {
@@ -1493,9 +1541,14 @@ Common::String TransferPartyWiz::transferFileDialogue() {
Common::String tfile;
KyraEngine_v1::SaveHeader header;
+ memset(&header, 0, sizeof(KyraEngine_v1::SaveHeader));
Common::InSaveFile *in;
+ _vm->_gui->transferWaitBox();
+
for (Common::StringArray::iterator i = saveFileList.begin(); i != saveFileList.end(); ++i) {
+ _vm->updateInput();
+
if (!(in = _vm->_saveFileMan->openForLoading(*i)))
continue;
@@ -1546,6 +1599,170 @@ Common::String TransferPartyWiz::transferFileDialogue() {
return tfile;
}
+int TransferPartyWiz::selectCharactersMenu() {
+ _screen->setCurPage(2);
+ _screen->setFont(Screen::FID_6_FNT);
+ _screen->clearCurPage();
+
+ _vm->gui_drawBox(0, 0, 320, 163, _vm->_color1_1, _vm->_color2_1, _vm->_bkgColor_1);
+ _screen->printText(_strings2[0], 5, 3, 15, 0);
+ _screen->printText(_strings2[1], 5, 10, 15, 0);
+
+ for (int i = 0; i < 6; i++)
+ drawCharPortraitWithStats(i, 0);
+
+ _vm->gui_drawBox(4, 148, 43, 12, _vm->_color1_1, _vm->_color2_1, _vm->_bkgColor_1);
+ _vm->gui_drawBox(272, 148, 43, 12, _vm->_color1_1, _vm->_color2_1, _vm->_bkgColor_1);
+
+ _screen->printShadedText(_labels[0], 9, 151, 15, 0);
+ _screen->printShadedText(_labels[1], 288, 151, 15, 0);
+
+ _screen->setCurPage(0);
+ _screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK);
+ _screen->updateScreen();
+
+ int selection = 0;
+ int highlight = 0;
+ bool update = false;
+
+ for (bool loop = true; loop && (!_vm->shouldQuit()); ) {
+ int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
+ _vm->removeInputTop();
+
+ if (inputFlag) {
+ if (inputFlag == _vm->_keyMap[Common::KEYCODE_LEFT] || inputFlag == _vm->_keyMap[Common::KEYCODE_RIGHT]) {
+ highlight ^= 1;
+ } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_UP]) {
+ highlight -= 2;
+ if (highlight < 0)
+ highlight += 8;
+ } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_DOWN]) {
+ highlight += 2;
+ if (highlight >= 8)
+ highlight -= 8;
+ } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_RETURN] || inputFlag == _vm->_keyMap[Common::KEYCODE_SPACE]) {
+ update = true;
+ } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_ESCAPE]) {
+ update = true;
+ highlight = 6;
+ } else if (inputFlag == 199) {
+ for (int i = 0; i < 8; i++) {
+ int t = i << 2;
+ if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, _portraitFrames[t], _portraitFrames[t + 1], _portraitFrames[t + 2], _portraitFrames[t + 3])) {
+ highlight = i;
+ update = true;
+ break;
+ }
+ }
+ }
+ }
+
+ updateHighlight(highlight);
+
+ if (!update)
+ continue;
+
+ update = false;
+
+ if (highlight < 6) {
+ if (_vm->_characters[highlight].flags & 1) {
+ selection ^= (1 << highlight);
+ drawCharPortraitWithStats(highlight, (selection & (1 << highlight)) ? true : false);
+ _screen->updateScreen();
+ }
+ continue;
+ }
+
+ int x = (highlight - 6) * 268 + 4;
+ _vm->gui_drawBox(x, 148, 43, 12, _vm->_bkgColor_1, _vm->_bkgColor_1, -1);
+ _screen->updateScreen();
+ _vm->_system->delayMillis(80);
+ _vm->gui_drawBox(x, 148, 43, 12, _vm->_color1_1, _vm->_color2_1, -1);
+ _screen->updateScreen();
+
+ if (highlight == 6 || _vm->shouldQuit()) {
+ _screen->setFont(Screen::FID_8_FNT);
+ return 0;
+ }
+
+ int count = 0;
+ for (int i = 0; i < 6; i++) {
+ if (selection & (1 << i))
+ count++;
+ }
+
+ if (count == 4 || _vm->shouldQuit())
+ loop = false;
+ else
+ _vm->_gui->messageDialogue(16, count < 4 ? 69 : 70, 6);
+
+ _screen->updateScreen();
+ }
+
+ _screen->setFont(Screen::FID_8_FNT);
+ if (_vm->shouldQuit())
+ return 0;
+ else
+ _vm->_gui->messageDialogue(16, 71, 6);
+
+ return selection;
+}
+
+void TransferPartyWiz::drawCharPortraitWithStats(int charIndex, bool enabled) {
+ int16 x = (charIndex % 2) * 159;
+ int16 y = (charIndex / 2) * 40;
+ EoBCharacter *c = &_vm->_characters[charIndex];
+
+ _screen->fillRect(x + 4, y + 24, x + 36, y + 57, 12);
+ _vm->gui_drawBox(x + 40, y + 24, 118, 34, _vm->_color1_1, _vm->_color2_1, _vm->_bkgColor_1);
+
+ if (!(c->flags & 1))
+ return;
+
+ _screen->drawShape(_screen->_curPage, c->faceShape, x + 4, y + 25, 0);
+
+ int color1 = 15;
+ int color2 = 12;
+
+ if (enabled) {
+ color1 = 6;
+ color2 = 15;
+ } else {
+ _screen->drawShape(_screen->_curPage, _vm->_disabledCharGrid, x + 4, y + 25, 0);
+ }
+
+ _screen->printShadedText(c->name, x + 44, y + 27, color1, 0);
+ _screen->printText(_vm->_chargenRaceSexStrings[c->raceSex], x + 43, y + 36, color2, 0);
+ _screen->printText(_vm->_chargenClassStrings[c->cClass], x + 43, y + 43, color2, 0);
+
+ Common::String tmp = Common::String::format(_strings1[0], c->level[0]);
+ for (int i = 1; i < _vm->_numLevelsPerClass[c->cClass]; i++)
+ tmp += Common::String::format(_strings1[1], c->level[i]);
+ _screen->printText(tmp.c_str(), x + 43, y + 50, color2, 0);
+}
+
+void TransferPartyWiz::updateHighlight(int index) {
+ static const int16 xPos[] = { 9, 288 };
+ if (_highlight > 5 && _highlight != index)
+ _screen->printText(_labels[_highlight - 6], xPos[_highlight - 6], 151, 15, 0);
+
+ if (index < 6) {
+ _vm->_gui->updateBoxFrameHighLight(14 + index);
+ _highlight = index;
+ return;
+ }
+
+ if (_highlight == index)
+ return;
+
+ if (_highlight < 6)
+ _vm->_gui->updateBoxFrameHighLight(-1);
+
+ _screen->printText(_labels[index - 6], xPos[index - 6], 151, 6, 0);
+ _screen->updateScreen();
+ _highlight = index;
+}
+
void TransferPartyWiz::convertStats() {
for (int i = 0; i < 6; i++) {
EoBCharacter *c = &_vm->_characters[i];
@@ -1553,25 +1770,182 @@ void TransferPartyWiz::convertStats() {
for (int ii = 0; ii < 25; ii++) {
if (c->mageSpellsAvailableFlags & (1 << ii)) {
- int8 f = (int8)_vm->_transferConvertTable[i + 1] - 1;
+ int8 f = (int8)_convertTable[ii + 1] - 1;
if (f != -1)
aflags |= (1 << f);
}
}
c->mageSpellsAvailableFlags = aflags;
+ c->armorClass = 0;
+ c->disabledSlots = 0;
c->flags &= 1;
c->hitPointsCur = c->hitPointsMax;
c->food = 100;
+ c->effectFlags = 0;
+ c->damageTaken = 0;
+ memset(c->clericSpells, 0, sizeof(int8) * 80);
+ memset(c->mageSpells, 0, sizeof(int8) * 80);
+ memset(c->timers, 0, sizeof(uint32) * 10);
+ memset(c->events, 0, sizeof(int8) * 10);
+ memset(c->effectsRemainder, 0, sizeof(uint8) * 4);
+ memset(c->slotStatus, 0, sizeof(int8) * 5);
+
for (int ii = 0; ii < 3; ii++) {
int t = _vm->getCharacterClassType(c->cClass, ii);
if (t == -1)
continue;
- if (c->experience[ii] < _vm->_transferExpTable[t])
- c->experience[ii] = _vm->_transferExpTable[t];
+ if (c->experience[ii] > _expTable[t])
+ c->experience[ii] = _expTable[t];
+ }
+ }
+}
+
+void TransferPartyWiz::convertInventory() {
+ for (int i = 0; i < 4; i++) {
+ EoBCharacter *c = &_vm->_characters[i];
+
+ for (int slot = 0; slot < 27; slot++) {
+ Item itm = c->inventory[slot];
+ if (slot == 16) {
+ Item first = itm;
+ c->inventory[slot] = 0;
+
+ for (bool forceLoop = true; (itm && (itm != first)) || forceLoop; itm = _oldItems[itm].prev) {
+ forceLoop = false;
+ _vm->setItemPosition(&c->inventory[slot], -2, convertItem(itm), 0);
+ }
+ } else {
+ c->inventory[slot] = convertItem(itm);
+ }
+ }
+ }
+}
+
+Item TransferPartyWiz::convertItem(Item eob1Item) {
+ if (!eob1Item)
+ return 0;
+
+ EoBItem *itm1 = &_oldItems[eob1Item];
+
+ if (!_itemTable[itm1->type])
+ return 0;
+
+ Item newItem = _vm->duplicateItem(1);
+ EoBItem *itm2 = &_vm->_items[newItem];
+ bool match = false;
+
+ itm2->flags = itm1->flags | 0x40;
+ itm2->icon = itm1->icon;
+ itm2->type = itm1->type;
+ itm2->level = 0xff;
+
+ switch(itm2->type) {
+ case 35:
+ itm1->value += 25;
+ // fall through
+ case 34:
+ itm2->value = _convertTable[itm1->value];
+ if (!itm2->value) {
+ itm2->block = -1;
+ return 0;
+ }
+ break;
+ case 39:
+ itm2->value = itm1->value - 1;
+ break;
+ case 48:
+ if (itm1->value == 5) {
+ memset(itm2, 0, sizeof(EoBItem));
+ itm2->block = -1;
+ return 0;
+ }
+ itm2->value = itm1->value;
+ itm2->flags = ((itm1->flags & 0x3f) + 3) | 0x40;
+ break;
+ case 18:
+ itm2->icon = 19;
+ // fall through
+ default:
+ itm2->value = itm1->value;
+ break;
+ }
+
+ switch ((_vm->_itemTypes[itm2->type].extraProperties & 0x7f) - 1) {
+ case 0:
+ case 1:
+ case 2:
+ if (itm2->value)
+ itm2->flags |= 0x80;
+ break;
+ case 4:
+ case 5:
+ case 8:
+ case 9:
+ case 13:
+ case 15:
+ case 17:
+ itm2->flags |= 0x80;
+ break;
+ default:
+ break;
+ }
+
+ for (int i = 1; i < 600; i++) {
+ if (i == 60 || i == 62 || i == 63 || i == 83)
+ continue;
+ EoBItem *tmp = &_vm->_items[i];
+ if (tmp->level || tmp->block == -2 || tmp->type != itm2->type || tmp->icon != itm2->icon)
+ continue;
+ itm2->nameUnid = tmp->nameUnid;
+ itm2->nameId = tmp->nameId;
+ match = true;
+ break;
+ }
+
+ if (!match) {
+ for (int i = 1; i < 600; i++) {
+ if (i == 60 || i == 62 || i == 63 || i == 83)
+ continue;
+ EoBItem *tmp = &_vm->_items[i];
+ if (tmp->level || tmp->block == -2 || tmp->type != itm2->type)
+ continue;
+ itm2->nameUnid = tmp->nameUnid;
+ itm2->nameId = tmp->nameId;
+ match = true;
+ break;
}
}
+
+ if (!match) {
+ memset(itm2, 0, sizeof(EoBItem));
+ itm2->block = -1;
+ return 0;
+ }
+
+ itm2->level = 0;
+ return newItem;
+}
+
+void TransferPartyWiz::giveKhelbensCoin() {
+ bool success = false;
+ for (int i = 0; i < 4 && !success; i++) {
+ EoBCharacter *c = &_vm->_characters[i];
+
+ for (int slot = 2; slot < 16; slot++) {
+ if (c->inventory[slot])
+ continue;
+ _vm->createInventoryItem(c, 93, -1, slot);
+ success = true;
+ break;
+ }
+ }
+
+ if (!success) {
+ _vm->_characters[0].inventory[2] = 0;
+ _vm->createInventoryItem(&_vm->_characters[0], 93, -1, 2);
+ }
}
// Start functions
diff --git a/engines/kyra/eobcommon.cpp b/engines/kyra/eobcommon.cpp
index c64f60b3fd..f3e644b89d 100644
--- a/engines/kyra/eobcommon.cpp
+++ b/engines/kyra/eobcommon.cpp
@@ -64,9 +64,6 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) : KyraRpgE
_beholderSpellList = 0;
_beholderSfx = 0;
- _transferConvertTable = 0;
- _transferExpTable = 0;
-
_faceShapes = 0;
_characters = 0;
_items = 0;
@@ -470,7 +467,7 @@ Common::Error EoBCoreEngine::go() {
}
}
- if (!shouldQuit() && action > -3) {
+ if (!shouldQuit() && action >= -3) {
runLoop();
if (_playFinale) {
diff --git a/engines/kyra/eobcommon.h b/engines/kyra/eobcommon.h
index f489f8742b..399eff7775 100644
--- a/engines/kyra/eobcommon.h
+++ b/engines/kyra/eobcommon.h
@@ -331,9 +331,6 @@ protected:
const uint8 *_classModifierFlags;
- const uint8 *_transferConvertTable;
- const uint32 *_transferExpTable;
-
// timers
void setupTimers();
void setCharEventTimer(int charIndex, uint32 countdown, int evnt, int updateExistingTimer);
diff --git a/engines/kyra/gui_eob.cpp b/engines/kyra/gui_eob.cpp
index ab92e08046..080af941df 100644
--- a/engines/kyra/gui_eob.cpp
+++ b/engines/kyra/gui_eob.cpp
@@ -2308,6 +2308,46 @@ bool GUI_EoB::confirmDialogue2(int dim, int id, int deflt) {
return newHighlight ? false : true;
}
+void GUI_EoB::messageDialogue(int dim, int id, int buttonTextCol) {
+ int od = _screen->curDimIndex();
+ _screen->setScreenDim(dim);
+ Screen::FontId of = _screen->setFont(Screen::FID_8_FNT);
+
+ drawTextBox(dim, id);
+ const ScreenDim *dm = _screen->getScreenDim(dim);
+
+ int bx = ((dm->sx + dm->w) << 3) - ((strlen(_vm->_menuOkString) << 3) + 16);
+ int by = dm->sy + dm->h - 19;
+ int bw = (strlen(_vm->_menuOkString) << 3) + 7;
+
+ drawMenuButtonBox(bx, by, bw, 14, false, false);
+ _screen->printShadedText(_vm->_menuOkString, bx + 4, by + 3, buttonTextCol, 0);
+ _screen->updateScreen();
+
+ for (bool runLoop = true; runLoop && !_vm->shouldQuit(); ) {
+ int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
+ _vm->removeInputTop();
+
+ if (inputFlag == 199 || inputFlag == 201) {
+ if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, bx, by, bx + bw, by + 14))
+ runLoop = false;
+ } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_SPACE] || inputFlag == _vm->_keyMap[Common::KEYCODE_RETURN] || inputFlag == _vm->_keyMap[Common::KEYCODE_o]) {
+ runLoop = false;
+ }
+ }
+
+ drawMenuButtonBox(bx, by, bw, 14, true, true);
+ _screen->updateScreen();
+ _vm->_system->delayMillis(80);
+ drawMenuButtonBox(bx, by, bw, 14, false, true);
+ _screen->updateScreen();
+
+ _screen->copyRegion(0, dm->h, dm->sx << 3, dm->sy, dm->w << 3, dm->h, 2, 0, Screen::CR_NO_P_CHECK);
+ _screen->setScreenDim(od);
+ _screen->setFont(of);
+ dm = _screen->getScreenDim(dim);
+}
+
void GUI_EoB::messageDialogue2(int dim, int id, int buttonTextCol) {
drawMenuButtonBox(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, false, false);
@@ -2496,6 +2536,15 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
return _keyPressed.keycode == Common::KEYCODE_ESCAPE ? -1 : len;
}
+void GUI_EoB::transferWaitBox() {
+ const ScreenDim *dm = _screen->getScreenDim(11);
+ int xo = dm->sx;
+ int yo = dm->sy;
+ _screen->modifyScreenDim(11, dm->sx + 9, dm->sy + 24, dm->w, dm->h);
+ displayTextBox(-4);
+ _screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
+}
+
Common::String GUI_EoB::transferTargetMenu(Common::Array<Common::String> &targets) {
_savegameListSize = targets.size();
if (_savegameList) {
@@ -2542,13 +2591,14 @@ Common::String GUI_EoB::transferFileMenu(Common::String &target) {
int slot = 0;
do {
slot = selectSaveSlotDialogue(72, 14, 4);
- if (slot < 6) {
- if (_saveSlotIdTemp[slot] == -1)
- messageDialogue(11, 65, 6);
- else {
- _screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
- return _vm->getSavegameFilename(target, _saveSlotIdTemp[slot]);
- }
+ if (slot == 6)
+ break;
+
+ if (_saveSlotIdTemp[slot] == -1)
+ messageDialogue(11, 65, 6);
+ else {
+ _screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
+ return _vm->getSavegameFilename(target, _saveSlotIdTemp[slot]);
}
} while (_saveSlotIdTemp[slot] == -1);
@@ -3488,46 +3538,6 @@ bool GUI_EoB::confirmDialogue(int id) {
return result;
}
-void GUI_EoB::messageDialogue(int dim, int id, int buttonTextCol) {
- int od = _screen->curDimIndex();
- _screen->setScreenDim(dim);
- Screen::FontId of = _screen->setFont(Screen::FID_8_FNT);
-
- drawTextBox(dim, id);
- const ScreenDim *dm = _screen->getScreenDim(dim);
-
- int bx = ((dm->sx + dm->w) << 3) - ((strlen(_vm->_menuOkString) << 3) + 16);
- int by = dm->sy + dm->h - 19;
- int bw = (strlen(_vm->_menuOkString) << 3) + 7;
-
- drawMenuButtonBox(bx, by, bw, 14, false, false);
- _screen->printShadedText(_vm->_menuOkString, bx + 4, by + 3, buttonTextCol, 0);
- _screen->updateScreen();
-
- for (bool runLoop = true; runLoop && !_vm->shouldQuit(); ) {
- int inputFlag = _vm->checkInput(0, false, 0) & 0x8ff;
- _vm->removeInputTop();
-
- if (inputFlag == 199 || inputFlag == 201) {
- if (_vm->posWithinRect(_vm->_mouseX, _vm->_mouseY, bx, by, bx + bw, by + 14))
- runLoop = false;
- } else if (inputFlag == _vm->_keyMap[Common::KEYCODE_SPACE] || inputFlag == _vm->_keyMap[Common::KEYCODE_RETURN] || inputFlag == _vm->_keyMap[Common::KEYCODE_o]) {
- runLoop = false;
- }
- }
-
- drawMenuButtonBox(bx, by, bw, 14, true, true);
- _screen->updateScreen();
- _vm->_system->delayMillis(80);
- drawMenuButtonBox(bx, by, bw, 14, false, true);
- _screen->updateScreen();
-
- _screen->copyRegion(0, dm->h, dm->sx << 3, dm->sy, dm->w << 3, dm->h, 2, 0, Screen::CR_NO_P_CHECK);
- _screen->setScreenDim(od);
- _screen->setFont(of);
- dm = _screen->getScreenDim(dim);
-}
-
int GUI_EoB::selectCharacterDialogue(int id) {
uint8 flags = (id == 26) ? (_vm->game() == GI_EOB1 ? 0x04 : 0x14) : 0x02;
_vm->removeInputTop();
diff --git a/engines/kyra/gui_eob.h b/engines/kyra/gui_eob.h
index d8ce9bd234..ec4000e52a 100644
--- a/engines/kyra/gui_eob.h
+++ b/engines/kyra/gui_eob.h
@@ -63,6 +63,7 @@ public:
bool runLoadMenu(int x, int y);
bool confirmDialogue2(int dim, int id, int deflt);
+ void messageDialogue(int dim, int id, int buttonTextCol);
void messageDialogue2(int dim, int id, int buttonTextCol);
void updateBoxFrameHighLight(int box);
@@ -70,6 +71,7 @@ public:
int getTextInput(char *dest, int x, int y, int destMaxLen, int textColor1, int textColor2, int cursorColor);
// Transfer party
+ void transferWaitBox();
Common::String transferTargetMenu(Common::Array<Common::String> &targets);
Common::String transferFileMenu(Common::String &target);
@@ -88,7 +90,6 @@ private:
bool restParty();
bool confirmDialogue(int id);
- void messageDialogue(int dim, int id, int buttonTextCol);
int selectCharacterDialogue(int id);
void displayTextBox(int id);
diff --git a/engines/kyra/items_eob.cpp b/engines/kyra/items_eob.cpp
index 28764dfe20..c58fd0835c 100644
--- a/engines/kyra/items_eob.cpp
+++ b/engines/kyra/items_eob.cpp
@@ -30,6 +30,7 @@ namespace Kyra {
void EoBCoreEngine::loadItemDefs() {
Common::SeekableReadStream *s = _res->createReadStream("item.dat");
+ memset(_items, 0, sizeof(EoBItem) * 600);
_numItems = s->readUint16LE();
for (int i = 0; i < 600; i++)
@@ -58,6 +59,7 @@ void EoBCoreEngine::loadItemDefs() {
s = _res->createReadStream("itemtype.dat");
uint16 numTypes = s->readUint16LE();
+ delete[] _itemTypes;
_itemTypes = new EoBItemType[65];
memset(_itemTypes, 0, sizeof(EoBItemType) * 65);
diff --git a/engines/kyra/resource.h b/engines/kyra/resource.h
index 45c18517a9..5b0af9840d 100644
--- a/engines/kyra/resource.h
+++ b/engines/kyra/resource.h
@@ -537,8 +537,14 @@ enum KyraResources {
kEoB1Npc7Strings,
kEoB2MainMenuStrings,
+
+ kEoB2TransferPortraitFrames,
kEoB2TransferConvertTable,
+ kEoB2TransferItemTable,
kEoB2TransferExpTable,
+ kEoB2TransferStrings1,
+ kEoB2TransferStrings2,
+ kEoB2TransferLabels,
kEoB2IntroStrings,
kEoB2IntroCPSFiles,
diff --git a/engines/kyra/saveload_eob.cpp b/engines/kyra/saveload_eob.cpp
index 714033b569..1f982aa3ab 100644
--- a/engines/kyra/saveload_eob.cpp
+++ b/engines/kyra/saveload_eob.cpp
@@ -74,7 +74,7 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
c->alignment = in.readByte();
c->portrait = in.readSByte();
if (slot == -1 && c->portrait < 0)
- c->portrait += 43;
+ c->portrait = -c->portrait + 43;
c->food = in.readByte();
in.read(c->level, 3);
for (int ii = 0; ii < 3; ii++)
@@ -118,35 +118,37 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
}
_screen->_curPage = 0;
- // No more data required for party transfer
- if (slot == -1)
- return Common::kNoError;
-
- _currentLevel = in.readByte();
- _currentSub = in.readSByte();
- _currentBlock = in.readUint16BE();
- _currentDirection = in.readUint16BE();
- _itemInHand = in.readSint16BE();
- _hasTempDataFlags = in.readUint32BE();
- _partyEffectFlags = in.readUint32BE();
-
- _updateFlags = in.readUint16BE();
- _compassDirection = in.readUint16BE();
- _currentControlMode = in.readUint16BE();
- _updateCharNum = in.readUint16BE();
- _openBookSpellLevel = in.readSByte();
- _openBookSpellSelectedItem = in.readSByte();
- _openBookSpellListOffset = in.readSByte();
- _openBookChar = in.readByte();
- _openBookType = in.readByte();
- _openBookCharBackup = in.readByte();
- _openBookTypeBackup = in.readByte();
- _activeSpellCharId = in.readByte();
- _activeSpellCharacterPos = in.readByte();
- _activeSpell = in.readByte();
- _returnAfterSpellCallback = in.readByte() ? true : false;
-
- _inf->loadState(in);
+ if (slot == -1) {
+ // Skip all settings which aren't necessary for party transfer.
+ // Jump directly to the items list.
+ in.skip(108);
+ } else {
+ _currentLevel = in.readByte();
+ _currentSub = in.readSByte();
+ _currentBlock = in.readUint16BE();
+ _currentDirection = in.readUint16BE();
+ _itemInHand = in.readSint16BE();
+ _hasTempDataFlags = in.readUint32BE();
+ _partyEffectFlags = in.readUint32BE();
+
+ _updateFlags = in.readUint16BE();
+ _compassDirection = in.readUint16BE();
+ _currentControlMode = in.readUint16BE();
+ _updateCharNum = in.readUint16BE();
+ _openBookSpellLevel = in.readSByte();
+ _openBookSpellSelectedItem = in.readSByte();
+ _openBookSpellListOffset = in.readSByte();
+ _openBookChar = in.readByte();
+ _openBookType = in.readByte();
+ _openBookCharBackup = in.readByte();
+ _openBookTypeBackup = in.readByte();
+ _activeSpellCharId = in.readByte();
+ _activeSpellCharacterPos = in.readByte();
+ _activeSpell = in.readByte();
+ _returnAfterSpellCallback = in.readByte() ? true : false;
+
+ _inf->loadState(in);
+ }
for (int i = 0; i < 600; i++) {
EoBItem *t = &_items[i];
@@ -163,6 +165,12 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
t->value = in.readSByte();
}
+ // No more data needed for party transfer
+ if (slot == -1) {
+ _loading = false;
+ return Common::kNoError;
+ }
+
for (int i = 51; i < 65; i++) {
EoBItemType *t = &_itemTypes[i];
t->invFlags = in.readUint16BE();
diff --git a/engines/kyra/staticres_eob.cpp b/engines/kyra/staticres_eob.cpp
index 8ab16f5da9..7bbe9f528f 100644
--- a/engines/kyra/staticres_eob.cpp
+++ b/engines/kyra/staticres_eob.cpp
@@ -1193,9 +1193,6 @@ void EoBEngine::initSpells() {
void DarkMoonEngine::initStaticResource() {
int temp;
_mainMenuStrings = _staticres->loadStrings(kEoB2MainMenuStrings, temp);
- _transferConvertTable = _staticres->loadRawData(kEoB2TransferConvertTable, temp);
- _transferExpTable = _staticres->loadRawDataBe32(kEoB2TransferExpTable, temp);
-
_introStrings = _staticres->loadStrings(kEoB2IntroStrings, temp);
_cpsFilesIntro = _staticres->loadStrings(kEoB2IntroCPSFiles, temp);
@@ -1252,16 +1249,18 @@ void DarkMoonEngine::initStaticResource() {
_errorSlotNoNameString = errorSlotNoNameString[(_flags.lang == Common::EN_ANY) ? 0 : ((_flags.lang == Common::DE_DEU) ? 1 : 2)];
// ScummVM specific
- static const char *transferStringsScummVM[3][4] = {
+ static const char *transferStringsScummVM[3][5] = {
{ "\r We cannot find any EOB save game\r file. Please make sure that the\r save game file with the party\r you wish to transfer is located\r in your ScummVM save game\r directory. If you have set up\r multiple save directories you\r have to copy the EOB save file\r into your EOB II save directory.\r Do you wish to try again?",
"Game ID",
"\r It seems that you have already\r defeated Xanathar here. Do you\r wish to transfer the party that\r finished the game? If not, you\r will be able to select a save\r game from the save game\r dialogue.",
- "Select File"
+ "Select File",
+ "\r\r Please wait..."
},
{ "\r Kein EOB-Spielstand zu finden.\r Bitte Spielstandsdatei mit der\r zu ]bernehmenden Gruppe in das\r ScummVM Spielstands-Verzeichnis\r kopieren. Bei mehreren Spiel-\r stands-Verzeichnissen bitte\r den EOB-Spielstand in das\r EOB II-Spielstands-Verzeichnis\r kopieren. Nochmal versuchen?",
"Game ID",
"\r Wie es scheint, wurde Xanathar\r hier bereits besiegt. Soll die\r Gruppe, mit der das Spiel be-\r endet wurde, ]bernommen werden?\r Falls nicht, kann ein Spielstand\r aus der Spielstandsliste gew[hlt\r werden.",
- "Spiel W[hlen"
+ "Spiel W[hlen",
+ "\r\r Bitte warten..."
},
{ 0, 0, 0, 0
}