bool BaseEnemy::CheckObstruct() { int pxt = aio->player_input->GetXTilePos(); unsigned char blkl; unsigned char blk; if(pxt < xtile) { for(int i=pxt; i <=xtile; i++) { blkl=aio->level_interface->GetLevelData(i, ytile-1); if(*(cblocks+blkl)) return true; blk = GetAIMapCord(i, ytile); if( blk == BLK_STOP || blk == BLK_STOPLEFT || blk == BLK_STOPRIGHT) return true; } } else { for(int i=xtile; i <=pxt; i++) { blkl=aio->level_interface->GetLevelData(i, ytile-1); if(*(cblocks+blkl)) return true; blk = GetAIMapCord(i, ytile); if( blk == BLK_STOP || blk == BLK_STOPLEFT || blk == BLK_STOPRIGHT) return true; } } return false; }
bool AIEnemyFlyingSentryA::IsStopBlock() { unsigned char blk; unsigned char tile; float vx, vy; /* if(aiinput->GetDirection()) tile = aio->level_interface->GetLevelData(xtile+1, ytile); else tile = aio->level_interface->GetLevelData(xtile-1, ytile);*/ aiinput->GetVelocityVector(&vx, &vy); if(vy < 0) { /*#ifdef _DEBUG char temp[512]; sprintf(temp, "{AI}[sentryA] (vy:%f) (lyb:%d) (uyb:%d) (xt:%d) (yt:%d)", vy, aiinput->lower_patrol_y, aiinput->upper_patrol_y, xtile, ytile); OutputDebugString(temp); #endif*/ blk = GetAIMapCord(xtile, ytile - 1); if(blk == BLK_STOP) return true; //if(use_patrol_bounds) if(ytile <= aiinput->upper_patrol_y) return true; //tile = aio->level_interface->GetLevelData(xtile, ytile-1); } else { blk = GetAIMapCord(xtile, ytile + 1); if(blk == BLK_STOP) return true; //if(use_patrol_bounds) if(ytile >= aiinput->lower_patrol_y) return true; //tile = aio->level_interface->GetLevelData(xtile, ytile+1); } //if(tile >= 1) return true; //else return false; return false; // unsigned char tile; // float dx, dy; // aiinput->GetVelocityVector(&dx, &dy); // if(dy >= 0) tile = aio->level_interface->GetLevelData(xtile, ytile+1); /// else tile = aio->level_interface->GetLevelData(xtile, ytile-1); // if(tile >= 1) return true; // else if(aiinput->GetYTilePos() >= aiinput->right_patrol_loc.y) return true; // else if(aiinput->GetYTilePos() <= aiinput->left_patrol_loc.y) return true; // else return false; }
bool AIEnemyFlyingSentryB::IsStopBlock() { /* unsigned char tile; if(aiinput->GetDirection()) tile = aio->level_interface->GetLevelData(xtile+1, ytile); else tile = aio->level_interface->GetLevelData(xtile-1, ytile); if(tile >= 1) return true; else return false;*/ unsigned char tile; unsigned char blk;// = GetAIMapCord(xtile, ytile); // float dx, dy; // aiinput->GetVelocityVector(&dx, &dy); if(aiinput->GetDirection()) { if(use_patrol_bounds) if(xtile == aiinput->upper_patrol_x) return true; tile = aio->level_interface->GetLevelData(xtile+1, ytile-1); blk = GetAIMapCord(xtile+1, ytile); } else { if(use_patrol_bounds) if(xtile == aiinput->lower_patrol_x) return true; tile = aio->level_interface->GetLevelData(xtile-1, ytile-1); blk = GetAIMapCord(xtile-1, ytile); } if(tile == 1) return true; if( aiinput->GetDirection()) if( (blk == BLK_STOP) || (blk == BLK_STOPRIGHT)) return true; if(!aiinput->GetDirection()) if( (blk == BLK_STOP) || (blk == BLK_STOPLEFT) ) return true; return false; }
bool AIEnemyAdvancedGeneticMonster2::IsStopBlock() { int count=0; unsigned char blk= GetAIMapCord(xtile, ytile); unsigned char blkl; if(aiinput->GetDirection()) { //check ai coding if( (blk == BLK_STOP) || (blk == BLK_STOPRIGHT)) return true; if(use_patrol_bounds) if(xtile == aiinput->upper_patrol_x) return true; //check for blocks in the level in front of us for(count=0; count<=aiinput->GetTileHeight()+6; count++) { blkl=aio->level_interface->GetLevelData(xtile+3, ytile-count-1); if(*(cblocks+blkl)) return true; // if(count >=10) break; } } else { if( (blk == BLK_STOP) || (blk == BLK_STOPLEFT)) return true; if(use_patrol_bounds) if(xtile == aiinput->lower_patrol_x) return true; for(count=0; count<=aiinput->GetTileHeight()+6; count++) { blkl=aio->level_interface->GetLevelData(xtile-3, ytile-count-1); if(*(cblocks+blkl)) return true; // if(count >=10) break; } } return false; }
bool AIEnemyGMonster::IsStopBlock() { int count=0; unsigned char blk;//= GetAIMapCord(xtile, ytile); unsigned char blkl; if(aiinput->GetDirection()) { blk = GetAIMapCord(xtile + 1, ytile); //check ai coding if( (blk == BLK_STOP) || (blk == BLK_STOPRIGHT)) return true; //check for blocks in the level in front of us /* for(count=0; count<aiinput->GetTileHeight(); count++) { blkl=aio->level_interface->GetLevelData(xtile+2, ytile-count-1); if(*(cblocks+blkl)) return true; // if(count >=10) break; } */ for (int i = 1; i <= 3; i++) { blk = aio->level_interface->GetLevelData(xtile + 1, ytile - i); if (blk != 0 && blk != NONSIDEBASICBLOCK && blk != CLIMBBLOCKLEFT && blk != CLIMBBLOCKRIGHT && blk != CLIMBLADDER && blk != CLIMBROPE && blk != SPAWNFLAG && (blk < ENEMYFIRST || blk > ENEMYLAST)) return true; } } else { blk = GetAIMapCord(xtile - 1, ytile); if( (blk == BLK_STOP) || (blk == BLK_STOPLEFT)) return true; /* for(count=0; count<aiinput->GetTileHeight(); count++) { blkl=aio->level_interface->GetLevelData(xtile-2, ytile-count-1); if(*(cblocks+blkl)) return true; // if(count >=10) break; }*/ for (int i = 1; i <= 3; i++) { blk = aio->level_interface->GetLevelData(xtile - 1, ytile - i); if (blk != 0 && blk != NONSIDEBASICBLOCK && blk != CLIMBBLOCKLEFT && blk != CLIMBBLOCKRIGHT && blk != CLIMBLADDER && blk != CLIMBROPE && blk != SPAWNFLAG && (blk < ENEMYFIRST || blk > ENEMYLAST)) return true; } } return false; }