示例#1
0
  /**
   * Method used to load all the quests
   *
   * @param file the path to the file that has all the quests
   */
  public void loadQuest(String file) {

    // load the file
    Element loader =
        FactoryManager.getFactoryManager().getScriptManager().getReadScript().getRootElement(file);

    // create all the quests

    // get the children to a list
    List list = loader.getChildren();

    // create the iterator to access the list
    Iterator i = list.iterator();

    // temporary element used to get the elements
    Element temp;

    // get the elements from the list
    while (i.hasNext()) {
      // get the first object
      temp = (Element) i.next();
      // create a quest
      createQuest(temp);
    }
  }
示例#2
0
  public boolean hasRequisites(Quest quest) {

    // test if has the necessary level
    if (quest.getLevelDependencie() != -1) {
      if (!RPGSystem.getRPGSystem().getPlayerGroup().hasLevelNeeded(quest.getLevelDependencie())) {
        return false;
      }
    }

    // test if has the necessary quest needed
    if (quest.getQuestDependencies() != null) {
      for (int i = 0; i < quest.getQuestDependencies().length; i++) {
        // test if all quests are completed
        if (quests.get(quest.getQuestDependencies()[i]) != null
            && quests.get(quest.getQuestDependencies()[i]).getState() != 'F') {
          return false;
        }
      }
    }

    // test if has the necessary item needed
    if (quest.getItemDependencies() != null) {
      // temporary objects
      int i = 0;
      int sum = 0;

      while (i < quest.getItemDependencies().length) {
        System.out.println(quest.getItemDependencies()[i]);
        // if there´s the possibility of finding in the characters belongings
        if (FactoryManager.getFactoryManager().getRulesManager().getRulesSet().isCharacterBag()) {
          // there are characters bags

          // must search in all of the characters bags and sum up the amount
          for (int p = 0;
              p < RPGSystem.getRPGSystem().getPlayerGroup().getCharacter().length;
              p++) {

            // must test all the characters
            if (RPGSystem.getRPGSystem()
                    .getPlayerGroup()
                    .getCharacter(p)
                    .getBag()
                    .getItemEntry(quest.getItemDependencies()[i])
                != null) {

              // has the item, then put together to make the test
              sum =
                  sum
                      + RPGSystem.getRPGSystem()
                          .getPlayerGroup()
                          .getCharacter(p)
                          .getBag()
                          .getItemEntry(quest.getItemDependencies()[i])
                          .getQtd();
            }
          }
        }

        // if exists a bag for the group
        if (FactoryManager.getFactoryManager().getRulesManager().getRulesSet().isGroupBag()) {
          // there is a bag for the group

          // test the quantity
          if (RPGSystem.getRPGSystem()
                  .getPlayerGroup()
                  .getBag()
                  .getItemEntry(quest.getItemDependencies()[i])
              != null) {
            System.out.println("Found the item");
            // put together the item
            sum =
                sum
                    + RPGSystem.getRPGSystem()
                        .getPlayerGroup()
                        .getBag()
                        .getItemEntry(quest.getItemDependencies()[i])
                        .getQtd();
          }
        }

        // test the quantity
        if (sum < quest.getItemDependenciesQuantity()[i]) {
          return false;
        } else {
          i++;
        }
      }
    }

    // all the requisites are OK
    return true;
  }
示例#3
0
  /**
   * Method used to check if a quest was completed
   *
   * @param quest the quest in question
   */
  public void checkQuest(Quest quest) {

    // to test if the quest was completed
    boolean complete = true;

    // test if the quest exists and is active
    if (quest != null && quest.getState() == 'A') {

      // if has monster to kill
      if (quest.getMonsterKill() != null) {
        // if the quantity is equal to zero then don´t need to kill anymore

        // temporary
        int i = 0;

        // loop to know if every monster needed to kill was killed
        while (complete == true && i < quest.getMonsterKilled().length) {
          // test the quantity
          if (quest.getMonsterKilled()[i] == 0) {
            // was killed goes to next
            i++;
          } else {
            // there´s some left
            complete = false;
          }
        }
      }

      // if an item has been found
      if (quest.getGetItem() != null) {
        // test if the quantity that the player has in the bag is the quantity needed

        // must find where to search, characters and/or group

        // one search for the characters belongings and another for the group

        // temporary
        int i = 0;

        // used to put together the quantity between characters and the bag
        int sum = 0;

        // loop to test the quantity of all itens needed
        while (complete == true && i < quest.getGetItem().length) {
          // search the player or the group bag, if player must search all bags
          // System.out.println(quest.getGetItem()[i]);
          // test the quantity
          sum = 0;

          // if there´s the possibility of finding in the characters belongings
          if (FactoryManager.getFactoryManager().getRulesManager().getRulesSet().isCharacterBag()) {
            // there are characters bags

            // must search in all of the characters bags and sum up the amount
            for (int p = 0;
                p < RPGSystem.getRPGSystem().getPlayerGroup().getCharacter().length;
                p++) {

              // must test all the characters
              if (RPGSystem.getRPGSystem()
                      .getPlayerGroup()
                      .getCharacter(p)
                      .getBag()
                      .getItemEntry(quest.getGetItem()[i])
                  != null) {

                // has the item, then put together to make the test
                sum =
                    sum
                        + RPGSystem.getRPGSystem()
                            .getPlayerGroup()
                            .getCharacter(p)
                            .getBag()
                            .getItemEntry(quest.getGetItem()[i])
                            .getQtd();
              }
            }
          }

          // if exists a bag for the group
          if (FactoryManager.getFactoryManager().getRulesManager().getRulesSet().isGroupBag()) {
            // there is a bag for the group

            // test the quantity
            if (RPGSystem.getRPGSystem()
                    .getPlayerGroup()
                    .getBag()
                    .getItemEntry(quest.getGetItem()[i])
                != null) {

              // put together the item
              sum =
                  sum
                      + RPGSystem.getRPGSystem()
                          .getPlayerGroup()
                          .getBag()
                          .getItemEntry(quest.getGetItem()[i])
                          .getQtd();
            }
          }

          // test the quantity
          if (sum <= quest.getNumberItemGot()[i]) {
            complete = false;

          } else {
            i++;
          }
        }
      }

      // if has money to get
      if (quest.getMoneyNeeded() != -1) {
        // the money is with the player group

        // test the quantity needed
        if (RPGSystem.getRPGSystem().getPlayerGroup().getMoneyValue() < quest.getMoneyNeeded()) {
          complete = false;
        }
      }

      // if talked with everyone needed to
      if (quest.getNPCTalk() != null) {

        // test if all the NPC needed to talk were found

        // temporary
        int i = 0;

        // loop to test if they were all found
        while (complete == true && i < quest.getNPCTalk().length) {
          // test
          if (quest.getNPCTalked()[i]) {
            // was talked
            i++;
          } else {
            // one is missing
            complete = false;
          }
        }
      }
    } else {
      complete = false;
    }

    // teste if the quest has been completed
    if (quest != null && complete) {
      // was completed
      quest.setState('C');
    }
  }
