Package games.stendhal.server.entity.npc

Examples of games.stendhal.server.entity.npc.SpeakerNPC


  public void prepareQuestStep() {

    /*
     * get a reference to the Ouchit NPC
     */
    SpeakerNPC npc = npcs.get("Ouchit");

    /*
     * Add a reply on the trigger phrase "quest" to Ouchit
     */
    npc.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.QUESTION_1,
        "Are you here to help me a bit?",
        null);

    /*
     * Player is interested in helping, so explain the quest.
     */
    npc.add(ConversationStates.QUESTION_1,
        ConversationPhrases.YES_MESSAGES,
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.QUEST_OFFERED,
        "Good! I sell bows and arrows. It would be great if you could " +
        "bring me 10 pieces of #wood. Can you bring me the wood?",
        null);

    /*
     * Player refused to help - end the conversation.
     */
    npc.add(ConversationStates.QUESTION_1,
        ConversationPhrases.NO_MESSAGES,
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.IDLE,
        "Oh ok, bye.",
        null);

    /*
     * Player agreed to get wood, so tell them what they'll need to say
     */
    npc.add(ConversationStates.QUEST_OFFERED,
        ConversationPhrases.YES_MESSAGES,
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.ATTENDING,
        "Nice :-) Come back when you have them and say #wood.",
        new SetQuestAndModifyKarmaAction(QUEST_SLOT, "wood", 2.0));

    /*
     * Player asks about wood.
     */
    npc.add(ConversationStates.QUEST_OFFERED,
        "wood",
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.QUEST_OFFERED,
        "Wood is a great item with many purposes. Of course you will " +
        "find some pieces in a forest. Will you bring me 10 pieces?",
        null);

    /*
     * Player refused to help - end the conversation.
     */
    npc.add(ConversationStates.QUEST_OFFERED,
        ConversationPhrases.NO_MESSAGES,
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.IDLE,
        "Ok, you can come back later if you want. Bye for now.",
        null);
View Full Code Here


  public void bringWoodStep() {

    /*
     * get a reference to the Ouchit NPC
     */
    SpeakerNPC npc = npcs.get("Ouchit");
   
    /*
     * Player asks about quest, remind what they're doing
     */
    npc.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestInStateCondition(QUEST_SLOT,"wood"),
        ConversationStates.ATTENDING,
        "I'm waiting for you to bring me 10 pieces of #wood.",
        null);
   
    /*
     * Player asks about wood, but hasn't collected any - remind them.
     */
    npc.add(ConversationStates.ATTENDING,
        "wood",
        new AndCondition(new QuestInStateCondition(QUEST_SLOT,"wood"),
                 new NotCondition (new PlayerHasItemWithHimCondition("wood",10))),
        ConversationStates.ATTENDING,
        "Wood is a great item with many purposes. Of course you will " +
        "find some pieces in a forest. Please remember to come back when you " +
        "have ten pieces for me, and say #wood.",
        null);

    /*
     * Player asks about wood, and has collected some - take it and
ask for horse hair.
     */
    npc.add(ConversationStates.ATTENDING,
        "wood",
        new AndCondition(new QuestInStateCondition(QUEST_SLOT,"wood"),
                new PlayerHasItemWithHimCondition("wood",10)),
        ConversationStates.ATTENDING,
        "Great, now I can make new arrows. But for the bows I need " +
        "bowstrings. Please go to #Karl. I know he has horses and if " +
        "you tell him my name he will give you  #'horse hairs' from a horsetail.",
        new MultipleActions(new SetQuestAndModifyKarmaAction(QUEST_SLOT, "hair", 2.0), new DropItemAction("wood", 10)));

    /*
     * For simplicity, respond to 'Karl' at any time.
     */
    npc.addReply("Karl", "Karl is a farmer, east of Semos. He has many pets on his farm.");
  }
