diff options
-rw-r--r-- | engines/agi/preagi_winnie.cpp | 29 | ||||
-rw-r--r-- | engines/agi/preagi_winnie.h | 6 |
2 files changed, 29 insertions, 6 deletions
diff --git a/engines/agi/preagi_winnie.cpp b/engines/agi/preagi_winnie.cpp index 3ca15c48be..f426967a3c 100644 --- a/engines/agi/preagi_winnie.cpp +++ b/engines/agi/preagi_winnie.cpp @@ -52,7 +52,7 @@ void Winnie::initVars() { game.fGame[1] = 1; room = IDI_WTP_ROOM_HOME; - mist = -1; + _mist = -1; doWind = false; winnie_event = false; @@ -338,10 +338,10 @@ int Winnie::parser(int pc, int index, uint8 *buffer) { if (winnie_event && (room <= IDI_WTP_MAX_ROOM_TELEPORT)) { if (!tigger_mist) { tigger_mist = 1; - //Winnie_Tigger(); + tigger(); } else { tigger_mist = 0; - //Winnie_Mist(); + mist(); } winnie_event = false; return IDI_WTP_PAR_GOTO; @@ -436,8 +436,8 @@ int Winnie::parser(int pc, int index, uint8 *buffer) { gameOver(); break; case IDO_WTP_WALK_MIST: - mist--; - if (!mist) { + _mist--; + if (!_mist) { room = _vm->rnd(IDI_WTP_MAX_ROOM_TELEPORT) + 1; return IDI_WTP_PAR_GOTO; } @@ -694,6 +694,25 @@ void Winnie::wind() { } } +void Winnie::mist() { + // mist length in turns is (2-5) + _mist = _vm->rnd(4) + 2; + + room = IDI_WTP_ROOM_MIST; + drawRoomPic(); + + _vm->printStr(IDS_WTP_MIST); +} + +void Winnie::tigger() { + room = IDI_WTP_ROOM_TIGGER; + + drawRoomPic(); + _vm->printStr(IDS_WTP_TIGGER); + + dropObjRnd(); +} + void Winnie::showOwlHelp() { if (game.iObjHave) { _vm->printStr(IDS_WTP_OWL_0); diff --git a/engines/agi/preagi_winnie.h b/engines/agi/preagi_winnie.h index bf0057b7f5..d97532dcc4 100644 --- a/engines/agi/preagi_winnie.h +++ b/engines/agi/preagi_winnie.h @@ -306,7 +306,7 @@ private: PreAgiEngine *_vm; WTP_SAVE_GAME game; int room; - int mist; + int _mist; bool doWind; bool winnie_event; int tigger_mist; @@ -349,7 +349,11 @@ private: void writeSaveGame(uint8*); void readSaveGame(uint8*); void dropObjRnd(); + void wind(); + void mist(); + void tigger(); + void showOwlHelp(); bool playSound(ENUM_WTP_SOUND); }; |