const Player* attackerPlayer = NULL;
if((attackerPlayer = attacker->getPlayer()) || (attackerPlayer = attacker->getPlayerMaster()))
{
checkZones = true;
if((g_game.getWorldType() == WORLDTYPE_OPTIONAL && !Combat::isInPvpZone(attacker, target)
&& !attackerPlayer->isEnemy(targetPlayer, true)
) || isProtected(const_cast<Player*>(attackerPlayer), const_cast<Player*>(targetPlayer))
|| (g_config.getBool(ConfigManager::CANNOT_ATTACK_SAME_LOOKFEET)
&& attackerPlayer->getDefaultOutfit().lookFeet == targetPlayer->getDefaultOutfit().lookFeet)
|| !attackerPlayer->canSeeCreature(targetPlayer))
return RET_YOUMAYNOTATTACKTHISPLAYER;
}
}
else if(target->getMonster())
{
if(!target->isAttackable())
return RET_YOUMAYNOTATTACKTHISCREATURE;
const Player* attackerPlayer = NULL;
if((attackerPlayer = attacker->getPlayer()) || (attackerPlayer = attacker->getPlayerMaster()))
{
if(attackerPlayer->hasFlag(PlayerFlag_CannotAttackMonster))
return RET_YOUMAYNOTATTACKTHISCREATURE;