View Full Code Here

  public void getHairStep() {

    /*
     * get a reference to the Karl NPC
     */
    SpeakerNPC npc = npcs.get("Karl");

    npc.add(ConversationStates.ATTENDING,
        "Ouchit",
        new AndCondition(new QuestInStateCondition(QUEST_SLOT,"hair"),
                new NotCondition (new PlayerHasItemWithHimCondition("horse hair",1))),
        ConversationStates.ATTENDING,
        "Hello, hello! Ouchit needs more horse hairs from my horses? " +
View Full Code Here

  public void bringHairStep() {

    /*
     * get a reference to the Ouchit NPC
     */
    SpeakerNPC npc = npcs.get("Ouchit");

    /*
     * Player asks about quest, remind what they're doing
     */
    npc.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestInStateCondition(QUEST_SLOT,"hair"),
        ConversationStates.ATTENDING,
        "I'm waiting for you to bring me some #'horse hairs'.",
        null);
   
    /*
     * Player asks about horse hair, but hasn't collected any - remind them.
     */
    npc.add(ConversationStates.ATTENDING,
        Arrays.asList("hair", "horse", "horse hairs"),
        new AndCondition(new QuestInStateCondition(QUEST_SLOT,"hair"),
                new NotCondition (new PlayerHasItemWithHimCondition("horse hair"))),
        ConversationStates.ATTENDING,
        "Horse hairs can be used as a bowstring. Please fetch me some from #Karl.",
        null);

    /*
     * These actions are part of the reward
     */
    final List<ChatAction> reward = new LinkedList<ChatAction>();
    reward.add(new EquipItemAction("scale armor", 1, true));
    reward.add(new EquipItemAction("chain legs", 1, true));
    reward.add(new IncreaseXPAction(100));
    reward.add(new DropItemAction("horse hair"));
    reward.add(new SetQuestAndModifyKarmaAction(QUEST_SLOT, "done", 10.0));
   
    /*
     * Player asks about horse hair, and has collected some - take it
and ask for horse hair.
     */
    npc.add(ConversationStates.ATTENDING,
        Arrays.asList("hair", "horse", "horse hairs"),
        new AndCondition(new QuestInStateCondition(QUEST_SLOT,"hair"),
                new PlayerHasItemWithHimCondition("horse hair")),
        ConversationStates.ATTENDING,
        "Yay, you got the horse hairs. Thanks a lot. Karl is really nice. Here, " +
        "take this for your work. Someone left it here and I don't need those things.",
        new MultipleActions(reward));
   
    /*
     * Player asks about quest, and it is finished
     */
    npc.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestCompletedCondition(QUEST_SLOT),
        ConversationStates.ATTENDING,
        "Thanks for your help. If I can #offer you anything just ask.",
        null);
View Full Code Here

    }
    return res;
  }

  private void createRequestingStep() {
    final SpeakerNPC zara = npcs.get("Zara");

    zara.add(ConversationStates.ATTENDING,
      ConversationPhrases.QUEST_MESSAGES,
      new QuestCompletedCondition(QUEST_SLOT),
      ConversationStates.ATTENDING,
      "I don't have a new task for you. But thank you for the suntan cream. I feel my skin is getting better already!",
      null);
   
    zara.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestInStateCondition(QUEST_SLOT, "rejected"),
        ConversationStates.QUEST_OFFERED,
        "You refused to help me last time and my skin is getting worse. "
        + "Please can you bring me the magic #'suntan cream' that the #lifeguards produce?",
        null);
   
    zara.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestActiveCondition(QUEST_SLOT),
        ConversationStates.ATTENDING,
        "Did you forget that you promised me to ask the #lifeguards for #'suntan cream'?",
        null);
   
    zara.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new AndCondition(new QuestNotStartedCondition(QUEST_SLOT), new QuestNotInStateCondition(QUEST_SLOT, "rejected")),
        ConversationStates.QUEST_OFFERED,
        "I fell asleep in the sun and now my skin is burnt. Can you bring me the magic #'suntan cream' that the #lifeguards produce?",
        null);
   
    zara.add(ConversationStates.QUEST_OFFERED,
      ConversationPhrases.YES_MESSAGES, null,
      ConversationStates.ATTENDING,
      "Thank you very much. I'll be waiting here for your return!",
      new SetQuestAndModifyKarmaAction(QUEST_SLOT, "start", 5.0));

    zara.add(ConversationStates.QUEST_OFFERED,
      ConversationPhrases.NO_MESSAGES, null,
      ConversationStates.ATTENDING,
      "Ok, but I would have had a nice reward for you...",
      new SetQuestAndModifyKarmaAction(QUEST_SLOT, "rejected", -5.0));

    zara.add(
      ConversationStates.QUEST_OFFERED,
      Arrays.asList("suntan cream", "suntan", "cream"),
      null,
      ConversationStates.QUEST_OFFERED,
      "The #lifeguards make a great cream to protect from the sun and to heal sunburns at the same time. Now, will you get it for me?",
      null);

    zara.add(
      ConversationStates.QUEST_OFFERED,
      "lifeguard",
      null,
      ConversationStates.QUEST_OFFERED,
      "The lifeguards are called Pam and David. I think they are in the dressing rooms. So, will you ask them for me?",
      null);

    zara.addReply(
      Arrays.asList("suntan cream", "suntan", "cream"),
      "The #lifeguards make a great cream to protect from the sun and to heal sunburns at the same time.");

    zara.addReply(
      "lifeguard",
      "The lifeguards are called Pam and David. I think they are in the dressing rooms.");

  }
