aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sprites_eob.cpp
diff options
context:
space:
mode:
authorathrxx2011-08-07 03:31:15 +0200
committerJohannes Schickel2011-12-26 16:18:13 +0100
commitfc5b29fdbcf4170436a32da2c1f4b078b1f1f90f (patch)
tree48bb02e631def4d4d1fb95bcc44daa0af449a1b5 /engines/kyra/sprites_eob.cpp
parentbac0caeb0ff712fe9002985c44c1ea651b86e018 (diff)
downloadscummvm-rg350-fc5b29fdbcf4170436a32da2c1f4b078b1f1f90f.tar.gz
scummvm-rg350-fc5b29fdbcf4170436a32da2c1f4b078b1f1f90f.tar.bz2
scummvm-rg350-fc5b29fdbcf4170436a32da2c1f4b078b1f1f90f.zip
KYRA: (EOB) - implemented some spells and fixed more bugs
Diffstat (limited to 'engines/kyra/sprites_eob.cpp')
-rw-r--r--engines/kyra/sprites_eob.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/engines/kyra/sprites_eob.cpp b/engines/kyra/sprites_eob.cpp
index 802ba4e4c8..945ccaca17 100644
--- a/engines/kyra/sprites_eob.cpp
+++ b/engines/kyra/sprites_eob.cpp
@@ -54,8 +54,8 @@ int LolEobBaseEngine::getBlockDistance(uint16 block1, uint16 block2) {
namespace Kyra {
void EobCoreEngine::loadMonsterShapes(const char *filename, int monsterIndex, bool hasDecorations, int encodeTableIndex) {
- Common::String s = _flags.gameID == GI_EOB1 && !scumm_stricmp(filename, "spider") ? "spider1" : filename;
- if (GI_EOB1 && !scumm_stricmp(filename, "rust"))
+ Common::String s = filename;
+ if (GI_EOB1 && !scumm_stricmp(filename, "rust") || !scumm_stricmp(filename, "drider") || !scumm_stricmp(filename, "spider") || !scumm_stricmp(filename, "mantis") || !scumm_stricmp(filename, "xorn"))
s += "1";
_screen->loadShapeSetBitmap(s.c_str(), 3, 3);
@@ -147,7 +147,7 @@ const uint8 *EobCoreEngine::loadActiveMonsterData(const uint8 *data, int level)
uint32 ct = _system->getMillis();
for (int i = 0x20; i < 0x24; i++) {
int32 del = _timer->getDelay(i);
- _timer->setNextRun(i, (i & 1) ? ct + (del >> 1) : ct + del);
+ _timer->setNextRun(i, (i & 1) ? ct + (del >> 1) * _tickLength : ct + del * _tickLength);
}
if (_hasTempDataFlags & (1 << (level - 1)))
@@ -178,7 +178,7 @@ void EobCoreEngine::initMonster(int index, int unit, uint16 block, int pos, int
if (index & 1)
unit++;
- m->stepsTillRemoteAttack = _flags.gameID == GI_EOB2 ? rollDice(1, 3, 0) : 0;
+ m->stepsTillRemoteAttack = _flags.gameID == GI_EOB2 ? rollDice(1, 3, 0) : 5;
m->type = type;
m->numRemoteAttacks = p->numRemoteAttacks;
m->curRemoteWeapon = 0;
@@ -278,7 +278,7 @@ void EobCoreEngine::updateAttackingMonsterFlags() {
_inf->setFlag(0x800);
}
-const int8 *EobCoreEngine::getMonsterBlockPositions(uint16 block) {
+const int8 *EobCoreEngine::getMonstersOnBlockPositions(uint16 block) {
memset(_monsterBlockPosArray, -1, sizeof(_monsterBlockPosArray));
for (int8 i = 0; i < 30; i++) {
if (_monsters[i].block != block)
@@ -289,8 +289,8 @@ const int8 *EobCoreEngine::getMonsterBlockPositions(uint16 block) {
return _monsterBlockPosArray;
}
-int EobCoreEngine::getClosestMonsterPos(int charIndex, int block) {
- const int8 *pos = getMonsterBlockPositions(block);
+int EobCoreEngine::getClosestMonster(int charIndex, int block) {
+ const int8 *pos = getMonstersOnBlockPositions(block);
if (pos[4] != -1)
return pos[4];
@@ -915,7 +915,7 @@ bool EobCoreEngine::updateMonsterTryDistanceAttack(EobMonsterInPlay *m) {
if (!m->numRemoteAttacks || ((_flags.gameID == GI_EOB1) && !(p->capsFlags & 0x40)))
return false;
- if ((_flags.gameID == GI_EOB1 && m->stepsTillRemoteAttack == 5) || (_flags.gameID == GI_EOB2 && rollDice(1, 3) > m->stepsTillRemoteAttack)) {
+ if ((_flags.gameID == GI_EOB1 && m->stepsTillRemoteAttack < 5) || (_flags.gameID == GI_EOB2 && (rollDice(1, 3) > m->stepsTillRemoteAttack))) {
m->stepsTillRemoteAttack++;
return false;
}
@@ -940,8 +940,8 @@ bool EobCoreEngine::updateMonsterTryDistanceAttack(EobMonsterInPlay *m) {
snd_processEnvironmentalSoundEffect(31, m->block);
break;
case 10:
- launchMagicObject(-1, _monsterDistAttType10[m->numRemoteAttacks], m->block, m->pos, m->dir);
- snd_processEnvironmentalSoundEffect(_monsterDistAttSfx10[m->numRemoteAttacks], m->block);
+ launchMagicObject(-1, _enemyMageSpellList[m->numRemoteAttacks], m->block, m->pos, m->dir);
+ snd_processEnvironmentalSoundEffect(_enemyMageSfx[m->numRemoteAttacks], m->block);
break;
case 11:
itm = duplicateItem(60);