ASYLUM: implement Special::chapter11()

This commit is contained in:
alxpnv 2021-04-09 16:10:14 +03:00 committed by Eugene Sandulenko
parent 56df11e356
commit bc3ebf36db
No known key found for this signature in database
GPG Key ID: 014D387312D34F08
7 changed files with 442 additions and 35 deletions

View File

@ -519,8 +519,8 @@ void Actor::update() {
break;
case 1:
updateStatus12_Chapter11_Actor1();
return;
getSpecial()->run(NULL, _index);
break;
case 10:
case 11:
@ -2327,16 +2327,6 @@ void Actor::updateStatusEnabled() {
break;
}
}
// XXX
if (getWorld()->chapter == kChapter11 && _index == 9)
// the following block is originally from updateStatus12_Chapter11_Actor1()
if (_vm->isGameFlagNotSet(kGameFlag1099)) {
_vm->setGameFlag(kGameFlag1099);
_reaction[0] = 1;
_reaction[1] = 2;
_reaction[2] = 3;
}
}
void Actor::updateStatusEnabledProcessStatus(int16 testX, int16 testY, uint32 counter, int16 setX, int16 setY) {
@ -2491,28 +2481,6 @@ void Actor::updateStatus12_Chapter2_Actor11() {
}
}
void Actor::updateStatus12_Chapter11_Actor1() {
// Original seems to have lots of dead code here
Actor *actor0 = getScene()->getActor(0);
if (actor0->isVisible())
return;
if (_vm->isGameFlagNotSet(kGameFlag560))
_frameIndex = (_frameIndex + 1) & _frameCount;
if (getWorld()->tickCount1 < (int32)_vm->getTick()
&& !_frameIndex
&& _vm->isGameFlagNotSet(kGameFlag560)) {
_vm->setGameFlag(kGameFlag560);
hide();
updateStatus(kActorStatusEnabled);
actor0->updateStatus(kActorStatusEnabled);
getWorld()->field_E848C = 0;
getScript()->queueScript(getWorld()->getActionAreaById(1574)->scriptIndex, 1);
}
}
void Actor::updateStatus12_Chapter11() {
if (!_frameIndex)
getSound()->playSound(getWorld()->soundResourceIds[6]);

View File

@ -107,6 +107,7 @@ public:
void setSoundResourceId(ResourceId id) { _soundResourceId = id; }
void setStatus(ActorStatus status) { _status = status; }
void setTransparency(int32 val) { _transparency = val; }
void setTickCount(int32 tickCount) { _tickCount = tickCount; }
void setField638(int32 val) { _field_638 = val; }
void setField934(int32 val) { _field_934 = val; }
@ -132,6 +133,7 @@ public:
bool shouldInvertPriority() { return _invertPriority; }
ResourceId getSoundResourceId() { return _soundResourceId; }
ActorStatus getStatus() { return _status; }
int32 getTickCount() { return _tickCount; }
int32 getField638() { return _field_638; }
int32 getField934() { return _field_934; }
@ -438,7 +440,6 @@ private:
void updateStatus12_Chapter2();
void updateStatus12_Chapter2_Actor11();
void updateStatus12_Chapter11_Actor1();
void updateStatus12_Chapter11();
void updateStatus14();

View File

@ -25,6 +25,7 @@
#include "asylum/resources/actor.h"
#include "asylum/resources/object.h"
#include "asylum/resources/encounters.h"
#include "asylum/resources/polygons.h"
#include "asylum/resources/script.h"
#include "asylum/resources/worldstats.h"
@ -39,6 +40,22 @@
namespace Asylum {
static const Common::Point actorRects[][2] = {
{Common::Point(1100, 150), Common::Point( 30, 95)},
{Common::Point( 695, 159), Common::Point( 113, 54)},
{Common::Point( 925, 158), Common::Point( 129, 66)},
{Common::Point(1158, 162), Common::Point( 135, 86)},
{Common::Point(1319, 218), Common::Point( 150, 133)},
{Common::Point( 430, 351), Common::Point( 78, 56)},
{Common::Point( 762, 339), Common::Point( 102, 59)},
{Common::Point( 962, 328), Common::Point( 118, 45)},
{Common::Point( 848, 161), Common::Point( 36, 55)},
{Common::Point( 861, 334), Common::Point( 23, 79)},
{Common::Point( 600, 193), Common::Point( 21, 36)},
{Common::Point( 805, 156), Common::Point( 152, 69)},
{Common::Point( 641, 162), Common::Point( 150, 64)},
};
static const int32 zapPatterns[9][16] = {
{2292, 2299, 2301, 2302, 2303, 2304, 2306, 2307, 2310, 2311, 2312, 2313, 2314},
{2291, 2294, 2295, 2296, 2297, 2298, 2300, 2301, 2306, 2309, 2311, 2313, 2316},
@ -109,6 +126,10 @@ void Special::run(Object* object, ActorIndex index) {
chapter9(object, index);
break;
case kChapter11:
chapter11(object, index);
break;
case kChapter12:
chapter12(object, index);
break;
@ -712,6 +733,265 @@ void Special::chapter9(Object *object, ActorIndex actorIndex) {
}
}
void Special::chapter11(Object *object, ActorIndex actorIndex) {
Actor *actor0 = getScene()->getActor(0), *actor1 = getScene()->getActor(1);
Actor *player = getScene()->getActor(getSharedData()->getPlayerIndex());
Common::Point sum;
playChapterSound(object, actorIndex);
if (actorIndex == kActorInvalid) {
switch (object->getId()) {
default:
return;
case kObjectABarrier:
if (actor0->isVisible() && _vm->isGameFlagSet(kGameFlag708)) {
if (!getSound()->isPlaying(getSpeech()->getSoundResourceId()))
_vm->clearGameFlag(kGameFlag219);
if (!getWorld()->field_E848C && !getSound()->isPlaying(getWorld()->soundResourceIds[3]))
getSound()->playSound(getWorld()->soundResourceIds[3], false, Config.sfxVolume);
if (getWorld()->field_E848C == 1 && !getSound()->isPlaying(getWorld()->soundResourceIds[4]))
getSound()->playSound(getWorld()->soundResourceIds[4], false, Config.sfxVolume);
if (getWorld()->field_E848C == 2 && !getSound()->isPlaying(getWorld()->soundResourceIds[5]))
getSound()->playSound(getWorld()->soundResourceIds[5], false, Config.sfxVolume);
}
if (_vm->isGameFlagNotSet(kGameFlag1099)) {
_vm->setGameFlag(kGameFlag1099);
getScene()->getActor(9)->setReaction(0, 1);
getScene()->getActor(9)->setReaction(1, 2);
getScene()->getActor(9)->setReaction(2, 3);
}
if (_vm->isGameFlagSet(kGameFlag561) && _vm->isGameFlagNotSet(kGameFlag562)) {
ActorStatus playerStatus = player->getStatus();
if (playerStatus != kActorStatusGettingHurt && playerStatus != kActorStatusRestarting && playerStatus != kActorStatusAttacking && playerStatus != kActorStatusWalkingTo2)
actor0->updateStatus(kActorStatusAttacking);
_vm->clearGameFlag(kGameFlag561);
}
if (actor1->getTickCount() != -1 && actor1->getTickCount() < _vm->getTick()) {
actor1->setTickCount(-1);
actor1->show();
actor1->getPoint1()->x = actor0->getPoint2()->x + actor0->getPoint1()->x - actor1->getPoint2()->x;
actor1->getPoint1()->y = actor0->getPoint2()->y + actor0->getPoint1()->y - actor1->getPoint2()->y;
actor1->updateStatus(kActorStatusWalking2);
}
tentacle(10, kGameFlag557, kGameFlag558, kGameFlag563, actorRects[0][0], actorRects[0][1]);
tentacle(11, kGameFlag722, kGameFlag723, kGameFlag724, actorRects[8][0], actorRects[8][1]);
tentacle(12, kGameFlag725, kGameFlag726, kGameFlag727, actorRects[9][0], actorRects[9][1]);
tentacle(13, kGameFlag728, kGameFlag729, kGameFlag730, actorRects[10][0], actorRects[10][1]);
rock(2, kGameFlag597, kGameFlag598, kGameFlag599, kGameFlag600, actorRects[1][0], actorRects[1][1]);
rock(3, kGameFlag684, kGameFlag685, kGameFlag686, kGameFlag687, actorRects[2][0], actorRects[2][1]);
rock(4, kGameFlag688, kGameFlag689, kGameFlag690, kGameFlag691, actorRects[3][0], actorRects[3][1]);
rock(5, kGameFlag692, kGameFlag693, kGameFlag694, kGameFlag695, actorRects[4][0], actorRects[4][1]);
rock(6, kGameFlag696, kGameFlag697, kGameFlag698, kGameFlag699, actorRects[5][0], actorRects[5][1]);
rock(7, kGameFlag700, kGameFlag701, kGameFlag702, kGameFlag703, actorRects[6][0], actorRects[6][1]);
rock(8, kGameFlag704, kGameFlag705, kGameFlag706, kGameFlag707, actorRects[7][0], actorRects[7][1]);
rock(16, kGameFlag1054, kGameFlag1055, kGameFlag1056, kGameFlag1057, actorRects[11][0], actorRects[11][1]);
rock(17, kGameFlag1058, kGameFlag1059, kGameFlag1060, kGameFlag1061, actorRects[12][0], actorRects[12][1]);
break;
case kObjectMonsterHurt:
object->setFrameIndex(object->getFrameIndex() + 1);
if (object->getFrameIndex() == 4) {
if (getWorld()->field_E8518 <= 2) {
object->setFrameIndex(0);
_vm->clearGameFlag(kGameFlag582);
_vm->setGameFlag(kGameFlag565);
} else {
_vm->clearGameFlag(kGameFlag582);
_vm->setGameFlag(kGameFlag566);
}
}
break;
case kObjectMonsterDeath:
if (object->getFrameIndex() == object->getFrameCount() - 1) {
_vm->clearGameFlag(kGameFlag566);
_vm->setGameFlag(kGameFlag596);
} else {
if (object->getFrameIndex() == 40) {
_vm->setGameFlag(kGameFlag219);
getSpeech()->playPlayer(134);
}
}
break;
case kObjectMonsterUp:
object->setFrameIndex(object->getFrameIndex() + 1);
if (object->getFrameIndex() >= object->getFrameCount()) {
_vm->clearGameFlag(kGameFlag564);
getSpeech()->playPlayer(0);
object->setFrameIndex(0);
_vm->setGameFlag(kGameFlag565);
getWorld()->field_E8490 = -666;
}
break;
case kObjectMonsterAttack:
if (object->getFrameIndex() != 9)
object->setFrameIndex(object->getFrameIndex() + 1);
if (object->getFrameIndex() == 8) {
getSound()->playSound(object->getSoundResourceId(), false, Config.sfxVolume);
switch (getWorld()->field_E8494) {
default:
break;
case 0:
_vm->setGameFlag(kGameFlag567);
break;
case 1:
_vm->setGameFlag(kGameFlag568);
break;
case 2:
_vm->setGameFlag(kGameFlag569);
break;
case 3:
_vm->setGameFlag(kGameFlag567);
_vm->setGameFlag(kGameFlag568);
_vm->setGameFlag(kGameFlag569);
break;
}
if (++getWorld()->field_E8494 > 3)
getWorld()->field_E8494 = 0;
}
if (object->getFrameIndex() >= object->getFrameCount()) {
_vm->clearGameFlag(kGameFlag570);
object->setFrameIndex(0);
_vm->setGameFlag(kGameFlag565);
}
break;
case kObjectPuke1:
sum = *player->getPoint1() + *player->getPoint2();
if (getScene()->polygons()->get(getWorld()->actions[getWorld()->getActionAreaIndexById(1591)]->polygonIndex).contains(sum)) {
ActorStatus playerStatus = getScene()->getActor(getSharedData()->getPlayerIndex())->getStatus();
if (playerStatus == kActorStatusWalking2 || playerStatus == kActorStatusAttacking || playerStatus == kActorStatusEnabled2) {
actor0->updateStatus(kActorStatusGettingHurt);
getSpeech()->playPlayer(131);
++getWorld()->field_E848C;
getSound()->stop(getWorld()->soundResourceIds[3]);
getSound()->stop(getWorld()->soundResourceIds[4]);
getSound()->stop(getWorld()->soundResourceIds[5]);
}
}
object->setFrameIndex(object->getFrameIndex() + 1);
if (object->getFrameIndex() == 15) {
Object *otherObject = getWorld()->getObjectById(kObjectMonsterAttack);
otherObject->setFrameIndex(otherObject->getFrameIndex() + 1);
}
if (object->getFrameIndex() >= object->getFrameCount()) {
_vm->clearGameFlag(kGameFlag567);
object->setFrameIndex(0);
}
break;
case kObjectPuke2:
sum = *player->getPoint1() + *player->getPoint2();
if (getScene()->polygons()->get(getWorld()->actions[getWorld()->getActionAreaIndexById(1590)]->polygonIndex).contains(sum)) {
ActorStatus playerStatus = getScene()->getActor(getSharedData()->getPlayerIndex())->getStatus();
if (playerStatus == kActorStatusWalking2 || playerStatus == kActorStatusAttacking || playerStatus == kActorStatusEnabled2) {
actor0->updateStatus(kActorStatusGettingHurt);
++getWorld()->field_E848C;
getSound()->stop(getWorld()->soundResourceIds[3]);
getSound()->stop(getWorld()->soundResourceIds[4]);
getSound()->stop(getWorld()->soundResourceIds[5]);
getSpeech()->playPlayer(131);
}
}
object->setFrameIndex(object->getFrameIndex() + 1);
if (object->getFrameIndex() == 15 && _vm->isGameFlagNotSet(kGameFlag567)) {
Object *otherObject = getWorld()->getObjectById(kObjectMonsterAttack);
otherObject->setFrameIndex(otherObject->getFrameIndex() + 1);
}
if (object->getFrameIndex() >= object->getFrameCount()) {
_vm->clearGameFlag(kGameFlag568);
object->setFrameIndex(0);
}
break;
case kObjectPuke3:
sum = *player->getPoint1() + *player->getPoint2();
if (getScene()->polygons()->get(getWorld()->actions[getWorld()->getActionAreaIndexById(1589)]->polygonIndex).contains(sum)) {
ActorStatus playerStatus = getScene()->getActor(getSharedData()->getPlayerIndex())->getStatus();
if (playerStatus == kActorStatusWalking2 || playerStatus == kActorStatusAttacking || playerStatus == kActorStatusEnabled2) {
actor0->updateStatus(kActorStatusGettingHurt);
++getWorld()->field_E848C;
getSound()->stop(getWorld()->soundResourceIds[3]);
getSound()->stop(getWorld()->soundResourceIds[4]);
getSound()->stop(getWorld()->soundResourceIds[5]);
getSpeech()->playPlayer(131);
}
}
object->setFrameIndex(object->getFrameIndex() + 1);
if (object->getFrameIndex() == 15 && _vm->isGameFlagNotSet(kGameFlag567)) {
Object *otherObject = getWorld()->getObjectById(kObjectMonsterAttack);
otherObject->setFrameIndex(otherObject->getFrameIndex() + 1);
}
if (object->getFrameIndex() >= object->getFrameCount()) {
_vm->clearGameFlag(kGameFlag569);
object->setFrameIndex(0);
}
break;
case kObjectMonsterStatus:
_vm->setGameFlag(kGameFlag572);
if (object->getFrameIndex() >= getWorld()->dword_4563A0 + object->getFrameIndex()) {
object->setFrameIndex(object->getFrameCount() - 1);
getWorld()->dword_4563A0 = -1;
}
if (object->getFrameIndex() < 0) {
object->setFrameIndex(0);
getWorld()->dword_4563A0 = 1;
}
if (getWorld()->field_E8490 == -666)
getWorld()->field_E8490 = _vm->getTick() + 3000;
if (getWorld()->field_E8490 < _vm->getTick()) {
getWorld()->field_E8490 = -666;
if (_vm->isGameFlagSet(kGameFlag572)) {
_vm->clearGameFlag(kGameFlag565);
_vm->setGameFlag(kGameFlag570);
}
}
break;
}
} else {
if (actorIndex == 1 && !actor0->isVisible()) {
if (_vm->isGameFlagNotSet(kGameFlag560))
actor1->setFrameIndex((actor1->getFrameIndex() + 1) % actor1->getFrameCount());
if (getWorld()->tickCount1 < _vm->getTick() && !actor1->getFrameIndex()) {
if (_vm->isGameFlagNotSet(kGameFlag560)) {
_vm->setGameFlag(kGameFlag560);
actor1->hide();
actor1->updateStatus(kActorStatusEnabled);
actor0->updateStatus(kActorStatusEnabled);
getWorld()->field_E848C = 0;
getScript()->queueScript(getWorld()->getActionAreaIndexById(1574), kActorSarah);
}
}
}
}
}
void Special::chapter12(Object *object, ActorIndex actorIndex) {
playChapterSound(object, actorIndex);
@ -1727,4 +2007,88 @@ void Special::checkOtherObject(Object *object, ObjectId otherObjectId, GameFlag
}
}
//////////////////////////////////////////////////////////////////////////
// Chapter 11 helpers
//////////////////////////////////////////////////////////////////////////
void Special::rock(ActorIndex actorIndex, GameFlag flag1, GameFlag flag2, GameFlag flag3, GameFlag flag4, const Common::Point &p1, const Common::Point &p2) {
Actor *actor = getScene()->getActor(actorIndex);
if (!(_vm->isGameFlagNotSet(flag1) && _vm->isGameFlagSet(flag2)))
return;
if (_vm->isGameFlagNotSet(flag3)) {
getWorld()->tickValueArray[actorIndex] = _vm->getTick() + 1500;
actor->getPoint1()->x = p1.x + rnd(p2.x - p1.x) - actor->getPoint2()->x;
actor->getPoint1()->y = p1.y + rnd(p2.y - p1.y) - actor->getPoint2()->y;
getWorld()->field_E8594[actorIndex] = actor->getPoint1()->y;
actor->getPoint1()->y -= 160;
actor->updateStatus(kActorStatusEnabled2);
getSound()->playSound(getWorld()->soundResourceIds[0], false, Config.sfxVolume - 10);
_vm->setGameFlag(flag3);
getScene()->getActor(actorIndex)->show();
} else if (_vm->getTick() > getWorld()->tickValueArray[actorIndex]) {
if (_vm->isGameFlagNotSet(flag4)) {
_vm->setGameFlag(flag4);
actor->setFrameIndex(0);
actor->updateStatus(kActorStatusWalking2);
if (actorIndex == 8 || actorIndex == 9)
actor->setField944(1);
actor->getPoint1()->y = 0;
} else {
if (actor->getPoint1()->y <= getWorld()->field_E8594[actorIndex]) {
actor->getPoint1()->y += 27;
actor->setFrameIndex((actor->getFrameIndex() + 1) % actor->getFrameCount());
} else if (actor->getStatus() == kActorStatusAttacking) {
actor->setFrameIndex((actor->getFrameIndex() + 1) % actor->getFrameCount());
if (actor->getFrameIndex() == actor->getFrameCount() - 1)
actor->hide();
} else {
actor->setField944(3);
getSound()->playSound(getWorld()->soundResourceIds[1], false, Config.sfxVolume - 10);
actor->updateStatus(kActorStatusAttacking);
actor->setFrameIndex(4);
ActorIndex playerIndex = getSharedData()->getPlayerIndex();
Common::Point sum = *actor->getPoint1() + *actor->getPoint2();
Common::Point playerSum = *getScene()->getActor(playerIndex)->getPoint1() + *getScene()->getActor(playerIndex)->getPoint2();
if (Actor::euclidianDistance(sum, playerSum) < 30) {
getScene()->getActor(0)->updateStatus(kActorStatusGettingHurt);
++getWorld()->field_E848C;
getSound()->stop(getWorld()->soundResourceIds[3]);
getSound()->stop(getWorld()->soundResourceIds[4]);
getSound()->stop(getWorld()->soundResourceIds[5]);
getSpeech()->playPlayer(131);
}
}
}
}
}
void Special::tentacle(ActorIndex actorIndex, GameFlag flag1, GameFlag flag2, GameFlag flag3, const Common::Point &p1, const Common::Point &p2) {
Actor *actor = getScene()->getActor(actorIndex);
if (_vm->isGameFlagSet(flag1)
&& _vm->isGameFlagNotSet(flag3)
&& !_vm->isGameFlagSet(flag2)
&& _vm->getTick() > getWorld()->tickValueArray[actorIndex + 10]) {
actor->getPoint1()->x = p1.x + rnd(p2.x - p1.x) - actor->getPoint2()->x;
actor->getPoint1()->y = p1.y + rnd(p2.y - p1.y) - actor->getPoint2()->y;
ActorIndex playerIndex = getSharedData()->getPlayerIndex();
Common::Point sum = *actor->getPoint1() + *actor->getPoint2();
Common::Point playerSum = *getScene()->getActor(playerIndex)->getPoint1() + *getScene()->getActor(playerIndex)->getPoint2();
if (Actor::euclidianDistance(sum, playerSum) > 40) {
getWorld()->tickValueArray[actorIndex + 10] = 0;
actor->show();
actor->updateStatus(kActorStatusWalking2);
actor->setFrameIndex(0);
_vm->setGameFlag(flag2);
}
}
}
} // End of namespace Asylum

View File

@ -26,6 +26,7 @@
#include "asylum/shared.h"
#include "common/scummsys.h"
#include "common/rect.h"
namespace Asylum {
@ -64,6 +65,7 @@ private:
void chapter7(Object *object, ActorIndex actorIndex);
void chapter8(Object *object, ActorIndex actorIndex);
void chapter9(Object *object, ActorIndex actorIndex);
void chapter11(Object *object, ActorIndex actorIndex);
void chapter12(Object *object, ActorIndex actorIndex);
void chapter13(Object *object, ActorIndex actorIndex);
@ -98,6 +100,13 @@ private:
void checkObject(Object *object, GameFlag flagToSet, GameFlag flagToClear, ObjectId objectId = kObjectNone);
void checkOtherObject(Object *object, ObjectId otherObjectId, GameFlag flagToClear, GameFlag flagToSet);
//////////////////////////////////////////////////////////////////////////
// Chapter 11 helpers
//////////////////////////////////////////////////////////////////////////
void tentacle(ActorIndex actorIndex, GameFlag flag1, GameFlag flag2, GameFlag flag3, const Common::Point &p1, const Common::Point &p2);
void rock(ActorIndex actorIndex, GameFlag flag1, GameFlag flag2, GameFlag flag3, GameFlag flag4, const Common::Point &p1, const Common::Point &p2);
};
} // End of namespace Asylum

View File

@ -92,6 +92,7 @@ WorldStats::WorldStats(AsylumEngine *engine) : _vm(engine) {
memset(&wheels, 0, sizeof(wheels));
tickCount1 = 0;
memset(&field_E8660, 0, sizeof(field_E8660));
dword_4563A0 = 0;
}
WorldStats::~WorldStats() {

View File

@ -141,6 +141,7 @@ public:
Object *wheels[7];
int32 tickCount1;
uint32 field_E8660[6];
int32 dword_4563A0;
void setWheelObjects();

View File

@ -121,20 +121,66 @@ enum GameFlag {
kGameFlag545 = 545,
kGameFlag553 = 553,
kGameFlag556 = 556,
kGameFlag557 = 557,
kGameFlag558 = 558,
kGameFlag560 = 560,
kGameFlag561 = 561,
kGameFlag562 = 562,
kGameFlag563 = 563,
kGameFlag564 = 564,
kGameFlag565 = 565,
kGameFlag566 = 566,
kGameFlag567 = 567,
kGameFlag568 = 568,
kGameFlag569 = 569,
kGameFlag570 = 570,
kGameFlag572 = 572,
kGameFlag582 = 582,
kGameFlag583 = 583,
kGameFlag596 = 596,
kGameFlag597 = 597,
kGameFlag598 = 598,
kGameFlag599 = 599,
kGameFlag600 = 600,
kGameFlag608 = 608,
kGameFlag619 = 619,
kGameFlag635 = 635,
kGameFlag636 = 636,
kGameFlag637 = 637,
kGameFlagSolveHiveControl = 640,
kGameFlag684 = 684,
kGameFlag685 = 685,
kGameFlag686 = 686,
kGameFlag687 = 687,
kGameFlag688 = 688,
kGameFlag689 = 689,
kGameFlag690 = 690,
kGameFlag691 = 691,
kGameFlag692 = 692,
kGameFlag693 = 693,
kGameFlag694 = 694,
kGameFlag695 = 695,
kGameFlag696 = 696,
kGameFlag697 = 697,
kGameFlag698 = 698,
kGameFlag699 = 699,
kGameFlag700 = 700,
kGameFlag701 = 701,
kGameFlag702 = 702,
kGameFlag703 = 703,
kGameFlag704 = 704,
kGameFlag705 = 705,
kGameFlag706 = 706,
kGameFlag707 = 707,
kGameFlag708 = 708,
kGameFlag722 = 722,
kGameFlag723 = 723,
kGameFlag724 = 724,
kGameFlag725 = 725,
kGameFlag726 = 726,
kGameFlag727 = 727,
kGameFlag728 = 728,
kGameFlag729 = 729,
kGameFlag730 = 730,
kGameFlag759 = 759,
kGameFlag760 = 760,
@ -188,6 +234,14 @@ enum GameFlag {
kGameFlag1021 = 1021,
kGameFlag1022 = 1022,
kGameFlag1023 = 1023,
kGameFlag1054 = 1054,
kGameFlag1055 = 1055,
kGameFlag1056 = 1056,
kGameFlag1057 = 1057,
kGameFlag1058 = 1058,
kGameFlag1059 = 1059,
kGameFlag1060 = 1060,
kGameFlag1061 = 1061,
kGameFlag1062 = 1062,
kGameFlag1063 = 1063,
kGameFlag1064 = 1064,
@ -570,6 +624,15 @@ enum ObjectId {
kObjectWitchDoctor = 1778,
kObjectStoneWifeStatuQuo = 1782,
kObjectFishermanWidowStatusQuo = 1786,
kObjectABarrier = 1899,
kObjectMonsterUp = 1956,
kObjectMonsterStatus = 1957,
kObjectMonsterDeath = 1958,
kObjectMonsterAttack = 1959,
kObjectPuke1 = 1960,
kObjectPuke2 = 1961,
kObjectPuke3 = 1962,
kObjectMonsterHurt = 1997,
kObjectWheel1 = 2113,
kObjectWheel2 = 2114,
kObjectWheel3 = 2115,