View Full Code Here

      "The lifeguards are called Pam and David. I think they are in the dressing rooms.");

  }

  private void createBringingStep() {
    final SpeakerNPC zara = npcs.get("Zara");

    zara.add(ConversationStates.IDLE,
      ConversationPhrases.GREETING_MESSAGES,
      new AndCondition(new GreetingMatchesNameCondition(zara.getName()),
          new QuestInStateCondition(QUEST_SLOT, "start"),
          new PlayerHasItemWithHimCondition("suntan cream")),
      ConversationStates.QUEST_ITEM_BROUGHT,
      "Great! You got the suntan cream! Is it for me?",
      null);
   
    zara.add(ConversationStates.IDLE,
        ConversationPhrases.GREETING_MESSAGES,
        new AndCondition(new GreetingMatchesNameCondition(zara.getName()),
            new QuestInStateCondition(QUEST_SLOT, "start"),
            new NotCondition(new PlayerHasItemWithHimCondition("suntan cream"))),
        ConversationStates.ATTENDING,
        "I know that the #'suntan cream' is hard to get, but I hope that you didn't forget my painful problem...",
        null);

    final List<ChatAction> reward = new LinkedList<ChatAction>();
    reward.add(new DropItemAction("suntan cream"));
    reward.add(new EquipItemAction("small key", 1, true));
    reward.add(new IncreaseXPAction(1000));
    reward.add(new SetQuestAction(QUEST_SLOT, "done"));
    reward.add(new IncreaseKarmaAction(15));
   
    zara.add(
      ConversationStates.QUEST_ITEM_BROUGHT,
      ConversationPhrases.YES_MESSAGES,
      // make sure the player isn't cheating by putting the
      // cream away and then saying "yes"
      new PlayerHasItemWithHimCondition("suntan cream"),
      ConversationStates.ATTENDING,
      "Thank you! I feel much better immediately! Here, take this key to my row house in Ados. Feel at home as long as I'm still here!",
      new MultipleActions(reward));

    zara.add(ConversationStates.QUEST_ITEM_BROUGHT,
      ConversationPhrases.NO_MESSAGES, null,
      ConversationStates.ATTENDING,
      "No? Look at me! I cannot believe that you're so selfish!",
      null);
  }
View Full Code Here

  /**
   * We add text for NPC Henry who will get us on the quest.
   */
  private void prepareCowardSoldier() {
    final SpeakerNPC henry = npcs.get("Henry");

    henry.add(ConversationStates.ATTENDING,
      ConversationPhrases.QUEST_MESSAGES,
      new AndCondition(new QuestNotCompletedCondition(QUEST_SLOT),
               new QuestNotInStateCondition(QUEST_SLOT,"map")),
      ConversationStates.QUEST_OFFERED,
      "Find my #group, Peter, Tom, and Charles, prove it and I will reward you. Will you do it?",
      null);
   
    henry.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new OrCondition(new QuestCompletedCondition(QUEST_SLOT),
                 new QuestInStateCondition(QUEST_SLOT,"map")),
        ConversationStates.ATTENDING,
        "I'm so sad that most of my friends are dead.",
        null);
   
    henry.add(ConversationStates.QUEST_OFFERED,
      ConversationPhrases.YES_MESSAGES, null,
      ConversationStates.ATTENDING,
      "Thank you! I'll be waiting for your return.",
      new SetQuestAndModifyKarmaAction(QUEST_SLOT, "start", 5.0));

    henry.add(
      ConversationStates.QUEST_OFFERED,
      "group",
      null,
      ConversationStates.QUEST_OFFERED,
      "The General sent five of us to explore this area in search for #treasure. So, will you help me find them?",
      null);

        henry.add(
        ConversationStates.QUEST_OFFERED,
        "treasure",
        null,
        ConversationStates.QUEST_OFFERED,
        "A big treasure is rumored to be #somewhere in this dungeon. Will you help me find my group?",
        null);

    henry.add(ConversationStates.QUEST_OFFERED,
        ConversationPhrases.NO_MESSAGES, null,
        ConversationStates.ATTENDING,
        "OK. I understand. I'm scared of the #dwarves myself.",
        new SetQuestAndModifyKarmaAction(QUEST_SLOT, "rejected", -5.0));
   
    final List<ChatAction> actions = new LinkedList<ChatAction>();
    actions.add(new IncreaseXPAction(2500));
    actions.add(new DropInfostringItemAction("leather legs","tom"));
    actions.add(new DropInfostringItemAction("scale armor","peter"));
    actions.add(new IncreaseKarmaAction(15.0))
    actions.add(new GiveMapAction(false));
   
    henry.add(ConversationStates.IDLE,
        ConversationPhrases.GREETING_MESSAGES,
        new AndCondition(new GreetingMatchesNameCondition(henry.getName()),
            new QuestInStateCondition(QUEST_SLOT, "start"),
            new PlayerHasInfostringItemWithHimCondition("leather legs", "tom"),
            new PlayerHasInfostringItemWithHimCondition("note", "charles"),
            new PlayerHasInfostringItemWithHimCondition("scale armor", "peter")),
        ConversationStates.ATTENDING,
        "Oh my! Peter, Tom, and Charles are all dead? *cries*. Anyway, here is your reward. And keep the IOU.",
        new MultipleActions(actions));

    henry.add(ConversationStates.IDLE,
        ConversationPhrases.GREETING_MESSAGES,
        new AndCondition(new GreetingMatchesNameCondition(henry.getName()),
            new QuestInStateCondition(QUEST_SLOT, "start"),
            new NotCondition(
                new AndCondition(
                    new PlayerHasInfostringItemWithHimCondition("leather legs", "tom"),
                    new PlayerHasInfostringItemWithHimCondition("note", "charles"),
                    new PlayerHasInfostringItemWithHimCondition("scale armor", "peter")))),
        ConversationStates.ATTENDING,
        "You didn't prove that you have found them all!",
        null);

    henry.add(ConversationStates.ATTENDING, Arrays.asList("map", "group", "help"),
        new OrCondition(
          new  QuestCompletedCondition(QUEST_SLOT),
          new AndCondition(new HenryQuestCompletedCondition(),
          new PlayerOwnsItemIncludingBankCondition("map"))),
        ConversationStates.ATTENDING,
        "I'm so sad that most of my friends are dead.", null);

    henry.add(ConversationStates.ATTENDING, Arrays.asList("map"),
        new AndCondition(
          new  QuestNotCompletedCondition(QUEST_SLOT),
          new HenryQuestCompletedCondition(),
          new NotCondition(new PlayerOwnsItemIncludingBankCondition("map"))),
        ConversationStates.ATTENDING,
        "Luckily I drew a copy of the map, but please don't lose this one.",
        new GiveMapAction(true));

    henry.add(ConversationStates.ATTENDING, Arrays.asList("map"),
        new HenryQuestNotCompletedCondition(),
        ConversationStates.ATTENDING,
        "If you find my friends, I will give you the map.", null);
  }
