if (attacker) { int xdiff = this->x - attacker->x; int ydiff = this->y - attacker->y; int absxdiff = std::abs(xdiff); int absydiff = std::abs(ydiff); if ((absxdiff == 1 && absydiff == 0) || (absxdiff == 0 && absydiff == 1) || (absxdiff == 0 && absydiff == 0)) { //if(attacker == this->punk) if(attacker != this->owner) // don't attack character if it's pet owner this->Attack(attacker); return; } else if (absxdiff > absydiff) { if (xdiff < 0) { this->direction = DIRECTION_RIGHT; } else { this->direction = DIRECTION_LEFT; } } else { if (ydiff < 0) { this->direction = DIRECTION_DOWN; } else { this->direction = DIRECTION_UP; } } if (!this->Walk(this->direction)) { this->Walk(static_cast<Direction>(util::rand(0,3))); } }