Advertisement
Guest User

canDoCombat

a guest
Jan 6th, 2019
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. ReturnValue Combat::canDoCombat(const Creature* attacker, const Creature* target)
  2. {
  3.     if(attacker){
  4.         if(const Player* targetPlayer = target->getPlayer()){
  5.             if(targetPlayer->hasFlag(PlayerFlag_CannotBeAttacked)){
  6.                 return RET_YOUMAYNOTATTACKTHISPERSON;
  7.             }
  8.  
  9.             if(const Player* attackerPlayer = attacker->getPlayer()){
  10.                 if(attackerPlayer->hasFlag(PlayerFlag_CannotAttackPlayer) ||
  11.                     attackerPlayer->isLoginAttackLocked(targetPlayer->getID())){
  12.                     return RET_YOUMAYNOTATTACKTHISPERSON;
  13.                 }
  14.             }
  15.  
  16.             if(const Player* masterAttackerPlayer = attacker->getPlayerMaster()){
  17.                 if(masterAttackerPlayer->hasFlag(PlayerFlag_CannotAttackPlayer)){
  18.                     return RET_YOUMAYNOTATTACKTHISPERSON;
  19.                 }
  20.             }
  21.         }
  22.         else if(target->getMonster()){
  23.             if(const Player* attackerPlayer = attacker->getPlayer()){
  24.                 if(attackerPlayer->hasFlag(PlayerFlag_CannotAttackMonster)){
  25.                     return RET_YOUMAYNOTATTACKTHISCREATURE;
  26.                 }
  27.             } else if (attacker->getMonster()) {
  28.                 const Creature* targetMaster = target->getMaster();
  29.  
  30.                 if (!targetMaster || !targetMaster->getPlayer()) {
  31.                     const Creature* attackerMaster = attacker->getMaster();
  32.  
  33.                     if (!attackerMaster || !attackerMaster->getPlayer()) {
  34.                         return RET_YOUMAYNOTATTACKTHISCREATURE;
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.         if(attacker->getPlayer() || attacker->isPlayerSummon()){
  40.             //nopvp-zone
  41.             if(target->getPlayer() && target->getTile()->hasFlag(TILESTATE_NOPVPZONE)){
  42.                 return RET_ACTIONNOTPERMITTEDINANONPVPZONE;
  43.             }
  44.  
  45.             return Combat::checkPVPExtraRestrictions(attacker, target, false);
  46.         }
  47.     }
  48.  
  49.     return RET_NOERROR;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement