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)));
}
}