bool CRoboRed::isNearby(CSpriteObject &theObject) { if( dynamic_cast<CPlayerLevel*>(&theObject) ) { mLookTimer++; if(mLookTimer < TIME_UNTIL_LOOK) return true; mLookTimer = 0; mKeenNearby = false; const int objX = theObject.getXMidPos(); const int roboX = getXMidPos(); const int dx = objX - roboX; if( theObject.getYDownPos() > getYUpPos() && theObject.getYUpPos() < getYDownPos() ) { if(getActionNumber(A_RED_PAUSE)) { if( theObject.getXMidPos() < getXMidPos() ) xDirection = LEFT; else xDirection = RIGHT; } if( std::abs(dx) < CSF_DISTANCE_TO_SHOOT ) { mKeenNearby = true; } } } return true; }
bool CShelly::isNearby(CSpriteObject &theObject) { if( CPlayerLevel *player = dynamic_cast<CPlayerLevel*>(&theObject) ) { if( player->getXMidPos() < getXMidPos() ) mKeenAlignment = LEFT; else mKeenAlignment = RIGHT; const int objX = theObject.getXMidPos(); const int objY = theObject.getYMidPos(); const int shellyX = getXMidPos(); const int shellyY = getYMidPos(); mGoodJumpChance = false; if( objX < shellyX - CSF_DISTANCE_TO_JUMP || objX > shellyX + CSF_DISTANCE_TO_JUMP ) return false; if( objY < shellyY - CSF_DISTANCE_TO_JUMP || objY > shellyY + CSF_DISTANCE_TO_JUMP ) return false; mGoodJumpChance = true; } return true; }
bool CBlooguard::isNearby(CSpriteObject& theObject) { if( CPlayerLevel *player = dynamic_cast<CPlayerLevel*>(&theObject) ) { const int objX = theObject.getXMidPos(); const int objY = theObject.getYMidPos(); const int blooguardX = getXMidPos(); const int blooguardY = getYMidPos(); // Code for setting player stunned here! if(mStubPlayer) { mStubPlayer = false; if(player->stun()) { player->m_camera.m_relcam.y = (8<<CSF); } return true; } mGoodClubChance = false; if( objX < blooguardX - CSF_DISTANCE_TO_CLUB || objX > blooguardX + CSF_DISTANCE_TO_CLUB ) return false; if( objY < blooguardY - CSF_DISTANCE_TO_CLUB || objY > blooguardY + CSF_DISTANCE_TO_CLUB ) return false; mGoodClubChance = true; } return true; }
bool CSparky::isNearby(CSpriteObject &theObject) { if( !getProbability(10) ) return false; if( CPlayerLevel *player = dynamic_cast<CPlayerLevel*>(&theObject) ) { if( player->getXMidPos() < getXMidPos() ) mKeenAlignment = LEFT; else mKeenAlignment = RIGHT; const int objX = theObject.getXMidPos(); const int objY = theObject.getYMidPos(); const int sparkyX = getXMidPos(); const int sparkyY = getYMidPos(); mGoodChargeChance = false; if( objX < sparkyX - CSF_DISTANCE_TO_FOLLOW || objX > sparkyX + CSF_DISTANCE_TO_FOLLOW ) return false; if( objY < sparkyY - CSF_DISTANCE_TO_FOLLOW || objY > sparkyY + CSF_DISTANCE_TO_FOLLOW ) return false; mGoodChargeChance = true; } return true; }
bool CDopeFish::isNearby(CSpriteObject &theObject) { if( dynamic_cast<CPlayerBase*>(&theObject) || dynamic_cast<CSchoolFish*>(&theObject) ) { const int objX = theObject.getXMidPos(); const int objY = theObject.getYMidPos(); const int fishX = getXMidPos(); const int fishY = getYMidPos(); const int dx = objX - fishX; const int dy = objY - fishY; if( objX < fishX - CSF_DISTANCE_TO_FOLLOW || objX > fishX + CSF_DISTANCE_TO_FOLLOW ) return false; if( objY < fishY - CSF_DISTANCE_TO_FOLLOW || objY > fishY + CSF_DISTANCE_TO_FOLLOW ) return false; if( dx<-CSF_DISTANCE_TO_FOLLOW_TOLERANCE ) xDirection = LEFT; else if( dx>+CSF_DISTANCE_TO_FOLLOW_TOLERANCE ) xDirection = RIGHT; if( dy<-CSF_DISTANCE_TO_FOLLOW_TOLERANCE ) yDirection = (rand()%5) ? UP : DOWN; else if( dy>+CSF_DISTANCE_TO_FOLLOW_TOLERANCE ) yDirection = (rand()%5) ? DOWN : UP; if(getActionNumber(A_DOPEFISH_SWIM)) { int absdx = (dx<0) ? -dx : dx; int absdy = (dy<0) ? -dy : dy; if( absdx < CSF_MIN_DISTANCE_TO_CHARGE && absdy < CSF_MIN_DISTANCE_TO_CHARGE ) { setAction(A_DOPEFISH_EAT); mp_processState = &CDopeFish::processEat; m_eatTimer = DOPE_EAT_TIMER; } } } return true; }