void sceneHandler11_swingieSit() { if (g_fp->getObjectState(sO_Swingie) == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)) { g_vars->scene11_swingIsSwinging = false; g_vars->scene11_swingieStands = false; g_vars->scene11_swingie->changeStatics2(ST_SWR_SIT); g_vars->scene11_swingie->setOXY(144, 389); g_fp->setObjectState(sO_Swingie, g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting)); getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0); getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 0); getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 1); } }
void sceneHandler32_trySit(ExCommand *cmd) { MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId); if (!mq || mq->getCount() == 0) return; ExCommand *ex = mq->getExCommandByIndex(0); if (g_vars->scene32_cactusIsGrowing || g_vars->scene32_cactus->_movement || g_vars->scene32_cactus->_statics->_staticsId != ST_CTS_EMPTY || (g_vars->scene32_cactusCounter >= 0 && g_vars->scene32_cactusCounter <= 20)) { ex->_messageKind = 0; ex->_excFlags |= 1; } else { ex->_parentId = ANI_MAN; ex->_messageKind = 1; ex->_messageNum = MV_MAN32_SITDOWN; ex->_param = g_fp->_aniMan->_odelay; g_vars->scene32_dudeIsSitting = true; getCurrSceneSc2MotionController()->deactivate(); getGameLoaderInteractionController()->disableFlag24(); } }
void sceneHandler10_clickGum() { if (g_vars->scene10_hasGum) { if (sceneHandler10_inflaterIsBlind()) { if (g_vars->scene10_hasGum) { int x = g_vars->scene10_gum->_ox - 139; int y = g_vars->scene10_gum->_oy - 48; if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(y - g_fp->_aniMan->_oy) > 1) { MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, x, y, 1, ST_MAN_RIGHT); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC10_CLICKGUM, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags = 2; mq->addExCommandToEnd(ex); postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1); } } else { g_vars->scene10_hasGum = 0; chainQueue(QU_SC10_TAKEGUM, 1); } } } else { g_vars->scene10_inflater->changeStatics2(ST_NDV_SIT); if (g_fp->getObjectState(sO_Inflater) == g_fp->getObjectEnumState(sO_Inflater, sO_WithGum)) g_vars->scene10_inflater->startAnim(MV_NDV_DENIES, 0, -1); else g_vars->scene10_inflater->startAnim(MV_NDV_DENY_NOGUM, 0, -1); } } }
void sceneHandler11_manToSwing() { g_vars->scene11_arcadeIsOn = true; getCurrSceneSc2MotionController()->deactivate(); getGameLoaderInteractionController()->disableFlag24(); g_fp->_aniMan2->hide(); g_vars->scene11_swingCounter = 0; g_vars->scene11_swingInertia = 1.28; //1.9849218; g_vars->scene11_dudeOnSwing->_flags &= 0xFFFB; g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN11, -1); g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_MAN11_EMPTY); g_vars->scene11_dudeOnSwing->_movement = 0; g_vars->scene11_dudeOnSwing->show1(690, 215, MV_MAN11_SWING_0, 0); g_vars->scene11_dudeOnSwing->_priority = 20; g_vars->scene11_dudeOnSwing->startAnim(MV_MAN11_SWING_0, 0, -1); g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(45); g_vars->scene11_mgm.addItem(g_fp->_aniMan->_id); g_fp->_currentScene->_x = 1400 - g_fp->_sceneRect.right; g_vars->scene11_scrollIsEnabled = true; g_fp->_updateScreenCallback = sceneHandler11_updateScreenCallback; }
void sceneHandler26_clickVent(StaticANIObject *ani, ExCommand *cmd) { if (ani->_okeyCode || g_fp->getObjectState(sO_Hatch_26) == g_fp->getObjectEnumState(sO_Hatch_26, sO_Opened)) { if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) { g_vars->scene26_activeVent = ani; int x = ani->_ox - 20; int y = ani->_oy + 61; if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(y - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_UP) { MessageQueue *mq = getCurrSceneSc2MotionController()->method34(g_fp->_aniMan, x, y, 1, ST_MAN_UP); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC26_CLICKVENT, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 3; ex->_keyCode = ani->_okeyCode; mq->addExCommandToEnd(ex); postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1); } } else { sceneHandler26_animateVents(ani); } } } cmd->_messageKind = 0; }
bool sceneHandler14_arcadeProcessClick(ExCommand *cmd) { if (!getCurrSceneSc2MotionController()->_isEnabled) return 0; if (!g_vars->scene14_grandmaIsHere) { if (!cmd->_keyCode) { if (g_vars->scene14_pink) { if (g_vars->scene14_pink->_flags & 4) { if (cmd->_sceneClickX < g_vars->scene14_pink->_ox + 40) { handleObjectInteraction(g_fp->_aniMan, g_vars->scene14_pink, 0); cmd->_messageKind = 0; return true; } } } } return false; } if (getCurrSceneSc2MotionController()->_objtype != kObjTypeMctlCompound) return false; if (!getCurrSceneSc2MotionController()->_motionControllers[0]->_movGraphReactObj->pointInRegion(cmd->_sceneClickX, cmd->_sceneClickY)) return false; if (cmd->_sceneClickX > 1237) return false; MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 1237, 451, 1, 0); if (!mq) return false; ExCommand *ex = new ExCommand(0, 17, MSG_SC14_STARTARCADE, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 3; mq->addExCommandToEnd(ex); mq->setFlags(mq->getFlags() | 1); postExCommand(g_fp->_aniMan->_id, 2, 1237, 451, 0, -1); cmd->_messageKind = 0; getCurrSceneSc2MotionController()->deactivate(); getGameLoaderInteractionController()->disableFlag24(); return true; }
void sceneHandler11_restartMan() { chainObjQueue(0, QU_SC11_RESTARTMAN, 1); getGameLoaderInteractionController()->enableFlag24(); getCurrSceneSc2MotionController()->activate(); g_vars->scene11_scrollIsEnabled = false; }
void sceneHandler28_clickLift(int numLift) { int x = 0; debugC(2, kDebugSceneLogic, "scene28: clickLift(%d)", numLift); switch (numLift) { case 0: x = 600; break; case 1: x = 824; break; case 2: x = 1055; break; case 3: x = 1286; break; case 4: x = 1517; break; case 5: x = 1748; break; case 6: x = 1979; break; } if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(472 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_UP) { debugC(2, kDebugSceneLogic, "scene28: clickLift: overwrite"); MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, x, 472, 1, ST_MAN_UP); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC28_CLICKLIFT, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 3; ex->_param = numLift; mq->addExCommandToEnd(ex); postExCommand(g_fp->_aniMan->_id, 2, x, 472, 0, -1); } } else { switch (numLift) { case 0: sceneHandler28_lift0Start(); break; case 1: sceneHandler28_lift1Start(); break; case 2: sceneHandler28_lift2Start(); break; case 3: sceneHandler28_lift3Start(); break; case 4: sceneHandler28_lift4Start(); break; case 5: sceneHandler28_lift5Start(); break; case 6: sceneHandler28_lift6Start(); break; default: return; } } }
void sceneHandler11_swingieJumpDown() { MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SWR_JUMPDOWN), 0, 0); mq->setFlags(mq->getFlags() | 1); if (!mq->chain(g_vars->scene11_swingie)) delete mq; g_vars->scene11_swingIsSwinging = false; g_vars->scene11_swingieStands = true; g_vars->scene11_swingieScreenEdge = g_fp->_sceneRect.left; getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0); getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 1); getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 0); getCurrSceneSc2MotionController()->replaceNodeX(905, 805); }
void sceneHandler06_startAiming() { if (g_vars->scene06_currentBall) { g_vars->scene06_currentBall->hide(); g_fp->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1); g_vars->scene06_ballInHands = g_vars->scene06_currentBall; g_vars->scene06_currentBall = 0; if (getCurrSceneSc2MotionController()->_isEnabled) g_fp->_updateScreenCallback = sceneHandler06_updateScreenCallback; getCurrSceneSc2MotionController()->clearEnabled(); getGameLoaderInteractionController()->disableFlag24(); g_vars->scene06_ballDrop->queueMessageQueue(0); } }
void sceneHandler29_manFromR() { getCurrSceneSc2MotionController()->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); chainQueue(QU_SC29_MANFROM_R, 1); g_vars->scene29_var10 = 0; g_vars->scene29_var12 = 0; }
void sceneHandler25_enterMan() { if (g_vars->scene25_waterIsPresent) { chainQueue(QU_SC25_ENTERUP_WATER, 1); getCurrSceneSc2MotionController()->clearEnabled(); } else { chainQueue(QU_SC25_ENTERUP_FLOOR, 1); } }
void sceneHandler27_batLogic() { if (g_vars->scene27_balls.size()) { g_vars->scene27_bat = g_vars->scene27_balls[0]; g_vars->scene27_balls.remove_at(0); int mv; switch (g_vars->scene27_batHandler->_statics->_staticsId) { case ST_BTH_5: mv = MV_BTH_5_4; break; case ST_BTH_4: mv = MV_BTH_4_3; break; case ST_BTH_3: mv = MV_BTH_3_2; break; case ST_BTH_2: mv = MV_BTH_2_1; break; case ST_BTH_1: mv = MV_BTH_1_0; break; default: chainQueue(QU_SC27_RESTARTBETS, 1); getCurrSceneSc2MotionController()->activate(); getGameLoaderInteractionController()->enableFlag24(); g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1); return; } MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact()); mq->setFlags(mq->getFlags() | 1); ExCommand *ex = new ExCommand(g_vars->scene27_batHandler->_id, 1, mv, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 2; mq->addExCommandToEnd(ex); ex = new ExCommand(0, 17, MSG_SC27_CLICKBET, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 3; mq->addExCommandToEnd(ex); mq->chain(0); } else { g_vars->scene27_bat = 0; } }
void sceneHandler29_manFromR() { getCurrSceneSc2MotionController()->activate(); getGameLoaderInteractionController()->enableFlag24(); chainQueue(QU_SC29_MANFROM_R, 1); g_vars->scene29_arcadeIsOn = false; g_vars->scene29_rideBackEnabled = false; }
void sceneHandler08_arcadeNow() { MovGraphLink *lnk = getCurrSceneSc2MotionController()->getLinkByName(sO_Stairway); g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)); g_vars->scene08_batuta->changeStatics2(ST_BTT_SLEEPS); if (lnk) lnk->_flags |= 0x20000000; }
void sceneHandler13_updateBridge() { MovGraphLink *lnk = getCurrSceneSc2MotionController()->getLinkByName(sO_Bridge); if (lnk) { if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted)) lnk->_flags |= 0x20000000; else lnk->_flags &= 0xDFFFFFFF; } }
void sceneHandler29_clickPorter(ExCommand *cmd) { if (!g_fp->_aniMan->isIdle() || g_fp->_aniMan->_flags & 0x100) { cmd->_messageKind = 0; return; } if (g_vars->scene29_manX <= g_vars->scene29_porter->_ox) { if (ABS(351 - g_vars->scene29_manX) > 1 || ABS(443 - g_vars->scene29_manY) > 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) { if (g_fp->_msgX != 351 || g_fp->_msgY != 443) { MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 351, 443, 1, ST_MAN_RIGHT); if (mq) { mq->addExCommandToEnd(cmd->createClone()); postExCommand(g_fp->_aniMan->_id, 2, 351, 443, 0, -1); } } } else { sceneHandler29_manToL(); } } else { g_vars->scene29_manX = g_fp->_aniMan->_ox; g_vars->scene29_manY = g_fp->_aniMan->_oy; if (ABS(1582 - g_vars->scene29_manX) > 1 || ABS(445 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) { if (g_fp->_msgX != 1582 || g_fp->_msgY != 445) { MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 1582, 445, 1, (0x4000 | ST_MAN_RIGHT)); if (mq) { mq->addExCommandToEnd(cmd->createClone()); postExCommand(g_fp->_aniMan->_id, 2, 1582, 445, 0, -1); } } } else { sceneHandler29_manToR(); } } }
void sceneHandler27_driverGiveVent() { g_vars->scene27_driver->changeStatics2(ST_DRV_VENT); g_vars->scene27_driver->startMQIfIdle(QU_DRV_GIVEVENT, 1); g_vars->scene27_driverHasVent = false; getCurrSceneSc2MotionController()->activate(); getGameLoaderInteractionController()->enableFlag24(); g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1); }
void sceneHandler11_hitMan() { if (g_fp->_aniMan->_ox > 345 && g_fp->_aniMan->_ox < 355) { g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT); MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC11_MANFALL), 0, 0); mq->setFlags(mq->getFlags() | 1); if (!mq->chain(g_fp->_aniMan)) delete mq; getCurrSceneSc2MotionController()->replaceNodeX(353, 303); } }
void sceneHandler29_manFromL() { if (g_vars->scene29_manX < 497 && !g_vars->scene29_scrollingDisabled) { getCurrSceneSc2MotionController()->activate(); getGameLoaderInteractionController()->enableFlag24(); g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); chainQueue(QU_SC29_MANFROM_L, 1); g_vars->scene29_scrollingDisabled = true; g_fp->_scrollSpeed = g_vars->scene29_scrollSpeed; } }
void sceneHandler29_manFromL() { if (g_vars->scene29_var20 < 497 && !g_vars->scene29_var17) { getCurrSceneSc2MotionController()->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); chainQueue(QU_SC29_MANFROM_L, 1); g_vars->scene29_var17 = 1; g_fp->_scrollSpeed = g_vars->scene29_var16; } }
void sceneHandler29_manToR() { getCurrSceneSc2MotionController()->deactivate(); getGameLoaderInteractionController()->disableFlag24(); chainQueue(QU_SC29_MANTO_R, 1); g_vars->scene29_manIsRiding = true; g_fp->_msgY = -1; g_fp->_msgX = -1; g_vars->scene29_scrollingDisabled = false; g_vars->scene29_scrollSpeed = g_fp->_scrollSpeed; g_fp->_scrollSpeed = 4; }
void sceneHandler29_manToR() { getCurrSceneSc2MotionController()->clearEnabled(); getGameLoaderInteractionController()->disableFlag24(); chainQueue(QU_SC29_MANTO_R, 1); g_vars->scene29_var09 = 1; g_fp->_msgY = -1; g_fp->_msgX = -1; g_vars->scene29_var17 = 0; g_vars->scene29_var16 = g_fp->_scrollSpeed; g_fp->_scrollSpeed = 4; }
void sceneHandler29_manToL() { getCurrSceneSc2MotionController()->deactivate(); getGameLoaderInteractionController()->disableFlag24(); chainQueue(QU_SC29_MANTO_L, 1); g_vars->scene29_arcadeIsOn = true; g_vars->scene29_mgm.addItem(g_fp->_aniMan->_id); g_fp->_updateScreenCallback = sceneHandler29_updateScreenCallback; g_fp->_msgY = -1; g_fp->_msgX = -1; }
void sceneHandler16_mugClick() { if (abs(310 - g_fp->_aniMan->_ox) >= 1 || abs(449 - g_fp->_aniMan->_oy) >= 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) { MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 310, 449, 1, ST_MAN_RIGHT); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC16_MUGCLICK, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags = 2; mq->addExCommandToEnd(ex); postExCommand(g_fp->_aniMan->_id, 2, 310, 449, 0, -1); } } else { sceneHandler16_drink(); } }
void sceneHandler06_winArcade() { g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone)); if (g_fp->getObjectState(sO_ClockAxis) == g_fp->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable)) g_fp->setObjectState(sO_ClockAxis, g_fp->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle)); if (g_vars->scene06_arcadeEnabled) { g_fp->_aniMan->_callback2 = 0; g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000); if (g_vars->scene06_someBall) { g_vars->scene06_someBall->_flags &= 0xFFFB; g_vars->scene06_balls.push_back(g_vars->scene06_someBall); g_vars->scene06_someBall = 0; } if (g_vars->scene06_flyingBall) { g_vars->scene06_flyingBall->_flags &= 0xFFFB; g_vars->scene06_balls.push_back(g_vars->scene06_flyingBall); g_vars->scene06_flyingBall = 0; } if (g_vars->scene06_ballInHands) { g_vars->scene06_ballInHands->_flags &= 0xFFFB; g_vars->scene06_balls.push_back(g_vars->scene06_ballInHands); g_vars->scene06_ballInHands = 0; } g_vars->scene06_arcadeEnabled = false; g_vars->scene06_aimingBall = false; } g_vars->scene06_mumsy->_flags &= 0xFFFB; sceneHandler06_setExits(g_fp->_currentScene); getCurrSceneSc2MotionController()->setEnabled(); getGameLoaderInteractionController()->enableFlag24(); }
void sceneHandler11_putBoot() { if (abs(353 - g_fp->_aniMan->_ox) > 1 || abs(498 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) { MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 353, 498, 1, ST_MAN_RIGHT); if (mq) { ExCommand *ex = new ExCommand(0, 17, MSG_SC11_PUTBOOT, 0, 0, 0, 1, 0, 0, 0); ex->_excFlags |= 3; mq->addExCommandToEnd(ex); postExCommand(g_fp->_aniMan->_id, 2, 353, 498, 0, -1); } } else { sceneHandler11_putABoot(); } }
void sceneHandler32_ladderLogic(ExCommand *cmd) { MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC32_FROMLADDER), 0, 0); if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) != PIC_SC32_LADDER) mq->addExCommandToEnd(cmd->createClone()); mq->setFlags(mq->getFlags() | 1); g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER); if (!mq->chain(g_fp->_aniMan)) delete mq; g_vars->scene32_dudeOnLadder = false; getCurrSceneSc2MotionController()->activate(); getGameLoaderInteractionController()->enableFlag24(); }
void sceneHandler14_exitScene() { g_vars->scene14_arcadeIsOn = false; if (g_fp->_aniMan->_movement) g_fp->_aniMan->_movement->gotoLastFrame(); g_fp->_aniMan->stopAnim_maybe(); handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC14_RTRUBA, 0), 0); g_vars->scene14_grandma->changeStatics2(ST_GMA_SIT); chainQueue(QU_SC14_ENDARCADE, 0); getGameLoaderInteractionController()->disableFlag24(); getCurrSceneSc2MotionController()->deactivate(); }
void sceneHandler27_throwBat() { if (getGameLoaderInteractionController()->_flag24) g_fp->_updateScreenCallback = sceneHandler27_updateScreenCallback; g_fp->_aniMan->_callback2 = sceneHandler27_aniManCallback; g_fp->_aniMan->startAnim(MV_MAN27_THROWBET, 0, -1); getCurrSceneSc2MotionController()->deactivate(); getGameLoaderInteractionController()->disableFlag24(); g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0); g_vars->scene27_maxPhaseReached = false; g_vars->scene27_bat->hide(); }