potinho
Advanced OT User
Good morning everyone, today I realized that my server is behaving (I don't know if expected) but unwanted, let's think about the following scenario:
Player 1 Attacks Player 2 (and takes White Skull)
Player 2 attacks player 1 back and manages to enter a Protection Zone (shouldn't/would't)
After leaving the PZ, player 2 attacks player 1 again and turns Yellow Skull, and now it has PZ lock
I would like Player 2 to have PZ lock on the first attack, could you help me?
Player 1 Attacks Player 2 (and takes White Skull)
Player 2 attacks player 1 back and manages to enter a Protection Zone (shouldn't/would't)
After leaving the PZ, player 2 attacks player 1 again and turns Yellow Skull, and now it has PZ lock
I would like Player 2 to have PZ lock on the first attack, could you help me?
C++:
void Player::onTarget(Creature* target)
{
Creature::onTarget(target);
if(target == this)
{
addInFightTicks(false);
return;
}
if(hasFlag(PlayerFlag_NotGainInFight))
return;
Player* targetPlayer = target->getPlayer();
if(targetPlayer && !isPartner(targetPlayer) && !isAlly(targetPlayer))
{
if(!pzLocked && g_game.getWorldType() == WORLDTYPE_HARDCORE)
{
pzLocked = true;
sendIcons();
}
if(getSkull() == SKULL_NONE && getSkullType(targetPlayer) == SKULL_YELLOW)
{
addAttacked(targetPlayer);
targetPlayer->sendCreatureSkull(this);
}
else if(!targetPlayer->hasAttacked(this))
{
if(!pzLocked)
{
pzLocked = true;
sendIcons();
}
if(!Combat::isInPvpZone(this, targetPlayer) && !isEnemy(this))
{
addAttacked(targetPlayer);
if(targetPlayer->getSkull() == SKULL_NONE && getSkull() == SKULL_NONE && (!guildId || !targetPlayer->getGuildId()))
{
setSkull(SKULL_WHITE);
g_game.updateCreatureSkull(this);
}
if(getSkull() == SKULL_NONE)
targetPlayer->sendCreatureSkull(this);
}
}
}
addInFightTicks(false);
}