/**
   * Manage actions when a player click on this L2PcInstance.<br>
   * <br>
   * <B><U> Actions on first click on the L2PcInstance (Select it)</U> :</B><br>
   * <br>
   * <li>Set the target of the player
   * <li>Send a Server->Client packet MyTargetSelected to the player (display the select window)<br>
   *     <br>
   *     <B><U> Actions on second click on the L2PcInstance (Follow it/Attack it/Intercat with
   *     it)</U> :</B><br>
   *     <br>
   * <li>Send a Server->Client packet MyTargetSelected to the player (display the select window)
   * <li>If target L2PcInstance has a Private Store, notify the player AI with AI_INTENTION_INTERACT
   * <li>If target L2PcInstance is autoAttackable, notify the player AI with AI_INTENTION_ATTACK<br>
   *     <br>
   * <li>If target L2PcInstance is NOT autoAttackable, notify the player AI with AI_INTENTION_FOLLOW
   *     <br>
   *     <br>
   *     <B><U> Example of use </U> :</B><br>
   *     <br>
   * <li>Client packet : Action, AttackRequest<br>
   *     <br>
   *
   * @param activeChar The player that start an action on target L2PcInstance
   */
  public boolean action(L2PcInstance activeChar, L2Object target, boolean interact) {
    // See description in TvTEvent.java
    if (!TvTEvent.onAction(activeChar, target.getObjectId())) return false;

    // Check if the L2PcInstance is confused
    if (activeChar.isOutOfControl()) return false;

    // Aggression target lock effect
    if (activeChar.isLockedTarget() && activeChar.getLockedTarget() != target) {
      activeChar.sendPacket(new SystemMessage(SystemMessageId.FAILED_CHANGE_TARGET));
      return false;
    }

    // Check if the activeChar already target this L2PcInstance
    if (activeChar.getTarget() != target) {
      // Set the target of the activeChar
      activeChar.setTarget(target);

      // Send a Server->Client packet MyTargetSelected to the activeChar
      // The color to display in the select window is White
      activeChar.sendPacket(new MyTargetSelected(target.getObjectId(), 0));
      if (activeChar != target) activeChar.sendPacket(new ValidateLocation((L2Character) target));
    } else if (interact) {
      if (activeChar != target) activeChar.sendPacket(new ValidateLocation((L2Character) target));
      // Check if this L2PcInstance has a Private Store
      if (((L2PcInstance) target).getPrivateStoreType() != 0) {
        activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, target);
      } else {
        // Check if this L2PcInstance is autoAttackable
        if (target.isAutoAttackable(activeChar)) {
          // activeChar with lvl < 21 can't attack a cursed weapon holder
          // And a cursed weapon holder  can't attack activeChars with lvl < 21
          if ((((L2PcInstance) target).isCursedWeaponEquipped() && activeChar.getLevel() < 21)
              || (activeChar.isCursedWeaponEquipped() && ((L2Character) target).getLevel() < 21)) {
            activeChar.sendPacket(ActionFailed.STATIC_PACKET);
          } else {
            if (Config.GEODATA > 0) {
              if (GeoData.getInstance().canSeeTarget(activeChar, target)) {
                activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
                activeChar.onActionRequest();
              }
            } else {
              activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, target);
              activeChar.onActionRequest();
            }
          }
        } else {
          // This Action Failed packet avoids activeChar getting stuck when clicking three or more
          // times
          activeChar.sendPacket(ActionFailed.STATIC_PACKET);
          if (Config.GEODATA > 0) {
            if (GeoData.getInstance().canSeeTarget(activeChar, target))
              activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, target);
          } else activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, target);
        }
      }
    }
    return true;
  }
Esempio n. 2
0
  @Override
  public boolean useBypass(String command, L2PcInstance player, L2Character bypassOrigin) {
    final QuestState qs = getQuestState(player, false);
    if ((qs != null)
        || (player.getLevel() < MIN_LEVEL)
        || (player.getLevel() > MAX_LEVEL)
        || (player.getRace() == Race.ERTHEIA)
        || !command.equals("Q10390_Teleport")) {
      return false;
    }

    if (player.isInParty()) {
      player.sendPacket(
          new ExShowScreenMessage("You cannot teleport when you are in party.", 5000));
    } else if (player.isInCombat()) {
      player.sendPacket(
          new ExShowScreenMessage("You cannot teleport when you are in combat.", 5000));
    } else if (player.isInDuel()) {
      player.sendPacket(
          new ExShowScreenMessage("You cannot teleport when you are in a duel.", 5000));
    } else if (player.isInOlympiadMode()) {
      player.sendPacket(
          new ExShowScreenMessage("You cannot teleport when you are in Olympiad.", 5000));
    } else if (player.isInVehicle()) {
      player.sendPacket(
          new ExShowScreenMessage(
              "You cannot teleport when you are in any vehicle or mount.", 5000));
    } else {
      player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
      player.teleToLocation(TP_LOCS[player.getRace().ordinal()]);
    }
    return true;
  }
  /** @see com.l2jserver.gameserver.model.L2Effect#onActionTime() */
  @Override
  public boolean onActionTime() {
    if (getCount() == getTotalCount() - 1) return true; // do nothing first time
    int mpConsume = getSkill().getMpConsume();

    L2PcInstance caster = (L2PcInstance) getEffector();

    for (L2Character cha :
        _actor.getKnownList().getKnownCharactersInRadius(getSkill().getSkillRadius())) {
      if (cha == null) continue;

      if (cha instanceof L2Playable) {
        if (caster.canAttackCharacter(cha)) {
          L2PcInstance owner = null;
          if (cha instanceof L2Summon) owner = ((L2Summon) cha).getOwner();
          else owner = (L2PcInstance) cha;

          if (owner != null && owner.getPet() != null) {
            if (mpConsume > getEffector().getCurrentMp()) {
              getEffector()
                  .sendPacket(
                      SystemMessage.getSystemMessage(SystemMessageId.SKILL_REMOVED_DUE_LACK_MP));
              return false;
            } else getEffector().reduceCurrentMp(mpConsume);

            owner.getPet().unSummon(owner);
            owner.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, getEffector());
          }
        }
      }
    }
    return true;
  }
