Mauzim
Member
- Joined
- Jan 3, 2011
- Messages
- 568
- Reaction score
- 9
IN OTX 2.9 8.70 I HAVE PROBLEM WHEN PLAYER IS IN WAR MAKE RED FIST AND ATTACK WAR ENEMY HE GET SKULL
MAYBE IS PROBLEM HERE
MAYBE IS PROBLEM HERE
Code:
void Player::onTarget(Creature* target)
{
Creature::onTarget(target);
if(hasFlag(PlayerFlag_NotGainInFight))
return;
if(target == this)
{
addInFightTicks(false);
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 && g_game.getWorldType() != WORLDTYPE_HARDCORE)
{
pzLocked = true;
sendIcons();
}
if(!Combat::isInPvpZone(this, targetPlayer) && !isAlly(targetPlayer))
{
addAttacked(targetPlayer);
if(targetPlayer->getSkull() == SKULL_NONE && getSkull() == SKULL_NONE)
{
setSkull(SKULL_WHITE);
g_game.updateCreatureSkull(this);
}
if(getSkull() == SKULL_NONE)
targetPlayer->sendCreatureSkull(this);
}
}
}
addInFightTicks(false);
}
bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
{
if(!Creature::onKilledCreature(target, entry))
return false;
if(hasFlag(PlayerFlag_NotGenerateLoot))
target->setDropLoot(LOOT_DROP_NONE);
Condition* condition = NULL;
if(target->getMonster() && !target->isPlayerSummon() && !hasFlag(PlayerFlag_HasInfiniteStamina)
&& (condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_HUNTING,
g_config.getNumber(ConfigManager::HUNTING_DURATION))))
addCondition(condition);
if(hasFlag(PlayerFlag_NotGainInFight) || getZone() != target->getZone())
return true;
Player* targetPlayer = target->getPlayer();
if(!targetPlayer || Combat::isInPvpZone(this, targetPlayer)
|| isPartner(targetPlayer) || isAlly(targetPlayer))
return true;
War_t enemy;
if(targetPlayer->getEnemy(this, enemy))
{
if(entry.isLast())
IOGuild::getInstance()->updateWar(enemy);
entry.setWar(enemy);
}
if(!entry.isJustify() || !hasCondition(CONDITION_INFIGHT))
return true;
std::vector<uint32_t>::iterator it = std::find(revengeList.begin(), revengeList.end(), targetPlayer->getGUID());
if(!targetPlayer->hasAttacked(this) && target->getSkull() == SKULL_NONE && it == revengeList.end()
&& targetPlayer != this && (addUnjustifiedKill(targetPlayer, !enemy.war) || entry.isLast()))
entry.setUnjustified();
if(it != revengeList.end())
revengeList.erase(it);
if(entry.isLast())
addInFightTicks(false, g_config.getNumber(ConfigManager::WHITE_SKULL_TIME));
return true;
}
Last edited by a moderator: