Combat::canTargetCreature
unknown
plain_text
2 years ago
2.1 kB
4
Indexable
ReturnValue Combat::canTargetCreature(const Player* player, const Creature* target) { if(player == target){ return RET_YOUMAYNOTATTACKTHISPERSON; } if(g_config.getBoolean(ConfigManager::TARGET_NPCS)) { if (target->getNpc()) { if (player) { Player* _player = g_game.getPlayerByNameEx(player->getName()); if(_player) { uint32_t muteTime = _player->getMuteTime(); if(!muteTime) { g_game.internalCreatureSay(_player, SPEAK_SAY, "hi"); _player->removeMessageBuffer(); } else { std::stringstream ss; ss << "You are still muted for " << muteTime << " seconds."; player->sendTextMessage(MSG_INFO_DESCR, ss.str()); } } } return RET_YOUCANTALKWITHTHISNPC; } } if(!player->hasFlag(PlayerFlag_IgnoreProtectionZone)){ //pz-zone if(player->getZone() == ZONE_PROTECTION){ return RET_YOUMAYNOTATTACKAPERSONWHILEINPROTECTIONZONE; } if(target->getZone() == ZONE_PROTECTION){ return RET_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE; } //nopvp-zone if(isPlayerCombat(target)){ if(player->getZone() == ZONE_NOPVP){ return RET_ACTIONNOTPERMITTEDINANONPVPZONE; } if(target->getZone() == ZONE_NOPVP){ return RET_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE; } } } if(player->hasFlag(PlayerFlag_CannotUseCombat) || !target->isAttackable()){ if(target->getPlayer()){ return RET_YOUMAYNOTATTACKTHISPERSON; } else { return RET_YOUMAYNOTATTACKTHISPERSON; } } #ifdef __SKULLSYSTEM__ if(const Player* targetPlayer = target->getPlayer()){ if (player->hasSafeMode()){ if(player->isPartner(targetPlayer) || player->isGuildPartner(targetPlayer) || player->isWarPartner(targetPlayer) || player->isGuildEnemy(targetPlayer)){ return Combat::canDoCombat(player, targetPlayer); } if (targetPlayer->getSkull() == SKULL_NONE){ if (!Combat::isInPvpZone(player, targetPlayer)){ return RET_TURNSECUREMODETOATTACKUNMARKEDPLAYERS; } } } } #endif return Combat::canDoCombat(player, target); }
Editor is loading...