void Enemy::BelowFeetLadderCheck() { /* Check for Back Ladder OR Rope Block Below (When NOT Jumping) */ if(!ipFlags.S_JUMP) { /* check for noncollidable ground tile */ if(level_class != 0) { if((level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBLADDER) || (level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBROPE) || (level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBBLOCKRIGHT) || (level_class->GetLevelData(GetXTilePos(), GetYTilePos()) == CLIMBBLOCKLEFT)) ipFlags.S_NO_GRAVITY = true; /* reset gravity if BACK on the 'collidable' ground */ else { ipFlags.S_NO_GRAVITY = false; } } } }
void EnemyWolfGawain::processUpdate() { if((player_spr->GetFrameSet() == ENEMY_WOLF_DEATH) && !player_spr->IsAnimating()) Die(); // if(((GetXTilePos() > 22) || (GetXTilePos() < 2))) // Die(); if(((GetXTilePos() > 18) || (GetXTilePos() < 4))) Die(); else COLLISION = true; if(ipFlags.S_ATTACK && !ipFlags.S_DEAD) { if(!HIT) { if(!START) { int dx = player->GetXTilePos() - GetXTilePos(); if(dx > 0) { ipFlags.S_DIRECTION = true; velMovement = maxWalkSpeed; } else { ipFlags.S_DIRECTION = false; velMovement = -maxWalkSpeed; } SetAnimation(ENEMY_WOLF_MOVE, 0, true, false, 15, true); START = true; } else if(START) { if(ipFlags.S_DIRECTION) velMovement = maxWalkSpeed; else velMovement = -maxWalkSpeed; } } } if(COLLISION) { rectDX = 15; rectDY = 15; rectXOffset = -nxOffSet; rectYOffset = 15; // SetRectangle(rectWorldLoc, 15, 15, -nxOffSet, 15); } else { rectDX = 0; rectDY = 0; rectXOffset = 0; rectYOffset = 0; // SetRectangle(rectWorldLoc, 0, 0, 0, 0); } }