aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/eob2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/eob2.cpp')
-rw-r--r--engines/kyra/eob2.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/engines/kyra/eob2.cpp b/engines/kyra/eob2.cpp
index baed595e8c..8f3a10c374 100644
--- a/engines/kyra/eob2.cpp
+++ b/engines/kyra/eob2.cpp
@@ -271,6 +271,24 @@ void DarkMoonEngine::replaceMonster(int unit, uint16 block, int pos, int dir, in
initMonster(index, unit, block, pos, dir, type, shpIndex, mode, h2, randItem, fixedItem);
}
+bool DarkMoonEngine::killMonsterExtra(EobMonsterInPlay *m) {
+ if (_currentLevel == 16 && _currentSub == 1 && (_monsterProps[m->type].flags & 4)) {
+ if (m->type) {
+ _playFinale = true;
+ _runFlag = false;
+ } else {
+ m->hitPointsCur = 150;
+ m->curRemoteWeapon = 0;
+ m->numRemoteAttacks = 255;
+ m->shpIndex++;
+ m->type++;
+ seq_dranDragonTransformation();
+ }
+ return false;
+ }
+ return true;
+}
+
const uint8 *DarkMoonEngine::loadDoorShapes(const char *filename, int doorIndex, const uint8 *shapeDefs) {
_screen->loadEobBitmap(filename, 3, 3);
for (int i = 0; i < 3; i++) {
@@ -319,6 +337,24 @@ void DarkMoonEngine::drawDoorIntern(int type, int, int x, int y, int w, int wall
drawBlockObject(0, 2, _doorSwitches[shapeIndex].shp, _doorSwitches[shapeIndex].x + w, _doorSwitches[shapeIndex].y, 5);
}
+void DarkMoonEngine::restParty_npc() {
+
+}
+
+bool DarkMoonEngine::restParty_extraAbortCondition() {
+ if (_currentLevel != 3)
+ return false;
+
+ seq_nightmare();
+
+ return true;
+}
+
+void DarkMoonEngine::checkPartyStatusExtra() {
+ if (checkScriptFlag(0x10))
+ seq_dranFools();
+}
+
void DarkMoonEngine::drawLightningColumn() {
int f = rollDice(1, 2, -1);
int y = 0;