View Full Code Here

  /**
   * add James.
   */
  private void prepareSergeant() {
    final SpeakerNPC james = npcs.get("Sergeant James");

    // quest related stuff
    james.addHelp("Think I need a little help myself. My #group got killed and #one of my men ran away. Too bad he had the #map.");
    james.addQuest("Find my fugitive soldier and bring him to me ... or at least the #map he's carrying.");
    james.addReply("group",
      "We were five, three of us died. You probably passed their corpses.");
    james.addReply(Arrays.asList("one", "henry"),
      "Yes, my youngest soldier. He ran away.");
    james.addReply("map",
      "The #treasure map that leads into the heart of the #dwarven #kingdom.");
    james.addReply("treasure",
      "A big treasure is rumored to be somewhere in this dungeon.");
    james.addReply(Arrays.asList("dwarf", "dwarves", "dwarven", "dwarven kingdom"),
      "They are strong enemies! We're in their #kingdom.");
    james.addReply(Arrays.asList("peter", "tom", "charles"),
      "He was a good soldier and fought bravely.");
    james.addReply(Arrays.asList("kingdom", "kanmararn"),
      "Kanmararn, the legendary kingdom of the #dwarves.");

    final List<ChatAction> actions = new LinkedList<ChatAction>();
    actions.add(new IncreaseXPAction(5000));
    actions.add(new DropInfostringItemAction("map","Henry"));
    actions.add(new SetQuestAndModifyKarmaAction(QUEST_SLOT, "done", 15.0))
    actions.add(new EquipItemAction("steel boots", 1, true));
   
    james.add(ConversationStates.ATTENDING,
        Arrays.asList("map", "henry"),
        new AndCondition(new QuestInStateCondition(QUEST_SLOT, "map"),
                new PlayerHasInfostringItemWithHimCondition("map", "henry")),
        ConversationStates.ATTENDING,
        "The map! Wonderful! Thank you. And here is your reward.",
        new MultipleActions(actions));
   
    james.add(ConversationStates.ATTENDING,
        Arrays.asList("map", "henry"),
        new AndCondition(new QuestInStateCondition(QUEST_SLOT, "map"),
                new NotCondition(new PlayerHasInfostringItemWithHimCondition("map", "henry"))),
        ConversationStates.ATTENDING,
        "Well, where is the map?",
        null);
   
    james.add(ConversationStates.ATTENDING, ConversationPhrases.QUEST_MESSAGES,
        new QuestCompletedCondition(QUEST_SLOT),
        ConversationStates.ATTENDING,
        "Thanks again for bringing me the map!", null);
   
    james.add(ConversationStates.ATTENDING, ConversationPhrases.HELP_MESSAGES,
        new QuestCompletedCondition(QUEST_SLOT),
        ConversationStates.ATTENDING,
        "Thanks again for bringing me the map!", null);
   
    james.add(ConversationStates.ATTENDING, Arrays.asList("map", "henry",
       "group", "one"),
      new QuestCompletedCondition(QUEST_SLOT),
      ConversationStates.ATTENDING,
      "Thanks again for bringing me the map!", null);
  }
View Full Code Here

  private static final int REQUIRED_MINUTES = 60;
  private static final List<String> triggers = Arrays.asList("drink", "pina colada", "cocktail", "cheers", "pina");


  private void offerQuestStep() {
    final SpeakerNPC npc = npcs.get("Princess Esclara");
npc.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES,
        new QuestNotStartedCondition(QUEST_SLOT),
        ConversationStates.QUEST_OFFERED,
        "I'm looking for a drink, should be an exotic one. Can you bring me one?",
        null);