Esempio n. 4
0
  @Override
  public void onStart(BuffInfo info) {
    if (info.getEffected().isPlayer()) {
      L2PcInstance activeChar = info.getEffected().getActingPlayer();
      activeChar.setInvisible(true);

      if ((activeChar.getAI().getNextIntention() != null)
          && (activeChar.getAI().getNextIntention().getCtrlIntention()
              == CtrlIntention.AI_INTENTION_ATTACK)) {
        activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
      }

      for (L2Character target : activeChar.getKnownList().getKnownCharacters()) {
        if ((target != null) && (target.getTarget() == activeChar)) {
          target.setTarget(null);
          target.abortAttack();
          target.abortCast();
          target.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
        }
      }
    }
  }
 /**
  * Manage actions when a player click on the L2ArtefactInstance.<br>
  * <br>
  * <B><U> Actions</U> :</B><br>
  * <br>
  * <li>Set the L2NpcInstance as target of the L2PcInstance player (if necessary)
  * <li>Send a Server->Client packet MyTargetSelected to the L2PcInstance player (display the
  *     select window)
  * <li>Send a Server->Client packet ValidateLocation to correct the L2NpcInstance position and
  *     heading on the client<br>
  *     <br>
  *     <B><U> Example of use </U> :</B><br>
  *     <br>
  * <li>Client packet : Action, AttackRequest<br>
  *     <br>
  */
 @Override
 public boolean action(L2PcInstance activeChar, L2Object target, boolean interact) {
   if (!((L2Npc) target).canTarget(activeChar)) {
     return false;
   }
   if (activeChar.getTarget() != target) {
     activeChar.setTarget(target);
   } else if (interact) {
     // Calculate the distance between the L2PcInstance and the L2NpcInstance
     if (!((L2Npc) target).canInteract(activeChar)) {
       // Notify the L2PcInstance AI with AI_INTENTION_INTERACT
       activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, target);
     }
   }
   return true;
 }
