Stendhal Quest Coding: Difference between revisions
Content deleted Content added
imported>Hendrik Brummermann decreased indent |
imported>Kribbel m replace old link |
||
| (185 intermediate revisions by 13 users not shown) | |||
Line 1:
{{Navigation for Stendhal Top|Contributing}}
{{Navigation for Stendhal Contributors}}
{{Stendhal Quests}}▼
{{ TODO | Update page for changes in quest coding }}
▲{{Stendhal Quests}}
__TOC__
If you have ideas for new quests or are interested in helping to refine quest ideas, please have a look at the [[Stendhal Quest Contribution|Quest Contributor's Guide]] or the [[Stendhal Quest Ideas]].
== Before you start ==
Line 16 ⟶ 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 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 ==
Line 52 ⟶ 51:
public String getName() {
return "BeerForHayunn";
}▼
public List<String> getHistory(final Player player) {
final List<String> res = new ArrayList<String>();
return res;
}
}
Line 61 ⟶ 65:
<source lang="java">
// [...]
</source>
Line 77 ⟶ 81:
<source lang="java">
▲ }
</source>
Line 91 ⟶ 95:
<source lang="java">
}
</source>
Line 101 ⟶ 105:
==
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 [
<source lang="java">
</source>
Please compile and restart your server. Hayunn should
== Blue trigger words ==
As you probably know NPCs can say words in blue, words that they expect to be repeated by the player. We want to add such words for "beer" and "tavern". As we have done before, we will add npc.addReply lines for those words.
▲}}
So, how do we get the words colored blue? Simple, add a "#" in front of them. If you actually want to include a #-character, you need to repeat it.
<source lang="java">
public void prepareQuestStep() {
// get a reference to the Hayunn npc
SpeakerNPC npc = npcs.get("Hayunn Naratha");
// ask for a beer and explain it
npc.addReply(ConversationPhrases.QUEST_MESSAGES,
"Please bring me a #beer.");
// explain blue words
npc.addReply("beer", "Margaret sells beers in the #tavern.");
npc.addReply("tavern", "If you don't know where the inn is, you could ask old Monogenes.");
// an example for escaping #
npc.addReply("trading", "http://stendhal.game-host.org/wiki/index.php/StendhalFAQ##Trading");
}
</source>
You know the drill: Compile, restart and try it out.
== 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
| |||