示例#4
0
  /**
   * Method used to remove what was asked at a quest
   *
   * @param quest an object of the class Quest
   */
  public void removeQuestNeeds(Quest quest) {

    // remove the money from the group, if has money to remove
    if (quest.getMoneyNeeded() != -1) {
      // remove it
      RPGSystem.getRPGSystem().getPlayerGroup().setMoneyValue(-quest.getMoneyNeeded());
    }

    // if has itens to remove
    if (quest.getGetItem() != null) {

      // the quantity to remove
      int sum;

      // must remove all the itens needed
      for (int i = 0; i < quest.getGetItem().length; i++) {

        // receive the quantity that needs to remove
        sum = quest.getNumberItemGot()[i];

        // remove the itens, first try to remove from the bag and then from the characters
        // if exists a bag for the group
        if (FactoryManager.getFactoryManager().getRulesManager().getRulesSet().isGroupBag()) {
          // there is a bag for the group

          // test the quantity
          if (RPGSystem.getRPGSystem().getPlayerGroup().getBag().getItemEntry(quest.getGetItem()[i])
              != null) {

            // remove the quantity
            if (RPGSystem.getRPGSystem()
                    .getPlayerGroup()
                    .getBag()
                    .getItemEntry(quest.getGetItem()[i])
                    .getQtd()
                >= sum) {
              // remove the quantity needed
              RPGSystem.getRPGSystem()
                  .getPlayerGroup()
                  .getBag()
                  .removeItem(quest.getGetItem()[i], sum);
              // removed all the quantity needed
              sum = 0;
            } else {
              // remove from the sum the quantity
              sum =
                  sum
                      - RPGSystem.getRPGSystem()
                          .getPlayerGroup()
                          .getBag()
                          .getItemEntry(quest.getGetItem()[i])
                          .getQtd();
              // remove the quantity that has
              RPGSystem.getRPGSystem()
                  .getPlayerGroup()
                  .getBag()
                  .removeItem(
                      quest.getGetItem()[i],
                      RPGSystem.getRPGSystem()
                          .getPlayerGroup()
                          .getBag()
                          .getItemEntry(quest.getGetItem()[i])
                          .getQtd());
            }
          }
        }

        // if there´s the possibility of finding in the characters belongings
        if (FactoryManager.getFactoryManager().getRulesManager().getRulesSet().isCharacterBag()
            && sum > 0) {
          // there are characters bags

          // must search in all of the characters bags and sum up the amount
          for (int p = 0;
              p < RPGSystem.getRPGSystem().getPlayerGroup().getCharacter().length;
              p++) {

            // must test all the characters
            if (RPGSystem.getRPGSystem()
                    .getPlayerGroup()
                    .getCharacter(p)
                    .getBag()
                    .getItemEntry(quest.getGetItem()[i])
                != null) {

              // remove the quantity according to how much can remove
              if (RPGSystem.getRPGSystem()
                      .getPlayerGroup()
                      .getCharacter(p)
                      .getBag()
                      .getItemEntry(quest.getGetItem()[i])
                      .getQtd()
                  >= sum) {
                // remove the quantity needed
                RPGSystem.getRPGSystem()
                    .getPlayerGroup()
                    .getCharacter(p)
                    .getBag()
                    .removeItem(quest.getGetItem()[i], sum);
                // removed all the quantity needed
                sum = 0;
              } else {
                // remove from the sum the quantity
                sum =
                    sum
                        - RPGSystem.getRPGSystem()
                            .getPlayerGroup()
                            .getCharacter(p)
                            .getBag()
                            .getItemEntry(quest.getGetItem()[i])
                            .getQtd();
                // remove the quantity that has
                RPGSystem.getRPGSystem()
                    .getPlayerGroup()
                    .getCharacter(p)
                    .getBag()
                    .removeItem(
                        quest.getGetItem()[i],
                        RPGSystem.getRPGSystem()
                            .getPlayerGroup()
                            .getCharacter(p)
                            .getBag()
                            .getItemEntry(quest.getGetItem()[i])
                            .getQtd());
              }
            }
          }
        }
      }
    }
  }