Stendhal Quest Coding: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>Hendrik Brummermann
moved inprogress-pointer to old version from this page to the second part
imported>Kribbel
m replace old link
 
(130 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{Navigation for Stendhal Top}}
{{Navigation for Stendhal Top|Contributing}}
{{Navigation for Stendhal Contributors}}
{{Navigation for Stendhal Contributors}}
{{Stendhal Quests}}


{{ TODO | Update page for changes in quest coding }}


{{Stendhal Quests}}
__TOC__
__TOC__


Line 12: Line 15:
This page describes how to code a quest. You don't need to know a lot about Java. You should, however, already have [[Configure a development environment (IDE)|setup an IDE]] and be able to compile and start a local Stendhal server.
This page describes how to code a quest. You don't need to know a lot about Java. You should, however, already have [[Configure a development environment (IDE)|setup an IDE]] and be able to compile and start a local Stendhal server.


This tutorial assumes that the new quest only uses NPCs and items that already exist in Stendhal.
This tutorial assumes that the new quest only uses NPCs and items that already exist in Stendhal. To add a new NPC, see [[Stendhal NPC Coding]].


== Creating a quest skeleton ==
== Creating a quest skeleton ==
Line 48: Line 51:
public String getName() {
public String getName() {
return "BeerForHayunn";
return "BeerForHayunn";
}

public List<String> getHistory(final Player player) {
final List<String> res = new ArrayList<String>();
return res;
}
}
}
}
Line 99: Line 107:
== Commonly used conversation phrases ==
== Commonly used conversation phrases ==


Good, Hayunn now replies to the trigger "quest". He does not, however, reply to "task". All other NPCs accept both words as synonym. A simple solution would be to add a second ''npc.addReply'' line. But there is a better way which makes it very easy to add additional synonyms later. We predefined lists of commonly used [http://arianne.cvs.sf.net/viewvc/arianne/stendhal/src/games/stendhal/server/entity/npc/ConversationPhrases.java?view=markup ConversationPhrases]. If there are already conversation phrases defined for the triggers that you would like to add, you should use the phrases.
Good, Hayunn now replies to the trigger "quest". He does not, however, reply to "task". All other NPCs accept both words as synonym. A simple solution would be to add a second ''npc.addReply'' line. But there is a better way which makes it very easy to add additional synonyms later. We predefined lists of commonly used [https://github.com/arianne/stendhal/blob/master/src/games/stendhal/server/entity/npc/ConversationPhrases.java ConversationPhrases]. If there are already conversation phrases defined for the triggers that you would like to add, you should use the phrases.


Let's adjust the above sample by using ''ConversationPhrases.QUEST_MESSAGES'' instead of the hard coded word "quest":
Let's adjust the above sample by using ''ConversationPhrases.QUEST_MESSAGES'' instead of the hard coded word "quest":
Line 146: Line 154:
== Second Part of this Tutorial ==
== Second Part of this Tutorial ==


Congratulations if you made it this far. You are now able to code basic dialogs with NPCs. The next section of this tutorial will describe advanced technics. Please make sure the steps on this page work before you continue to [[Stendhal Quest Coding - Part 2|the second part of this tutorial]].
Congratulations if you made it this far. You are now able to code basic dialogs with NPCs. The next section of this tutorial will describe advanced techniques. Please make sure the steps on this page work before you continue to [[Stendhal Quest Coding - Part 2|the second part of this tutorial]].