scummvm/engines/saga/itedata.cpp

485 lines
27 KiB
C++

/* ScummVM - Scumm Interpreter
* Copyright (C) 2004-2006 The ScummVM project
*
* The ReInherit Engine is (C)2000-2003 by Daniel Balsom.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $URL$
* $Id$
*
*/
// Actor and Object data tables
#include "saga/saga.h"
#include "saga/itedata.h"
#include "saga/sagaresnames.h"
#include "saga/sndres.h"
namespace Saga {
ActorTableData ITE_ActorTable[ITE_ACTORCOUNT] = {
// Original used so called permanent actors for first three and that was designed by
// EXTENDED object flag. They contained frames in more than one resource. We use
// different technique here see "Appending to sprite list" in loadActorResources()
// flags name scene x y z spr frm scp col
// ------------ ---- ---- ---- ----- ---- ---- ---- --- ---- -- -- --
{ kProtagonist | kExtended,
0, 1, 0, 0, 0, 37, 135, 0, 1, 0, 0, 0}, // map party
// spr and frm numbers taken from permanent actors list
{ kFollower | kExtended,
1, 0, 0, 0, 0, 45, 177, 1, 132, 0, 0, 0}, // Okk
{ kFollower | kExtended,
2, 0, 0, 0, 0, 48, 143, 2, 161, 0, 0, 0}, // Eeah
{ 0, 3, 0, 240, 480, 0, 115, 206, 0, 25, 0, 0, 0}, // albino ferret
{ 0, 4, 17, 368, 400, 0, 115, 206, 4, 49, 0, 0, 0}, // moneychanger
{ 0, 5, 11, 552, 412, 0, 54, 152, 1, 171, 0, 0, 0}, // Sist
{ 0, 17, 2, 1192, 888, 0, 57, 153, 17, 49, 0, 0, 0}, // worker ferret 1
{ 0, 17, 2, 816, 1052, 0, 57, 153, 18, 49, 0, 0, 0}, // worker ferret 2
{ 0, 17, 2, 928, 932, 0, 58, 153, 19, 49, 0, 0, 0}, // worker ferret 3
{ 0, 17, 2, 1416, 1160, 0, 58, 153, 20, 49, 0, 0, 0}, // worker ferret 4
{ 0, 19, 49, 1592, 1336, 0, 92, 175, 15, 162, 0, 0, 0}, // faire merchant 1 (bear)
{ 0, 20, 49, 744, 824, 0, 63, 156, 19, 112, 0, 4, 4}, // faire merchant 2 (ferret)
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire merchant 3
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire merchant 4
{ 0, 9, 49, 1560, 1624, 0, 94, 147, 18, 132, 0, 4, 4}, // faire goer 1a (rat)
{ 0, 56, 49, 1384, 792, 0, 95, 193, 20, 72, 0, 0, 0}, // faire goer 1b (otter)
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire goer 2a
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire goer 2b
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire goer 3a
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire goer 3b
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire goer 4a
{ 0, 19, 0, 1592, 1336, 0, 92, 175, 0, 171, 0, 0, 0}, // faire goer 4b
{ 0, 18, 32, 764, 448, 0, 55, 150, 0, 48, 10, 4, 4}, // Scorry
{ 0, 35, 32, 0, 0, 0, 56, 151, 0, 112, 0, 0, 0}, // grand puzzler
{ 0, 36, 32, 0, 0, 0, 105, 142, 0, 155, 0, 0, 0}, // Rhene
{ 0, 32, 32, 0, 0, 0, 91, 190, 0, 98, 0, 0, 0}, // elk captain
{ 0, 31, 32, 0, 0, 0, 90, 189, 0, 171, 0, 0, 0}, // elk guard 1
{ 0, 31, 32, 0, 0, 0, 90, 189, 0, 171, 0, 0, 0}, // elk guard 2
{ 0, 31, 32, 0, 0, 0, 90, 189, 0, 171, 0, 0, 0}, // elk guard 3
{ 0, 31, 32, 0, 0, 0, 79, 172, 0, 18, 0, 0, 0}, // boar sergeant
{ 0, 21, 50, 664, 400, 0, 76, 171, 2, 74, 0, 4, 4}, // boar sentry 1
{ 0, 21, 50, 892, 428, 0, 76, 171, 2, 74, 0, 4, 4}, // boar sentry 2
{ 0, 9, 51, 904, 936, 0, 51, 145, 35, 5, 0, 0, 0}, // hall rat 1
{ 0, 9, 51, 872, 840, 0, 51, 145, 36, 5, 0, 0, 0}, // hall rat 2
{ 0, 9, 51, 1432, 344, 0, 51, 145, 37, 5, 0, 0, 0}, // hall rat 3
{ 0, 9, 51, 664, 472, 0, 51, 145, 38, 5, 0, 0, 0}, // hall rat 4
{ 0, 10, 51, 1368, 1464, 0, 80, 146, 39, 147, 0, 0, 0}, // book rat 1
{ 0, 10, 51, 1416, 1624, 0, 80, 146, 40, 147, 0, 0, 0}, // book rat 2
{ 0, 10, 51, 1752, 120, 0, 80, 146, 41, 147, 0, 0, 0}, // book rat 3
{ 0, 10, 51, 984, 408, 0, 80, 146, 42, 147, 0, 0, 0}, // book rat 4
{ 0, 14, 52, 856, 376, 0, 82, 174, 8, 73, 0, 0, 0}, // grounds servant 1
{ 0, 14, 52, 808, 664, 0, 82, 174, 9, 73, 0, 0, 0}, // grounds servant 2
{ 0, 14, 52, 440, 568, 0, 82, 174, 10, 73, 0, 0, 0}, // grounds servant 3
{ 0, 14, 52, 392, 776, 0, 82, 174, 11, 73, 0, 0, 0}, // grounds servant 4
{ 0, 21, 4, 240, 384, 0, 79, 172, 0, 18, 0, 2, 2}, // boar sentry 3 (by doorway)
{ 0, 23, 4, 636, 268, 0, 77, 173, 0, 74, 0, 4, 4}, // boar courtier
{ 0, 22, 4, 900, 320, 0, 78, 179, 0, 60, 0, 4, 4}, // boar king
{ 0, 14, 4, 788, 264, 0, 75, 170, 0, 171, 0, 2, 2}, // boar servant 1
{ 0, 14, 4, 1088, 264, 0, 75, 170, 0, 171, 0, 6, 6}, // boar servant 2
{ 0, 24, 19, 728, 396, 0, 65, 181, 47, 146, 0, 6, 6}, // glass master
{ 0, 24, 21, -20, -20, 0, 66, 182, 0, 146, 0, 4, 4}, // glass master (with orb)
{ kCycle, 25, 19, 372, 464, 0, 67, 183, 73, 146, 0, 2, 2}, // glass worker
{ 0, 26, 5, 564, 476, 27, 53, 149, 1, 5, 0, 4, 4}, // door rat
{ kCycle, 27, 31, 868, 344, 0, 81, 180, 0, 171, 0, 4, 4}, // bees
{ 0, 28, 73, 568, 380, 0, 83, 176, 30, 120, 0, 4, 4}, // fortune teller
{ 0, 14, 7, 808, 480, 0, 82, 174, 9, 73, 0, 0, 0}, // orb messenger
{ 0, 29, 10, 508, 432, 0, 84, 186, 6, 112, 0, 4, 4}, // elk king
{ 0, 33, 10, 676, 420, 0, 86, 184, 6, 171, 0, 4, 4}, // elk chancellor
{ 0, 30, 10, 388, 452, 0, 88, 185, 6, 171, 0, 4, 4}, // elk courtier 1
{ 0, 30, 10, 608, 444, 0, 89, 185, 6, 171, 0, 4, 4}, // elk courtier 2
{ 0, 31, 10, 192, 468, 0, 90, 189, 6, 171, 0, 4, 4}, // elk throne guard 1
{ 0, 31, 10, 772, 432, 0, 90, 189, 6, 171, 0, 4, 4}, // elk throne guard 2
{ 0, 14, 10, 1340, 444, 0, 87, 188, 6, 171, 0, 4, 4}, // elk servant
{ 0, 20, 18, 808, 360, 7, 60, 154, 64, 88, 0, 4, 4}, // hardware ferret
{ 0, 34, 49, 1128, 1256, 0, 96, 191, 16, 35, 0, 4, 4}, // porcupine
{ 0, 34, 49, 1384, 792, 0, 93, 192, 17, 66, 0, 4, 4}, // faire ram
{ 0, 24, 21, 0, -40, 0, 65, 181, 50, 146, 0, 6, 6}, // glass master 2
{ 0, 3, 21, 0, -40, 0, 64, 158, 49, 112, 0, 0, 0}, // Sakka
{ 0, 17, 21, 0, -40, 0, 62, 157, 74, 48, 0, 0, 0}, // lodge ferret 1
{ 0, 17, 21, 0, -40, 0, 62, 157, 74, 49, 0, 0, 0}, // lodge ferret 2
{ 0, 17, 21, 0, -40, 0, 62, 157, 74, 50, 0, 0, 0}, // lodge ferret 3
{ 0, 12, 244, 1056, 504, 0, 107, 167, 21, 124, 0, 6, 6}, // Elara
{ 0, 8, 33, 248, 440, 0, 68, 169, 14, 112, 0, 0, 0}, // Tycho
{ 0, 11, 23, 308, 424, 0, 106, 166, 6, 48, 0, 2, 2}, // Alamma
{ 0, 17, 2, 1864, 1336, 0, 58, 153, 21, 49, 0, 0, 0}, // worker ferret 5
{ 0, 17, 2, 760, 216, 0, 58, 153, 22, 49, 0, 0, 0}, // worker ferret 6
{ 0, 44, 29, 0, 0, 0, 72, 159, 0, 112, 0, 0, 0}, // Prince
{ 0, 45, 29, 0, 0, 0, 71, 163, 0, 146, 0, 6, 6}, // harem girl 1
{ 0, 45, 29, 0, 0, 0, 71, 163, 0, 124, 0, 2, 2}, // harem girl 2
{ 0, 45, 29, 0, 0, 0, 71, 163, 0, 169, 0, 0, 0}, // harem girl 3
{ 0, 7, 29, 0, 0, 0, 69, 164, 0, 4, 0, 0, 0}, // dog sergeant
{ 0, 7, 29, 0, 0, 0, 70, 165, 0, 4, 0, 0, 0}, // throne dog guard 1
{ 0, 7, 257, 552, 408, 0, 70, 165, 0, 4, 0, 2, 2}, // throne dog guard 2
{ 0, 7, 29, 0, 0, 0, 70, 165, 0, 4, 0, 0, 0}, // throne dog guard 3
{ 0, 7, 29, 0, 0, 0, 70, 165, 0, 4, 0, 0, 0}, // throne dog guard 4
{ 0, 7, 257, 712, 380, 0, 69, 164, 0, 4, 0, 4, 4}, // throne dog guard 5
{ 0, 7, 29, 0, 0, 0, 69, 164, 0, 4, 0, 0, 0}, // throne dog guard 6
{ 0, 7, 29, 0, 0, 0, 69, 164, 0, 4, 0, 0, 0}, // throne dog guard 7
{ 0, 7, 29, 0, 0, 0, 69, 164, 0, 4, 0, 0, 0}, // throne dog guard 8
{ 0, 7, 29, 0, 0, 0, 69, 164, 0, 4, 0, 0, 0}, // throne dog guard 9
{ 0, 7, 0, 0, 0, 0, 69, 164, 0, 4, 0, 0, 0}, // throne dog guard 10
{ 0, 7, 29, 0, 0, 0, 70, 165, 0, 4, 0, 0, 0}, // throne dog guard 11
{ 0, 47, 30, 0, 0, 0, 102, 199, 1, 186, 0, 0, 0}, // old wolf ferryman
{ 0, 48, 69, 0, 0, 0, 109, 202, 35, 26, 0, 0, 0}, // cat village wildcat
{ 0, 49, 69, 0, 0, 0, 109, 202, 35, 26, 0, 0, 0}, // cat village attendant
{ 0, 50, 69, 0, 0, 0, 111, 203, 16, 67, 0, 0, 0}, // cat village Prowwa
{ 0, 51, 20, 0, 0, 0, 112, 204, 15, 26, 0, 0, 0}, // Prowwa hut Mirrhp
{ 0, 50, 20, 0, 0, 0, 111, 203, 14, 67, 0, 0, 0}, // Prowwa hut Prowwa
{ 0, 49, 20, 0, 0, 0, 109, 202, 35, 26, 0, 0, 0}, // Prowwa hut attendant
{ 0, 48, 256, 0, 0, 0, 109, 202, 35, 26, 0, 0, 0}, // wildcat sentry
{ 0, 21, 32, 0, 0, 0, 76, 171, 0, 171, 0, 0, 0}, // boar warrior 1
{ 0, 21, 32, 0, 0, 0, 76, 171, 0, 171, 0, 0, 0}, // boar warrior 2
{ 0, 21, 32, 0, 0, 0, 76, 171, 0, 171, 0, 0, 0}, // boar warrior 3
{ 0, 52, 15, 152, 400, 0, 108, 168, 19, 48, 10, 2, 2}, // Alamma's voice
{ 0, 47, 251, 640, 360, 0, 113, 205, 5, 186, 10, 2, 2}, // ferry on ocean
{ 0, 41, 75, 152, 400, 0, 100, 197, 5, 81, 0, 0, 0}, // Shiala
{ 0, 44, 9, 0, 0, 0, 73, 160, 54, 112, 0, 0, 0}, // Prince (asleep)
{ 0, 0, 22, -20, -20, 0, 118, 209, 0, 171, 0, 0, 0}, // Rif and Eeah (at rockslide)
{ 0, 1, 22, 0, 0, 0, 119, 210, 0, 171, 0, 0, 0}, // Okk (at rockslide)
{ 0, 0, 22, -20, -20, 0, 118, 209, 0, 171, 0, 0, 0}, // Rif and Eeah (at rockslide w. rope)
{ 0, 1, 22, 0, 0, 0, 119, 210, 0, 171, 0, 0, 0}, // Okk (at rockslide w. rope)
{ 0, 53, 42, 640, 400, 0, 104, 201, 8, 141, 0, 0, 0}, // Kylas Honeyfoot
{ 0, 54, 21, -20, -20, 0, 120, 211, 48, 238, 0, 0, 0}, // Orb of Hands
{ 0, 0, 4, -20, -20, 0, 42, 140, 0, 1, 0, 0, 0}, // Rif (muddy)
{ 0, 26, 5, -20, -20, 27, 52, 148, 1, 5, 0, 4, 4}, // door rat (standing)
{ 0, 36, 4, -20, -20, 0, 116, 207, 0, 155, 0, 0, 0}, // boar with Rhene 1
{ 0, 36, 0, -20, -20, 0, 117, 208, 0, 155, 0, 0, 0}, // boar with Rhene 2
{ 0, 46, 252, -20, -20, 0, 74, 162, 29, 34, 0, 0, 0}, // dog jailer
{ 0, 0, 32, -20, -20, 0, 41, 137, 0, 1, 0, 0, 0}, // Rif (tourney)
{ 0, 0, 259, -20, -20, 0, 44, 138, 0, 1, 0, 0, 0}, // cliff rat
{ 0, 0, 5, -20, -20, 0, 43, 139, 0, 1, 0, 0, 0}, // Rif (cloaked)
{ 0, 0, 31, -20, -20, 0, 39, 136, 0, 1, 0, 0, 0}, // Rif (oak tree scene)
{ 0, 0, 252, -20, -20, 0, 39, 136, 0, 1, 0, 0, 0}, // Rif (jail cell scene)
{ 0, 0, 15, -20, -20, 0, 39, 136, 0, 1, 0, 0, 0}, // Rif (outside Alamma's)
{ 0, 0, 20, -20, -20, 0, 39, 136, 0, 1, 0, 0, 0}, // Rif (sick tent)
{ 0, 0, 25, -20, -20, 0, 39, 136, 0, 1, 0, 0, 0}, // Rif (gem room)
{ 0, 0, 272, -20, -20, 0, 40, 141, 0, 1, 0, 0, 0}, // Rif (dragon maze)
{ 0, 0, 50, -20, -20, 0, 39, 136, 0, 1, 0, 0, 0}, // Rif (boar entry gate)
{ 0, 50, 71, -20, -20, 0, 111, 203, 0, 67, 0, 0, 0}, // Prowwa (dog castle back)
{ 0, 50, 274, -20, -20, 0, 111, 203, 0, 67, 0, 0, 0}, // Prowwa (cat festival)
{ 0, 50, 274, -20, -20, 0, 110, 212, 0, 171, 0, 0, 0}, // cat festival dancer 1
{ 0, 50, 274, -20, -20, 0, 110, 212, 0, 171, 0, 0, 0}, // cat festival dancer 2
{ 0, 50, 274, -20, -20, 0, 110, 212, 0, 171, 0, 0, 0}, // cat festival dancer 3
{ 0, 57, 272, 909, 909, 48, 121, 213, 0, 171, 0, 0, 0}, // komodo dragon
{ 0, 58, 15, -20, -20, 0, 122, 214, 0, 171, 0, 0, 0}, // letter from Elara
{ 0, 37, 246, -20, -20, 0, 97, 194, 0, 141, 0, 0, 0}, // Gar (wolves' cage)
{ 0, 38, 246, -20, -20, 0, 98, 195, 0, 27, 0, 0, 0}, // Wrah (wolves' cage)
{ 0, 59, 246, -20, -20, 0, 103, 200, 0, 26, 0, 0, 0}, // Chota (wolves' cage)
{ 0, 41, 245, -20, -20, 0, 100, 197, 0, 81, 0, 0, 0}, // Shiala (wolves' cage)
{ 0, 47, 250, 640, 360, 0, 114, 205, 0, 186, 10, 2, 2}, // ferry on ocean
{ 0, 0, 278, -20, -20, 0, 40, 141, 0, 1, 0, 0, 0}, // Rif (falling in tunnel trap door)
{ 0, 0, 272, -20, -20, 0, 40, 141, 0, 1, 0, 0, 0}, // Rif (falling in dragon maze)
{ 0, 41, 77, -20, -20, 0, 100, 197, 24, 81, 0, 0, 0}, // Shiala (grotto)
{ 0, 37, 261, -20, -20, 0, 97, 194, 0, 141, 0, 0, 0}, // Gar (ambush)
{ 0, 38, 261, -20, -20, 0, 98, 195, 0, 27, 0, 0, 0}, // Wrah (ambush)
{ 0, 39, 261, -20, -20, 0, 99, 196, 0, 5, 0, 0, 0}, // dark claw wolf (ambush)
{ 0, 39, 261, -20, -20, 0, 99, 196, 0, 5, 0, 0, 0}, // dark claw wolf (ambush)
{ 0, 39, 261, -20, -20, 0, 99, 196, 0, 5, 0, 0, 0}, // dark claw wolf (ambush)
{ 0, 39, 261, -20, -20, 0, 99, 196, 0, 5, 0, 0, 0}, // dark claw wolf (ambush)
{ 0, 59, 279, -20, -20, 0, 103, 200, 0, 26, 0, 0, 0}, // Chota (top of dam)
{ 0, 38, 279, -20, -20, 0, 98, 195, 0, 27, 0, 0, 0}, // Wrah (top of dam)
{ 0, 42, 77, -20, -20, 0, 101, 198, 25, 171, 0, 0, 0}, // Shiala's spear
{ 0, 59, 281, -20, -20, 0, 103, 200, 26, 26, 0, 0, 0}, // Chota (lab)
{ 0, 59, 279, -20, -20, 0, 123, 215, 0, 1, 0, 0, 0}, // Rif (finale)
{ 0, 59, 279, -20, -20, 0, 123, 215, 0, 132, 0, 0, 0}, // Okk (finale)
{ 0, 59, 279, -20, -20, 0, 123, 215, 0, 161, 0, 0, 0}, // Eeah (finale)
{ 0, 54, 279, -20, -20, 0, 120, 211, 0, 133, 0, 6, 6}, // Orb of Storms (top of dam)
{ 0, 44, 9, -20, -20, 0, 124, 161, 0, 171, 0, 6, 6}, // Prince's snores
{ 0, 7, 255, 588, 252, 0, 70, 165, 0, 3, 0, 2, 2}, // hall dog guard 1
{ 0, 7, 255, 696, 252, 0, 70, 165, 0, 5, 0, 6, 6}, // hall dog guard 2
{ 0, 36, 4, 0, 0, 0, 105, 142, 0, 155, 0, 0, 0}, // Rhene
{ 0, 44, 272, 1124, 1124, 120, 72, 159, 0, 112, 0, 0, 0}, // Prince (dragon maze)
{ 0, 7, 272, 1124, 1108, 120, 70, 165, 0, 4, 0, 0, 0}, // dog heckler 1 (dragon maze)
{ 0, 7, 272, 1108, 1124, 120, 70, 165, 0, 4, 0, 0, 0}, // dog heckler 2 (dragon maze)
{ 0, 29, 288, 508, 432, 0, 85, 187, 0, 112, 0, 4, 4}, // elk king (finale)
{ 0, 29, 0, 508, 432, 0, 84, 186, 0, 99, 0, 4, 4}, // crowd voice 1 (finale)
{ 0, 29, 0, 508, 432, 0, 84, 186, 0, 98, 0, 4, 4}, // crowd voice 2 (finale)
{ 0, 29, 0, 508, 432, 0, 84, 186, 0, 104, 0, 4, 4}, // crowd voice 3 (finale)
{ 0, 29, 0, 508, 432, 0, 84, 186, 0, 99, 0, 4, 4}, // crowd voice 4 (finale)
{ 0, 36, 288, 0, 0, 0, 105, 142, 0, 155, 0, 0, 0}, // Rhene (finale)
{ 0, 1, 27, -20, -20, 0, 47, 178, 0, 132, 0, 0, 0}, // Okk (temple gate)
{ 0, 1, 252, -20, -20, 0, 47, 178, 0, 132, 0, 0, 0}, // Okk (jail cell)
{ 0, 1, 25, -20, -20, 0, 47, 178, 0, 132, 0, 0, 0}, // Okk (gem room)
{ 0, 1, 259, -20, -20, 0, 47, 178, 0, 132, 0, 0, 0}, // Okk (cliff)
{ 0, 1, 279, -20, -20, 0, 47, 178, 0, 132, 0, 0, 0}, // Okk (dam top)
{ 0, 1, 273, -20, -20, 0, 47, 178, 0, 132, 0, 0, 0}, // Okk (human ruins)
{ 0, 1, 26, -20, -20, 0, 8, 178, 0, 171, 0, 0, 0}, // puzzle pieces
{ 0, 1, 0, -20, -20, 0, 0, 0, 0, 50, 0, 0, 0}, // poker dog 1
{ 0, 1, 0, -20, -20, 0, 0, 0, 0, 82, 0, 0, 0}, // poker dog 2
{ 0, 1, 0, -20, -20, 0, 0, 0, 0, 35, 0, 0, 0}, // poker dog 3
{ 0, 9, 74, -20, -20, 0, 51, 145, 0, 5, 0, 0, 0} // sundial rat
};
ObjectTableData ITE_ObjectTable[ITE_OBJECTCOUNT] = {
{ 8, 49, 1256, 760, 0, 9, 5, kObjNotFlat }, // Magic Hat
{ 9, 52, 1080, 1864, 0, 68, 4, kObjUseWith }, // Berries
{ 10, 259, 744, 524, 0, 79, 42, kObjUseWith }, // Card Key
{ 11, 0, 480, 480, 0, 69, 6, 0 }, // Foot Print
{ 12, 0, 480, 480, 0, 13, 38, kObjUseWith }, // Power Cell
{ 13, 28, 640, 412, 40, 14, 15, kObjUseWith }, // Digital Clock
{ 14, 0, 480, 480, 0, 15, 41, kObjUseWith }, // Oil Lamp
{ 15, 24, 868, 456, 35, 46, 13, kObjUseWith }, // Magnetic Key
{ 16, 0, 480, 480, 0, 17, 7, kObjUseWith }, // Plaster
{ 17, 249, 320, 476, 45, 18, 44, 0 }, // Trophy
{ 18, 0, 480, 480, 0, 19, 20, 0 }, // Coins
{ 19, 19, 600, 480, 0, 20, 8, 0 }, // Lens Fragments
{ 20, 0, 1012, 568, 80, 44, 10, kObjUseWith }, // Key to jail cell
{ 21, 0, 480, 480, 0, 22, 9, 0 }, // Remade lens
{ 22, 0, 480, 480, 0, 23, 21, 0 }, // Tycho's Map
{ 23, 0, 480, 480, 0, 24, 23, 0 }, // Silver Medallion
{ 24, 0, 480, 480, 0, 25, 24, 0 }, // Mud in Fur
{ 25, 0, 480, 480, 0, 26, 25, 0 }, // Gold Ring
{ 27, 13, 1036, 572, 40, 47, 14, kObjUseWith }, // Screwdriver
{ 28, 0, 480, 480, 0, 29, 26, 0 }, // Apple Token
{ 29, 0, 480, 480, 0, 30, 22, kObjUseWith }, // Letter from Elara
{ 30, 0, 164, 440, 0, 31, 16, kObjUseWith }, // Spoon
{ 32, 0, 480, 480, 0, 33, 43, 0 }, // Catnip
{ 33, 31, 580, 392, 0, 45, 11, 0 }, // Twigs
{ 35, 0, 468, 480, 0, 36, 12, kObjUseWith }, // Empty Bowl (also bowl of honey)
{ 37, 0, 480, 480, 0, 38, 45, kObjUseWith }, // Needle and Thread
{ 38, 25, 332, 328, 0, 48, 19, 0 }, // Rock Crystal
{ 39, 0, 480, 480, 0, 40, 0, kObjUseWith }, // Salve
{ 40, 269, 644, 416, 0, 41, 39, kObjNotFlat }, // Electrical Cable
{ 41, 12, 280, 516, 0, 43, 17, kObjUseWith }, // Piece of flint
{ 42, 5, 876, 332, 32, 65, 18, 0 }, // Rat Cloak
{ 43, 52, 556, 1612, 0, 49, 28, kObjUseWith | kObjNotFlat }, // Bucket
{ 48, 52, 732, 948, 0, 50, 27, kObjUseWith }, // Cup
{ 49, 52, 520, 1872, 0, 53, 29, 0 }, // Fertilizer
{ 50, 52, 1012, 1268, 0, 52, 30, 0 }, // Feeder
{ 51, 252, -20, -20, 0, 71, 32, kObjUseWith | kObjNotFlat }, // Bowl in jail cell
{ 53, 252, 1148, 388, 0, 70, 33, 0 }, // Loose stone block in jail cell
{ 26, 12, 496, 368, 0, 76, 31, 0 }, // Coil of Rope from Quarry
{ 54, 281, 620, 352, 0, 80, 46, 0 } // Orb of Storms in Dam Lab
};
FxTable ITE_SfxTable[ITE_SFXCOUNT] = {
{ FX_DOOR_OPEN, 127 },
{ FX_DOOR_CLOSE, 127 },
{ FX_RUSH_WATER, 63 }, // Floppy volume: 127
{ FX_RUSH_WATER, 26 }, // Floppy volume: 40
{ FX_CRICKET, 64 },
{ FX_PORTICULLIS, 84 }, // Floppy volume: 127
{ FX_CLOCK_1, 64 },
{ FX_CLOCK_2, 64 },
{ FX_DAM_MACHINE, 64 },
{ FX_DAM_MACHINE, 40 },
{ FX_HUM1, 64 },
{ FX_HUM2, 64 },
{ FX_HUM3, 64 },
{ FX_HUM4, 64 },
{ FX_WATER_LOOP_S, 32 }, // Floppy volume: 64
{ FX_SURF, 42 }, // Floppy volume: 127
{ FX_SURF, 32 }, // Floppy volume: 64
{ FX_FIRELOOP, 64 }, // Floppy volume: 96
{ FX_SCRAPING, 84 }, // Floppy volume: 127
{ FX_BEE_SWARM, 64 }, // Floppy volume: 96
{ FX_BEE_SWARM, 26 }, // Floppy volume: 40
{ FX_SQUEAKBOARD, 64 },
{ FX_KNOCK, 127 },
{ FX_COINS, 32 }, // Floppy volume: 48
{ FX_STORM, 84 }, // Floppy volume: 127
{ FX_DOOR_CLOSE_2, 84 }, // Floppy volume: 127
{ FX_ARCWELD, 84 }, // Floppy volume: 127
{ FX_RETRACT_ORB, 127 },
{ FX_DRAGON, 127 },
{ FX_SNORES, 127 },
{ FX_SPLASH, 127 },
{ FX_LOBBY_DOOR, 127 },
{ FX_CHIRP_LOOP, 26 }, // Floppy volume: 40
{ FX_DOOR_CREAK, 96 },
{ FX_SPOON_DIG, 64 },
{ FX_CROW, 96 },
{ FX_COLDWIND, 42 }, // Floppy volume: 64
{ FX_TOOL_SND_1, 96 },
{ FX_TOOL_SND_2, 127 },
{ FX_TOOL_SND_3, 64 },
{ FX_DOOR_METAL, 96 },
{ FX_WATER_LOOP_S, 32 },
{ FX_WATER_LOOP_L, 32 }, // Floppy volume: 64
{ FX_DOOR_OPEN_2, 127 },
{ FX_JAIL_DOOR, 64 },
{ FX_KILN_FIRE, 53 }, // Floppy volume: 80
// Only in the CD version
{ FX_CROWD_01, 64 },
{ FX_CROWD_02, 64 },
{ FX_CROWD_03, 64 },
{ FX_CROWD_04, 64 },
{ FX_CROWD_05, 64 },
{ FX_CROWD_06, 64 },
{ FX_CROWD_07, 64 },
{ FX_CROWD_08, 64 },
{ FX_CROWD_09, 64 },
{ FX_CROWD_10, 64 },
{ FX_CROWD_11, 64 },
{ FX_CROWD_12, 64 },
{ FX_CROWD_13, 64 },
{ FX_CROWD_14, 64 },
{ FX_CROWD_15, 64 },
{ FX_CROWD_16, 64 },
{ FX_CROWD_17, 64 }
};
const char *ITEinterfaceTextStrings[][52] = {
{
"Walk to", "Look At", "Pick Up", "Talk to", "Open",
"Close", "Use", "Give", "Options", "Test",
"Demo", "Help", "Quit Game", "Fast", "Slow",
"On", "Off", "Continue Playing", "Load", "Save",
"Game Options", "Reading Speed", "Music", "Sound", "Cancel",
"Quit", "OK", "Mid", "Click", "10%",
"20%", "30%", "40%", "50%", "60%",
"70%", "80%", "90%", "Max", "Quit the Game?",
"Load Successful!", "Enter Save Game Name", "Give %s to %s", "Use %s with %s",
"[New Save Game]",
"I can't pick that up.",
"I see nothing special about it.",
"There's no place to open it.",
"There's no opening to close.",
"I don't know how to do that.",
"Show Dialog",
"What is Rif's reply?"
},
// German
{
"Gehe zu", "Schau an", "Nimm", "Rede mit", "\231ffne",
"Schlie$e", "Benutze", "Gib", "Optionen", "Test",
"Demo", "Hilfe", "Spiel beenden", "S", "L",
"An", "Aus", "Weiterspielen", "Laden", "Sichern",
"Spieleoptionen", "Lesegeschw.", "Musik", "Sound", "Abbr.",
"Beenden", NULL, "M", "Klick", "10%",
"20%", "30%", "40%", "50%", "60%",
"70%", "80%", "90%", "Max", "Spiel beenden?",
"Spielstand geladen!", "Bitte Namen eingeben", "Gib %s zu %s", "Benutze %s mit %s",
"[Neuer Spielstand]",
"Das kann ich nicht aufnehmen.",
"Ich sehe nichts besonderes.",
"Das kann man nicht \224ffnen.",
"Hier ist keine \231ffnung zum Schlie$en.",
"Ich wei$ nicht, wie ich das machen soll.",
"Text zeigen",
"Wie lautet die Antwort?"
}
};
Point pieceOrigins[PUZZLE_PIECES] = {
Point(268, 18),
Point(270, 51),
Point( 19, 51),
Point( 73, 0),
Point( 0, 34),
Point(215, 0),
Point(159, 0),
Point( 9, 69),
Point(288, 18),
Point(112, 0),
Point( 27, 88),
Point( 43, 0),
Point( 0, 0),
Point(262, 0),
Point(271, 103)
};
const char *pieceNames[][PUZZLE_PIECES] = {
{ "screwdriver", "pliers", "c-clamp", "wood clamp", "level",
"twine", "wood plane", "claw hammer", "tape measure", "hatchet",
"shears", "ruler", "saw", "mallet", "paint brush"
},
{ "Schraubendreher", "Zange", "Schraubzwinge", "Holzzwinge", "Wasserwaage",
"Bindfaden", "Hobel", "Schusterhammer", "Bandma$", "Beil",
"Schere", "Winkel", "S\204ge", "Hammer", "Pinsel"
}
};
const char *hintStr[][4] = {
{ "Check which pieces could fit in each corner first.",
"Check which corner has the least number of pieces that can fit and start from there.",
"Check each new corner and any new side for pieces that fit.",
"I don't see anything out of place."
},
{ "\232berpr\201fe zun\204chst, welche die Eckteile sein k\224nnten.",
"Schau, in welche Ecke die wenigsten Teile passen, und fang dort an.",
"Untersuche jede Ecke und jede Seite auf Teile, die dort passen k\224nnen.",
"Ich sehe nichts an der falschen Stelle."
}
};
const char *solicitStr[][NUM_SOLICIT_REPLIES] = {
{ "Hey, Fox! Would you like a hint?",
"Would you like some help?",
"Umm...Umm...",
"Psst! want a hint?",
"I would have done this differently, you know."
},
{ "Hey, Fuchs! Brauchst Du \047nen Tip?",
"M\224chtest Du etwas Hilfe?"
"\231hm...\216hm..."
"Psst! \047n Tip vielleicht?"
"Ja, wei$t Du... ich h\204tte das anders gemacht."
}
};
const char portraitList[] = {
RID_ITE_JFERRET_SERIOUS,
RID_ITE_JFERRET_GOOFY,
RID_ITE_JFERRET_SERIOUS,
RID_ITE_JFERRET_GOOFY,
RID_ITE_JFERRET_ALOOF
};
const char *sakkaStr[][NUM_SAKKA] = {
{ "Hey, you're not supposed to help the applicants!",
"Guys! This is supposed to be a test!",
"C'mon fellows, that's not in the rules!"
},
{ "Hey, Du darfst dem Pr\201fling nicht helfen!",
"Hallo?! Dies soll eine Pr\201fung sein!",
"Also, Jungs. Schummeln steht nicht in den Regeln!"
}
};
const char *whineStr[][NUM_WHINES] = {
{ "Aww, c'mon Sakka!",
"One hint won't hurt, will it?",
"Sigh...",
"I think that clipboard has gone to your head, Sakka!",
"Well, I don't recall any specific rule against hinting."
},
{ "Och, sei nicht so, Sakka!"
"EIN Tip wird schon nicht schaden, oder?",
"Seufz..."
"Ich glaube, Du hast ein Brett vor dem Kopf, Sakka!",
"Hm, ich kann mich an keine Regel erinnern, die Tips verbietet."
}
};
const char *optionsStr[][4] = {
{ "\"I'll do this puzzle later.\"",
"\"Yes, I'd like a hint please.\"",
"\"No, thank you, I'd like to try and solve it myself.\"",
"I think the %s is in the wrong place."
},
{ "\"Ich l\224se das Puzzle sp\204ter.\"",
"\"Ja, ich m\224chte einen Tip, bitte.\"",
"\"Nein danke, ich m\224chte das alleine l\224sen.\"",
"Pssst... %s... falsche Stelle..."
}
};
} // End of namespace Saga