Esempio n. 6
0
  @Override
  protected void runImpl() {
    final L2PcInstance activeChar = getActiveChar();
    if (activeChar == null) {
      return;
    }

    if (Config.DEBUG) {
      _log.info(
          getType()
              + ": "
              + activeChar
              + " requested action use ID: "
              + _actionId
              + " Ctrl pressed:"
              + _ctrlPressed
              + " Shift pressed:"
              + _shiftPressed);
    }

    // Don't do anything if player is dead or confused
    if ((activeChar.isFakeDeath() && (_actionId != 0))
        || activeChar.isDead()
        || activeChar.isOutOfControl()) {
      sendPacket(ActionFailed.STATIC_PACKET);
      return;
    }

    final BuffInfo info =
        activeChar.getEffectList().getBuffInfoByAbnormalType(AbnormalType.BOT_PENALTY);
    if (info != null) {
      for (AbstractEffect effect : info.getEffects()) {
        if (!effect.checkCondition(_actionId)) {
          activeChar.sendPacket(
              SystemMessageId
                  .YOU_HAVE_BEEN_REPORTED_AS_AN_ILLEGAL_PROGRAM_USER_SO_YOUR_ACTIONS_HAVE_BEEN_RESTRICTED);
          activeChar.sendPacket(ActionFailed.STATIC_PACKET);
          return;
        }
      }
    }

    // Don't allow to do some action if player is transformed
    if (activeChar.isTransformed()) {
      int[] allowedActions =
          activeChar.isTransformed()
              ? ExBasicActionList.ACTIONS_ON_TRANSFORM
              : ExBasicActionList.DEFAULT_ACTION_LIST;
      if (!(Arrays.binarySearch(allowedActions, _actionId) >= 0)) {
        sendPacket(ActionFailed.STATIC_PACKET);
        _log.warning(
            "Player "
                + activeChar
                + " used action which he does not have! Id = "
                + _actionId
                + " transform: "
                + activeChar.getTransformation());
        return;
      }
    }

    final L2Summon pet = activeChar.getPet();
    final L2Summon servitor = activeChar.getAnyServitor();
    final L2Object target = activeChar.getTarget();
    switch (_actionId) {
      case 0: // Sit/Stand
        if (activeChar.isSitting() || !activeChar.isMoving() || activeChar.isFakeDeath()) {
          useSit(activeChar, target);
        } else {
          // Sit when arrive using next action.
          // Creating next action class.
          final NextAction nextAction =
              new NextAction(
                  CtrlEvent.EVT_ARRIVED,
                  CtrlIntention.AI_INTENTION_MOVE_TO,
                  () -> useSit(activeChar, target));

          // Binding next action to AI.
          activeChar.getAI().setNextAction(nextAction);
        }
        break;
      case 1: // Walk/Run
        if (activeChar.isRunning()) {
          activeChar.setWalking();
        } else {
          activeChar.setRunning();
        }
        break;
      case 10: // Private Store - Sell
        activeChar.tryOpenPrivateSellStore(false);
        break;
      case 15: // Change Movement Mode (Pets)
        if (validateSummon(pet, true)) {
          ((L2SummonAI) pet.getAI()).notifyFollowStatusChange();
        }
        break;
      case 16: // Attack (Pets)
        if (validateSummon(pet, true)) {
          if (pet.canAttack(_ctrlPressed)) {
            pet.doAttack();
          }
        }
        break;
      case 17: // Stop (Pets)
        if (validateSummon(pet, true)) {
          pet.cancelAction();
        }
        break;
      case 19: // Unsummon Pet
        if (!validateSummon(pet, true)) {
          break;
        }

        if (pet.isDead()) {
          sendPacket(SystemMessageId.DEAD_PETS_CANNOT_BE_RETURNED_TO_THEIR_SUMMONING_ITEM);
          break;
        }

        if (pet.isAttackingNow() || pet.isInCombat() || pet.isMovementDisabled()) {
          sendPacket(SystemMessageId.A_PET_CANNOT_BE_UNSUMMONED_DURING_BATTLE);
          break;
        }

        if (pet.isHungry()) {
          if (!((L2PetInstance) pet).getPetData().getFood().isEmpty()) {
            sendPacket(SystemMessageId.YOU_MAY_NOT_RESTORE_A_HUNGRY_PET);
          } else {
            sendPacket(
                SystemMessageId
                    .THE_MINION_PET_CANNOT_BE_RETURNED_BECAUSE_THERE_IS_NOT_MUCH_TIME_REMAINING_UNTIL_IT_LEAVES);
          }
          break;
        }

        pet.unSummon(activeChar);
        break;
      case 21: // Change Movement Mode (Servitors)
        if (validateSummon(servitor, false)) {
          ((L2SummonAI) servitor.getAI()).notifyFollowStatusChange();
        }
        break;
      case 22: // Attack (Servitors)
        if (validateSummon(servitor, false)) {
          if (servitor.canAttack(_ctrlPressed)) {
            servitor.doAttack();
          }
        }
        break;
      case 23: // Stop (Servitors)
        if (validateSummon(servitor, false)) {
          servitor.cancelAction();
        }
        break;
      case 28: // Private Store - Buy
        activeChar.tryOpenPrivateBuyStore();
        break;
      case 32: // Wild Hog Cannon - Wild Cannon
        useSkill("DDMagic", false);
        break;
      case 36: // Soulless - Toxic Smoke
        useSkill("RangeDebuff", false);
        break;
      case 37: // Dwarven Manufacture
        if (activeChar.isAlikeDead()) {
          sendPacket(ActionFailed.STATIC_PACKET);
          return;
        }
        if (activeChar.getPrivateStoreType() != PrivateStoreType.NONE) {
          activeChar.setPrivateStoreType(PrivateStoreType.NONE);
          activeChar.broadcastUserInfo();
        }
        if (activeChar.isSitting()) {
          activeChar.standUp();
        }

        sendPacket(new RecipeShopManageList(activeChar, true));
        break;
      case 38: // Mount/Dismount
        activeChar.mountPlayer(pet);
        break;
      case 39: // Soulless - Parasite Burst
        useSkill("RangeDD", false);
        break;
      case 41: // Wild Hog Cannon - Attack
        if (validateSummon(servitor, false)) {
          if ((target != null) && (target.isDoor() || (target instanceof L2SiegeFlagInstance))) {
            useSkill(4230, false);
          } else {
            sendPacket(SystemMessageId.INVALID_TARGET);
          }
        }
        break;
      case 42: // Kai the Cat - Self Damage Shield
        useSkill("HealMagic", false);
        break;
      case 43: // Merrow the Unicorn - Hydro Screw
        useSkill("DDMagic", false);
        break;
      case 44: // Big Boom - Boom Attack
        useSkill("DDMagic", false);
        break;
      case 45: // Boxer the Unicorn - Master Recharge
        useSkill("HealMagic", activeChar, false);
        break;
      case 46: // Mew the Cat - Mega Storm Strike
        useSkill("DDMagic", false);
        break;
      case 47: // Silhouette - Steal Blood
        useSkill("DDMagic", false);
        break;
      case 48: // Mechanic Golem - Mech. Cannon
        useSkill("DDMagic", false);
        break;
      case 51: // General Manufacture
        // Player shouldn't be able to set stores if he/she is alike dead (dead or fake death)
        if (activeChar.isAlikeDead()) {
          sendPacket(ActionFailed.STATIC_PACKET);
          return;
        }
        if (activeChar.getPrivateStoreType() != PrivateStoreType.NONE) {
          activeChar.setPrivateStoreType(PrivateStoreType.NONE);
          activeChar.broadcastUserInfo();
        }
        if (activeChar.isSitting()) {
          activeChar.standUp();
        }

        sendPacket(new RecipeShopManageList(activeChar, false));
        break;
      case 52: // Unsummon Servitor
        if (validateSummon(servitor, false)) {
          if (servitor.isAttackingNow() || servitor.isInCombat()) {
            sendPacket(SystemMessageId.A_SERVITOR_WHOM_IS_ENGAGED_IN_BATTLE_CANNOT_BE_DE_ACTIVATED);
            break;
          }
          servitor.unSummon(activeChar);
        }
        break;
      case 53: // Move to target (Servitors)
        if (validateSummon(servitor, false)) {
          if ((target != null) && (servitor != target) && !servitor.isMovementDisabled()) {
            servitor.setFollowStatus(false);
            servitor.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, target.getLocation());
          }
        }
        break;
      case 54: // Move to target (Pets)
        if (validateSummon(pet, true)) {
          if ((target != null) && (pet != target) && !pet.isMovementDisabled()) {
            pet.setFollowStatus(false);
            pet.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, target.getLocation());
          }
        }
        break;
      case 61: // Private Store Package Sell
        activeChar.tryOpenPrivateSellStore(true);
        break;
      case 65: // Bot Report Button
        if (Config.BOTREPORT_ENABLE) {
          BotReportTable.getInstance().reportBot(activeChar);
        } else {
          activeChar.sendMessage("This feature is disabled.");
        }
        break;
      case 67: // Steer
        if (activeChar.isInAirShip()) {
          if (activeChar.getAirShip().setCaptain(activeChar)) {
            activeChar.broadcastUserInfo();
          }
        }
        break;
      case 68: // Cancel Control
        if (activeChar.isInAirShip() && activeChar.getAirShip().isCaptain(activeChar)) {
          if (activeChar.getAirShip().setCaptain(null)) {
            activeChar.broadcastUserInfo();
          }
        }
        break;
      case 69: // Destination Map
        AirShipManager.getInstance().sendAirShipTeleportList(activeChar);
        break;
      case 70: // Exit Airship
        if (activeChar.isInAirShip()) {
          if (activeChar.getAirShip().isCaptain(activeChar)) {
            if (activeChar.getAirShip().setCaptain(null)) {
              activeChar.broadcastUserInfo();
            }
          } else if (activeChar.getAirShip().isInDock()) {
            activeChar.getAirShip().oustPlayer(activeChar);
          }
        }
        break;
      case 71:
      case 72:
      case 73:
        useCoupleSocial(_actionId - 55);
        break;
      case 78:
      case 79:
      case 80:
      case 81:
        if ((activeChar.getParty() != null)
            && (activeChar.getTarget() != null)
            && (activeChar.getTarget().isCharacter())) {
          activeChar
              .getParty()
              .addTacticalSign(_actionId - 77, (L2Character) activeChar.getTarget());
        } else {
          sendPacket(ActionFailed.STATIC_PACKET);
        }
        break;
      case 82:
      case 83:
      case 84:
      case 85:
        if (activeChar.getParty() != null) {
          activeChar.getParty().setTargetBasedOnTacticalSignId(activeChar, _actionId - 81);
        } else {
          sendPacket(ActionFailed.STATIC_PACKET);
        }
        break;
      case 90: // /instancedzone action since Lindvior
        activeChar.sendPacket(new ExInzoneWaiting(activeChar));
        break;
      case 1000: // Siege Golem - Siege Hammer
        if ((target != null) && target.isDoor()) {
          useSkill(4079, false);
        }
        break;
      case 1001: // Sin Eater - Ultimate Bombastic Buster
        if (validateSummon(pet, true) && (pet.getId() == SIN_EATER_ID)) {
          pet.broadcastPacket(
              new NpcSay(
                  pet.getObjectId(),
                  ChatType.NPC_GENERAL,
                  pet.getId(),
                  NPC_STRINGS[Rnd.get(NPC_STRINGS.length)]));
        }
        break;
      case 1003: // Wind Hatchling/Strider - Wild Stun
        useSkill("PhysicalSpecial", true);
        break;
      case 1004: // Wind Hatchling/Strider - Wild Defense
        useSkill("Buff", activeChar, true);
        break;
      case 1005: // Star Hatchling/Strider - Bright Burst
        useSkill("DDMagic", true);
        break;
      case 1006: // Star Hatchling/Strider - Bright Heal
        useSkill("Heal", activeChar, true);
        break;
      case 1007: // Feline Queen - Blessing of Queen
        useSkill("Buff1", activeChar, false);
        break;
      case 1008: // Feline Queen - Gift of Queen
        useSkill("Buff2", activeChar, false);
        break;
      case 1009: // Feline Queen - Cure of Queen
        useSkill("DDMagic", false);
        break;
      case 1010: // Unicorn Seraphim - Blessing of Seraphim
        useSkill("Buff1", activeChar, false);
        break;
      case 1011: // Unicorn Seraphim - Gift of Seraphim
        useSkill("Buff2", activeChar, false);
        break;
      case 1012: // Unicorn Seraphim - Cure of Seraphim
        useSkill("DDMagic", false);
        break;
      case 1013: // Nightshade - Curse of Shade
        useSkill("DeBuff1", false);
        break;
      case 1014: // Nightshade - Mass Curse of Shade
        useSkill("DeBuff2", false);
        break;
      case 1015: // Nightshade - Shade Sacrifice
        useSkill("Heal", false);
        break;
      case 1016: // Cursed Man - Cursed Blow
        useSkill("PhysicalSpecial1", false);
        break;
      case 1017: // Cursed Man - Cursed Strike
        useSkill("PhysicalSpecial2", false);
        break;
      case 1031: // Feline King - Slash
        useSkill("PhysicalSpecial1", false);
        break;
      case 1032: // Feline King - Spinning Slash
        useSkill("PhysicalSpecial2", false);
        break;
      case 1033: // Feline King - Hold of King
        useSkill("PhysicalSpecial3", false);
        break;
      case 1034: // Magnus the Unicorn - Whiplash
        useSkill("PhysicalSpecial1", false);
        break;
      case 1035: // Magnus the Unicorn - Tridal Wave
        useSkill("PhysicalSpecial2", false);
        break;
      case 1036: // Spectral Lord - Corpse Kaboom
        useSkill("PhysicalSpecial1", false);
        break;
      case 1037: // Spectral Lord - Dicing Death
        useSkill("PhysicalSpecial2", false);
        break;
      case 1038: // Spectral Lord - Dark Curse
        useSkill("PhysicalSpecial3", false);
        break;
      case 1039: // Swoop Cannon - Cannon Fodder
        useSkill(5110, false);
        break;
      case 1040: // Swoop Cannon - Big Bang
        useSkill(5111, false);
        break;
      case 1041: // Great Wolf - Bite Attack
        useSkill("Skill01", true);
        break;
      case 1042: // Great Wolf - Maul
        useSkill("Skill03", true);
        break;
      case 1043: // Great Wolf - Cry of the Wolf
        useSkill("Skill02", true);
        break;
      case 1044: // Great Wolf - Awakening
        useSkill("Skill04", true);
        break;
      case 1045: // Great Wolf - Howl
        useSkill(5584, true);
        break;
      case 1046: // Strider - Roar
        useSkill(5585, true);
        break;
      case 1047: // Divine Beast - Bite
        useSkill(5580, false);
        break;
      case 1048: // Divine Beast - Stun Attack
        useSkill(5581, false);
        break;
      case 1049: // Divine Beast - Fire Breath
        useSkill(5582, false);
        break;
      case 1050: // Divine Beast - Roar
        useSkill(5583, false);
        break;
      case 1051: // Feline Queen - Bless The Body
        useSkill("buff3", false);
        break;
      case 1052: // Feline Queen - Bless The Soul
        useSkill("buff4", false);
        break;
      case 1053: // Feline Queen - Haste
        useSkill("buff5", false);
        break;
      case 1054: // Unicorn Seraphim - Acumen
        useSkill("buff3", false);
        break;
      case 1055: // Unicorn Seraphim - Clarity
        useSkill("buff4", false);
        break;
      case 1056: // Unicorn Seraphim - Empower
        useSkill("buff5", false);
        break;
      case 1057: // Unicorn Seraphim - Wild Magic
        useSkill("buff6", false);
        break;
      case 1058: // Nightshade - Death Whisper
        useSkill("buff3", false);
        break;
      case 1059: // Nightshade - Focus
        useSkill("buff4", false);
        break;
      case 1060: // Nightshade - Guidance
        useSkill("buff5", false);
        break;
      case 1061: // Wild Beast Fighter, White Weasel - Death blow
        useSkill(5745, true);
        break;
      case 1062: // Wild Beast Fighter - Double attack
        useSkill(5746, true);
        break;
      case 1063: // Wild Beast Fighter - Spin attack
        useSkill(5747, true);
        break;
      case 1064: // Wild Beast Fighter - Meteor Shower
        useSkill(5748, true);
        break;
      case 1065: // Fox Shaman, Wild Beast Fighter, White Weasel, Fairy Princess - Awakening
        useSkill(5753, true);
        break;
      case 1066: // Fox Shaman, Spirit Shaman - Thunder Bolt
        useSkill(5749, true);
        break;
      case 1067: // Fox Shaman, Spirit Shaman - Flash
        useSkill(5750, true);
        break;
      case 1068: // Fox Shaman, Spirit Shaman - Lightning Wave
        useSkill(5751, true);
        break;
      case 1069: // Fox Shaman, Fairy Princess - Flare
        useSkill(5752, true);
        break;
      case 1070: // White Weasel, Fairy Princess, Improved Baby Buffalo, Improved Baby Kookaburra,
        // Improved Baby Cougar, Spirit Shaman, Toy Knight, Turtle Ascetic - Buff control
        useSkill(5771, true);
        break;
      case 1071: // Tigress - Power Strike
        useSkill("DDMagic", true);
        break;
      case 1072: // Toy Knight - Piercing attack
        useSkill(6046, true);
        break;
      case 1073: // Toy Knight - Whirlwind
        useSkill(6047, true);
        break;
      case 1074: // Toy Knight - Lance Smash
        useSkill(6048, true);
        break;
      case 1075: // Toy Knight - Battle Cry
        useSkill(6049, true);
        break;
      case 1076: // Turtle Ascetic - Power Smash
        useSkill(6050, true);
        break;
      case 1077: // Turtle Ascetic - Energy Burst
        useSkill(6051, true);
        break;
      case 1078: // Turtle Ascetic - Shockwave
        useSkill(6052, true);
        break;
      case 1079: // Turtle Ascetic - Howl
        useSkill(6053, true);
        break;
      case 1080: // Phoenix Rush
        useSkill(6041, false);
        break;
      case 1081: // Phoenix Cleanse
        useSkill(6042, false);
        break;
      case 1082: // Phoenix Flame Feather
        useSkill(6043, false);
        break;
      case 1083: // Phoenix Flame Beak
        useSkill(6044, false);
        break;
      case 1084: // Switch State
        if (pet instanceof L2BabyPetInstance) {
          useSkill(SWITCH_STANCE_ID, true);
        }
        break;
      case 1086: // Panther Cancel
        useSkill(6094, false);
        break;
      case 1087: // Panther Dark Claw
        useSkill(6095, false);
        break;
      case 1088: // Panther Fatal Claw
        useSkill(6096, false);
        break;
      case 1089: // Deinonychus - Tail Strike
        useSkill(6199, true);
        break;
      case 1090: // Guardian's Strider - Strider Bite
        useSkill(6205, true);
        break;
      case 1091: // Guardian's Strider - Strider Fear
        useSkill(6206, true);
        break;
      case 1092: // Guardian's Strider - Strider Dash
        useSkill(6207, true);
        break;
      case 1093: // Maguen - Maguen Strike
        useSkill(6618, true);
        break;
      case 1094: // Maguen - Maguen Wind Walk
        useSkill(6681, true);
        break;
      case 1095: // Elite Maguen - Maguen Power Strike
        useSkill(6619, true);
        break;
      case 1096: // Elite Maguen - Elite Maguen Wind Walk
        useSkill(6682, true);
        break;
      case 1097: // Maguen - Maguen Return
        useSkill(6683, true);
        break;
      case 1098: // Elite Maguen - Maguen Party Return
        useSkill(6684, true);
        break;
      case 1099: // All servitor attack
        activeChar
            .getServitors()
            .values()
            .forEach(
                s -> {
                  if (validateSummon(s, false)) {
                    if (s.canAttack(_ctrlPressed)) {
                      s.doAttack();
                    }
                  }
                });
        break;
      case 1100: // All servitor move to
        activeChar
            .getServitors()
            .values()
            .forEach(
                s -> {
                  if (validateSummon(s, false)) {
                    if ((target != null) && (s != target) && !s.isMovementDisabled()) {
                      s.setFollowStatus(false);
                      s.getAI()
                          .setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, target.getLocation());
                    }
                  }
                });
        break;
      case 1101: // All servitor stop
        activeChar
            .getServitors()
            .values()
            .forEach(
                summon -> {
                  if (validateSummon(summon, false)) {
                    summon.cancelAction();
                  }
                });
        break;
      case 1102: // Unsummon all servitors
        boolean canUnsummon = true;
        OUT:
        for (L2Summon s : activeChar.getServitors().values()) {
          if (validateSummon(s, false)) {
            if (s.isAttackingNow() || s.isInCombat()) {
              sendPacket(
                  SystemMessageId.A_SERVITOR_WHOM_IS_ENGAGED_IN_BATTLE_CANNOT_BE_DE_ACTIVATED);
              canUnsummon = false;
              break OUT;
            }
            s.unSummon(activeChar);
          }
        }
        if (canUnsummon) {
          activeChar
              .getServitors()
              .values()
              .stream()
              .forEach(
                  s -> {
                    s.unSummon(activeChar);
                  });
        }
        break;
      case 1103: // seems to be passive mode
        break;
      case 1104: // seems to be defend mode
        break;
      case 1106: // Cute Bear - Bear Claw
        useServitorsSkill(11278);
        break;
      case 1107: // Cute Bear - Bear Tumbling
        useServitorsSkill(11279);
        break;
      case 1108: // Saber Tooth Cougar- Cougar Bite
        useServitorsSkill(11280);
        break;
      case 1109: // Saber Tooth Cougar - Cougar Pounce
        useServitorsSkill(11281);
        break;
      case 1110: // Grim Reaper - Reaper Touch
        useServitorsSkill(11282);
        break;
      case 1111: // Grim Reaper - Reaper Power
        useServitorsSkill(11283);
        break;
      case 1113: // Golden Lion - Lion Roar
        useSkill(10051, false);
        break;
      case 1114: // Golden Lion - Lion Claw
        useSkill(10052, false);
        break;
      case 1115: // Golden Lion - Lion Dash
        useSkill(10053, false);
        break;
      case 1116: // Golden Lion - Lion Flame
        useSkill(10054, false);
        break;
      case 1117: // Thunder Hawk - Thunder Flight
        useSkill(10794, false);
        break;
      case 1118: // Thunder Hawk - Thunder Purity
        useSkill(10795, false);
        break;
      case 1120: // Thunder Hawk - Thunder Feather Blast
        useSkill(10797, false);
        break;
      case 1121: // Thunder Hawk - Thunder Sharp Claw
        useSkill(10798, false);
        break;
      case 1122: // Tree of Life - Blessing of Tree
        useServitorsSkill(11806);
        break;
      case 1124: // Wynn Kai the Cat - Feline Aggression
        useServitorsSkill(11323);
        break;
      case 1125: // Wynn Kai the Cat - Feline Stun
        useServitorsSkill(11324);
        break;
      case 1126: // Wynn Feline King - Feline Bite
        useServitorsSkill(11325);
        break;
      case 1127: // Wynn Feline King - Feline Pounce
        useServitorsSkill(11326);
        break;
      case 1128: // Wynn Feline Queen - Feline Touch
        useServitorsSkill(11327);
        break;
      case 1129: // Wynn Feline Queen - Feline Power
        useServitorsSkill(11328);
        break;
      case 1130: // Wynn Merrow - Unicorn's Aggression
        useServitorsSkill(11332);
        break;
      case 1131: // Wynn Merrow - Unicorn's Stun
        useServitorsSkill(11333);
        break;
      case 1132: // Wynn Magnus - Unicorn's Bite
        useServitorsSkill(11334);
        break;
      case 1133: // Wynn Magnus - Unicorn's Pounce
        useServitorsSkill(11335);
        break;
      case 1134: // Wynn Seraphim - Unicorn's Touch
        useServitorsSkill(11336);
        break;
      case 1135: // Wynn Seraphim - Unicorn's Power
        useServitorsSkill(11337);
        break;
      case 1136: // Wynn Nightshade - Phantom Aggression
        useServitorsSkill(11341);
        break;
      case 1137: // Wynn Nightshade - Phantom Stun
        useServitorsSkill(11342);
        break;
      case 1138: // Wynn Spectral Lord - Phantom Bite
        useServitorsSkill(11343);
        break;
      case 1139: // Wynn Spectral Lord - Phantom Pounce
        useServitorsSkill(11344);
        break;
      case 1140: // Wynn Soulless - Phantom Touch
        useServitorsSkill(11345);
        break;
      case 1141: // Wynn Soulless - Phantom Power
        useServitorsSkill(11346);
        break;
      case 1142: // Blood Panther - Panther Roar
        useServitorsSkill(10087);
        break;
      case 1143: // Blood Panther - Panther Rush
        useServitorsSkill(10088);
        break;
      case 5000: // Baby Rudolph - Reindeer Scratch
        useSkill(23155, true);
        break;
      case 5001: // Deseloph, Hyum, Rekang, Lilias, Lapham, Mafum - Rosy Seduction
        useSkill(23167, true);
        break;
      case 5002: // Deseloph, Hyum, Rekang, Lilias, Lapham, Mafum - Critical Seduction
        useSkill(23168, true);
        break;
      case 5003: // Hyum, Lapham, Hyum, Lapham - Thunder Bolt
        useSkill(5749, true);
        break;
      case 5004: // Hyum, Lapham, Hyum, Lapham - Flash
        useSkill(5750, true);
        break;
      case 5005: // Hyum, Lapham, Hyum, Lapham - Lightning Wave
        useSkill(5751, true);
        break;
      case 5006: // Deseloph, Hyum, Rekang, Lilias, Lapham, Mafum, Deseloph, Hyum, Rekang, Lilias,
        // Lapham, Mafum - Buff Control
        useSkill(5771, true);
        break;
      case 5007: // Deseloph, Lilias, Deseloph, Lilias - Piercing Attack
        useSkill(6046, true);
        break;
      case 5008: // Deseloph, Lilias, Deseloph, Lilias - Spin Attack
        useSkill(6047, true);
        break;
      case 5009: // Deseloph, Lilias, Deseloph, Lilias - Smash
        useSkill(6048, true);
        break;
      case 5010: // Deseloph, Lilias, Deseloph, Lilias - Ignite
        useSkill(6049, true);
        break;
      case 5011: // Rekang, Mafum, Rekang, Mafum - Power Smash
        useSkill(6050, true);
        break;
      case 5012: // Rekang, Mafum, Rekang, Mafum - Energy Burst
        useSkill(6051, true);
        break;
      case 5013: // Rekang, Mafum, Rekang, Mafum - Shockwave
        useSkill(6052, true);
        break;
      case 5014: // Rekang, Mafum, Rekang, Mafum - Ignite
        useSkill(6053, true);
        break;
      case 5015: // Deseloph, Hyum, Rekang, Lilias, Lapham, Mafum, Deseloph, Hyum, Rekang, Lilias,
        // Lapham, Mafum - Switch Stance
        useSkill(6054, true);
        break;
        // Social Packets
      case 12: // Greeting
        tryBroadcastSocial(2);
        break;
      case 13: // Victory
        tryBroadcastSocial(3);
        break;
      case 14: // Advance
        tryBroadcastSocial(4);
        break;
      case 24: // Yes
        tryBroadcastSocial(6);
        break;
      case 25: // No
        tryBroadcastSocial(5);
        break;
      case 26: // Bow
        tryBroadcastSocial(7);
        break;
      case 29: // Unaware
        tryBroadcastSocial(8);
        break;
      case 30: // Social Waiting
        tryBroadcastSocial(9);
        break;
      case 31: // Laugh
        tryBroadcastSocial(10);
        break;
      case 33: // Applaud
        tryBroadcastSocial(11);
        break;
      case 34: // Dance
        tryBroadcastSocial(12);
        break;
      case 35: // Sorrow
        tryBroadcastSocial(13);
        break;
      case 62: // Charm
        tryBroadcastSocial(14);
        break;
      case 66: // Shyness
        tryBroadcastSocial(15);
        break;
      case 87: // Propose
        tryBroadcastSocial(28);
        break;
      case 88: // Provoke
        tryBroadcastSocial(29);
        break;
      case 89: // Beauty Shop
        tryBroadcastSocial(30);
        activeChar.broadcastInfo();
        break;
      default:
        _log.warning(activeChar.getName() + ": unhandled action type " + _actionId);
        break;
    }
  }