npc.add(ConversationStates.ATTENDING,
    ConversationPhrases.QUEST_MESSAGES,
    new QuestCompletedCondition(QUEST_SLOT),
    ConversationStates.ATTENDING,
    "I'm drunken now thank you!",
    null);

npc.add(ConversationStates.ATTENDING,
    ConversationPhrases.QUEST_MESSAGES,
    new AndCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES), new QuestStateStartsWithCondition(QUEST_SLOT, "drinking;")),
    ConversationStates.QUEST_OFFERED,
    "The last cocktail you brought me was so lovely. Will you bring me another?",
    null);

npc.add(ConversationStates.ATTENDING,
    ConversationPhrases.QUEST_MESSAGES,
    new AndCondition(new NotCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES)), new QuestStateStartsWithCondition(QUEST_SLOT, "drinking;")),
    ConversationStates.ATTENDING,
    null,
    new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES, "I'm sure I'll be too drunk to have another for at least "));
   
    npc.add(ConversationStates.ATTENDING,
        ConversationPhrases.QUEST_MESSAGES, null,
        ConversationStates.ATTENDING,
        "I like these exotic drinks, I forget the name of my favourite one.",
        null);

// Player agrees to get the drink
    npc.add(ConversationStates.QUEST_OFFERED,
        ConversationPhrases.YES_MESSAGES, null,
        ConversationStates.ATTENDING,
        "Thank you! If you have found some, say #drink to me so I know you have it. I'll be sure to give you a nice reward.",
        new SetQuestAndModifyKarmaAction(QUEST_SLOT, "start", 10.0));

    // Player says no, they've lost karma.
    npc.add(ConversationStates.QUEST_OFFERED,
        ConversationPhrases.NO_MESSAGES, null, ConversationStates.IDLE,
        "Oh, never mind. Bye then.",
        new SetQuestAndModifyKarmaAction(QUEST_SLOT, "rejected", -10.0));
  }
View Full Code Here

   * Get Drink Step :
   * src/games/stendhal/server/maps/athor/cocktail_bar/BarmanNPC.java he
   * serves drinks to all, not just those with the quest
   */
  private void bringCocktailStep() {
    final SpeakerNPC npc = npcs.get("Princess Esclara");
    npc.add(
      ConversationStates.ATTENDING, triggers,
      new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new PlayerHasItemWithHimCondition("pina colada")),
      ConversationStates.ATTENDING,
      null,
      new MultipleActions(
            new DropItemAction("pina colada"),
            new ChatAction() {
              public void fire(final Player player,
                  final Sentence sentence,
                  final EventRaiser npc) {
                int pieAmount = Rand.roll1D6() + 1;
                new EquipItemAction("fish pie", pieAmount, true).fire(player, sentence, npc);
                npc.say("Thank you!! Take " +
                    Grammar.thisthese(pieAmount) + " " +
                    Grammar.quantityplnoun(pieAmount, "fish pie", "") +
                    " from my cook, and this kiss, from me.");
                new SetQuestAndModifyKarmaAction(getSlotName(), "drinking;"
                                 + System.currentTimeMillis(), 15.0).fire(player, sentence, npc);
              }
            }));

    npc.add(
      ConversationStates.ATTENDING, triggers,
      new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new NotCondition(new PlayerHasItemWithHimCondition("pina colada"))),
      ConversationStates.ATTENDING,
      "You don't have any drink I like yet. Go, and you better get an exotic one!",
      null);

    npc.add(
      ConversationStates.ATTENDING, triggers,
      new QuestNotInStateCondition(QUEST_SLOT, "start"),
      ConversationStates.ATTENDING,
      "Sometime you could do me a #favour ...", null);

View Full Code Here

TOP

Related Classes of games.stendhal.server.entity.npc.SpeakerNPC

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.