public static void runSkill(L1Character cha) {

    L1PcInstance pc = (L1PcInstance) cha;
    int attr = pc.getElfAttr();
    if (attr != 0) {
      if (pc.getMap().isRecallPets() || pc.isGm()) {
        int petcost = 0;
        Object[] petlist = pc.getPetList().values().toArray();
        for (Object pet : petlist) {
          petcost += ((L1NpcInstance) pet).getPetcost();
        }

        if (petcost == 0) {
          int summonid = 0;
          int summons[];
          summons = new int[] {45306, 45303, 45304, 45305};
          int npcattr = 1;
          for (int i = 0; i < summons.length; i++) {
            if (npcattr == attr) {
              summonid = summons[i];
              i = summons.length;
            }
            npcattr *= 2;
          }
          if (summonid == 0) {
            Random random = new Random();
            int k3 = random.nextInt(4);
            summonid = summons[k3];
          }

          L1Npc npcTemp = NpcTable.getInstance().getTemplate(summonid);
          L1SummonInstance summon = new L1SummonInstance(npcTemp, pc);
          summon.setPetcost(pc.getAbility().getTotalCha() + 7);
        }
      } else {
        pc.sendPackets(new S_ServerMessage(79));
      }
    }
  }