Esempio n. 7
0
  /**
   * Perform a couple social action.
   *
   * @param id the couple social action Id
   */
  private void useCoupleSocial(final int id) {
    final L2PcInstance requester = getActiveChar();
    if (requester == null) {
      return;
    }

    final L2Object target = requester.getTarget();
    if ((target == null) || !target.isPlayer()) {
      sendPacket(SystemMessageId.INVALID_TARGET);
      return;
    }

    final int distance = (int) requester.calculateDistance(target, false, false);
    if ((distance > 125) || (distance < 15) || (requester.getObjectId() == target.getObjectId())) {
      sendPacket(
          SystemMessageId
              .THE_REQUEST_CANNOT_BE_COMPLETED_BECAUSE_THE_TARGET_DOES_NOT_MEET_LOCATION_REQUIREMENTS);
      return;
    }

    SystemMessage sm;
    if (requester.isInStoreMode() || requester.isInCraftMode()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_IN_PRIVATE_STORE_MODE_OR_IN_A_BATTLE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isInCombat()
        || requester.isInDuel()
        || AttackStanceTaskManager.getInstance().hasAttackStanceTask(requester)) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_IN_A_BATTLE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isFishing()) {
      sendPacket(SystemMessageId.YOU_CANNOT_DO_THAT_WHILE_FISHING);
      return;
    }

    if (requester.getReputation() < 0) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_IN_A_CHAOTIC_STATE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isInOlympiadMode()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isInSiege()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_IN_A_CASTLE_SIEGE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isInHideoutSiege()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_PARTICIPATING_IN_A_CLAN_HALL_SIEGE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
    }

    if (requester.isMounted()
        || requester.isFlyingMounted()
        || requester.isInBoat()
        || requester.isInAirShip()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_RIDING_A_SHIP_STEED_OR_STRIDER_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isTransformed()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_CURRENTLY_TRANSFORMING_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    if (requester.isAlikeDead()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_CURRENTLY_DEAD_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(requester);
      sendPacket(sm);
      return;
    }

    // Checks for partner.
    final L2PcInstance partner = target.getActingPlayer();
    if (partner.isInStoreMode() || partner.isInCraftMode()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_IN_PRIVATE_STORE_MODE_OR_IN_A_BATTLE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isInCombat()
        || partner.isInDuel()
        || AttackStanceTaskManager.getInstance().hasAttackStanceTask(partner)) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_IN_A_BATTLE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.getMultiSociaAction() > 0) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_ALREADY_PARTICIPATING_IN_A_COUPLE_ACTION_AND_CANNOT_BE_REQUESTED_FOR_ANOTHER_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isFishing()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_FISHING_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.getReputation() < 0) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_IN_A_CHAOTIC_STATE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isInOlympiadMode()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_PARTICIPATING_IN_THE_OLYMPIAD_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isInHideoutSiege()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_PARTICIPATING_IN_A_CLAN_HALL_SIEGE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isInSiege()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_IN_A_CASTLE_SIEGE_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isMounted()
        || partner.isFlyingMounted()
        || partner.isInBoat()
        || partner.isInAirShip()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_RIDING_A_SHIP_STEED_OR_STRIDER_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isTeleporting()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_CURRENTLY_TELEPORTING_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isTransformed()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId
                  .C1_IS_CURRENTLY_TRANSFORMING_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (partner.isAlikeDead()) {
      sm =
          SystemMessage.getSystemMessage(
              SystemMessageId.C1_IS_CURRENTLY_DEAD_AND_CANNOT_BE_REQUESTED_FOR_A_COUPLE_ACTION);
      sm.addPcName(partner);
      sendPacket(sm);
      return;
    }

    if (requester.isAllSkillsDisabled() || partner.isAllSkillsDisabled()) {
      sendPacket(SystemMessageId.THE_COUPLE_ACTION_WAS_CANCELLED);
      return;
    }

    requester.setMultiSocialAction(id, partner.getObjectId());
    sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_HAVE_REQUESTED_A_COUPLE_ACTION_WITH_C1);
    sm.addPcName(partner);
    sendPacket(sm);

    if ((requester.getAI().getIntention() != CtrlIntention.AI_INTENTION_IDLE)
        || (partner.getAI().getIntention() != CtrlIntention.AI_INTENTION_IDLE)) {
      final NextAction nextAction =
          new NextAction(
              CtrlEvent.EVT_ARRIVED,
              CtrlIntention.AI_INTENTION_MOVE_TO,
              () -> partner.sendPacket(new ExAskCoupleAction(requester.getObjectId(), id)));
      requester.getAI().setNextAction(nextAction);
      return;
    }

    if (requester.isCastingNow() || requester.isCastingSimultaneouslyNow()) {
      final NextAction nextAction =
          new NextAction(
              CtrlEvent.EVT_FINISH_CASTING,
              CtrlIntention.AI_INTENTION_CAST,
              () -> partner.sendPacket(new ExAskCoupleAction(requester.getObjectId(), id)));
      requester.getAI().setNextAction(nextAction);
      return;
    }

    partner.sendPacket(new ExAskCoupleAction(requester.getObjectId(), id));
  }
Esempio n. 8
0
 /** Stops all players from attacking. Used for duel timeout / interrupt. */
 private void stopFighting() {
   ActionFailed af = ActionFailed.STATIC_PACKET;
   if (_partyDuel) {
     for (L2PcInstance temp : _playerA.getParty().getMembers()) {
       temp.abortCast();
       temp.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
       temp.setTarget(null);
       temp.sendPacket(af);
       if (temp.hasSummon()) {
         for (L2Summon summon : temp.getServitors().values()) {
           if (!summon.isDead()) {
             summon.abortCast();
             summon.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
             summon.setTarget(null);
             summon.sendPacket(af);
           }
         }
       }
     }
     for (L2PcInstance temp : _playerB.getParty().getMembers()) {
       temp.abortCast();
       temp.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
       temp.setTarget(null);
       temp.sendPacket(af);
       if (temp.hasSummon()) {
         for (L2Summon summon : temp.getServitors().values()) {
           if (!summon.isDead()) {
             summon.abortCast();
             summon.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
             summon.setTarget(null);
             summon.sendPacket(af);
           }
         }
       }
     }
   } else {
     _playerA.abortCast();
     _playerB.abortCast();
     _playerA.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
     _playerA.setTarget(null);
     _playerB.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
     _playerB.setTarget(null);
     _playerA.sendPacket(af);
     _playerB.sendPacket(af);
     if (_playerA.hasSummon()) {
       for (L2Summon summon : _playerA.getServitors().values()) {
         if (!summon.isDead()) {
           summon.abortCast();
           summon.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
           summon.setTarget(null);
           summon.sendPacket(af);
         }
       }
     }
     if (_playerB.hasSummon()) {
       for (L2Summon summon : _playerB.getServitors().values()) {
         if (!summon.isDead()) {
           summon.abortCast();
           summon.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
           summon.setTarget(null);
           summon.sendPacket(af);
         }
       }
     }
   }
 }
 protected static final void teleportPlayer(L2PcInstance player, int[] coords, int instanceId) {
   player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
   player.setInstanceId(instanceId);
   player.teleToLocation(coords[0], coords[1], coords[2], true);
 }