Compare commits

...
Sign in to create a new pull request.

25 commits

Author SHA1 Message Date
Hendrik Brummermann
6a9ce203d8 temporary workaround until karma can be implemented 2010-10-30 23:35:06 +00:00
Hendrik Brummermann
5f9248b02d resaved without background color by kymara 2010-10-24 17:48:39 +00:00
Hendrik Brummermann
6374a108bf updated version 2010-10-14 17:20:45 +00:00
Hendrik Brummermann
fe5fdda5ff fix texts for grammar and style by kymara 2010-10-12 19:50:17 +00:00
Hendrik Brummermann
4a3c787aab sorting change log 2010-10-12 19:13:47 +00:00
Hendrik Brummermann
bcd45b06e5 remove the "at least" from message as he gives an approximate time remaining and you end up with for "at least about 1 and a half days" - also removed extra space by kymara 2010-10-12 19:04:41 +00:00
Hendrik Brummermann
f8757a0984 add coal to grammar rules for getting 'piece of' by kymara 2010-10-12 06:54:55 +00:00
Hendrik Brummermann
f2c198ddba Corrections to the new texts in the pied piper quest 2010-10-12 06:53:19 +00:00
Hendrik Brummermann
a775caa38f correcting some texts by kymara 2010-10-12 06:52:59 +00:00
Hendrik Brummermann
a958c895c9 Added more coal sources, not close to each other, not easy reachable in a row, should be enough now (by bluelads99) 2010-10-11 21:54:28 +00:00
Hendrik Brummermann
c27d2477b1 More realistic texts by kymara 2010-10-11 21:53:20 +00:00
Hendrik Brummermann
800eb4a26e Map issue at the door to ados market by kymara (ID: 3085465) 2010-10-11 21:50:57 +00:00
Hendrik Brummermann
d86204d817 after rejecting BBQ quest, cannot start it by kymara ID: 3085441 2010-10-11 21:50:16 +00:00
Hendrik Brummermann
a961a2deb2 Fix #3085439 and a few spelling errors (prolly is no word) by kymara 2010-10-11 21:49:53 +00:00
Hendrik Brummermann
8d860e1836 Fixed help sentence from Florence Boullabaisse by bluelads99 (ID: 3085448) 2010-10-11 21:49:22 +00:00
Hendrik Brummermann
ad7aa20e43 Fixed "hi"-message and changed it into a normal sentence without a possible yes or no answer by bluelads99 (ID: 3085447) 2010-10-11 21:48:56 +00:00
Hendrik Brummermann
d407a34c31 fixed respawn time 2010-10-11 21:48:13 +00:00
Hendrik Brummermann
b08c83fd4a backported amount fix by bluelads 2010-10-11 18:50:08 +00:00
Hendrik Brummermann
52489d187a fixed sentence "This is a pre release test client client" 2010-10-07 20:08:47 +00:00
Hendrik Brummermann
60fc31f708 updated marauroa for better error messages in case of null content 2010-10-07 19:54:11 +00:00
Hendrik Brummermann
276936f3f4 backported splitting dialog by bluelads 2010-10-06 21:47:59 +00:00
Hendrik Brummermann
2314dbbec8 don 2010-10-04 21:32:41 +00:00
Hendrik Brummermann
a88f96af7e removed Ortiv Milquetoast's quest 2010-10-04 20:50:03 +00:00
Hendrik Brummermann
9b3fef666d deactivated MixtureForOrtiv 2010-10-04 20:44:35 +00:00
Hendrik Brummermann
50ec5c49f0 set version to 0.75.6 2010-10-04 20:40:44 +00:00
28 changed files with 230 additions and 95 deletions

View file

@ -73,7 +73,7 @@ version_server = http://arianne.sourceforge.net/stendhal.version
# current version of stendhal
version.old = 0.87
version = 0.87.5
version = 0.88
# javac options
javac.deprecation = true

View file

@ -2554,6 +2554,75 @@ Mature sheep wanted: please speak to Sato
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="222" y="26">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="175" y="13">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="137" y="23">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="102" y="65">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="123" y="67">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="73" y="2">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="7" y="14">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="9" y="44">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="29" y="73">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="32" y="94">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="172" y="66">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="249" y="80">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="213" y="95">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="239" y="124">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
</zone>
<zone name="-1_semos_mine_n2_e" level="-1" x="500128" y="499616"
@ -2603,6 +2672,26 @@ Mature sheep wanted: please speak to Sato
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="79" y="4">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="67" y="9">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="60" y="22">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="42" y="5">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
</zone>
@ -2640,20 +2729,54 @@ Mature sheep wanted: please speak to Sato
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="101" y="106">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="121" y="47">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="113" y="88">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
</zone>
<zone name="-1_semos_mine_n_e2" level="-1" x="500256" y="499744"
file="Level -1/semos/mine_n_e2.tmx">
<entity x="56" y="49">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="64" y="48">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="102" y="21">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="90" y="48">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="101" y="50">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="116" y="72">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
<entity x="95" y="21">
<implementation
class-name="games.stendhal.server.entity.mapstuff.useable.CoalSource" />
</entity>
</zone>
<zone name="int_wofol_house1" file="interiors/wofol/house1.tmx">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

@ -2,32 +2,33 @@ Changelog
---------
0.88
*features*
- right click on a player to start trading with them using a GUI
- don't reset to townhall on minor releases
- new music in orril castle
- can have a detail layer over outfits
- new game for Semos Mine Town Revival Weeks: 9 switches
- new NPC Andy in Ados near the church
- new NPC Haunchy Meatoch on Ados market
- new NPC Florence Boullabaisse on Ados market
- new NPC Fritz on Ados market
- new NPC Barbarus in Semos Mine
- new NPC Ortiv Milquetoast in Kirdneh River House
- new fish soup maker on Ados market (Florence Boullabaisse)
- added new quest on Ados market to Haunchy Meatoch
- added new quest in the Kirdneh River House to Ortiv Milquetoast
- added more quest histories
- rest of the Wt replaced with swing
- corpse and chest windows raise themselves if one with an already open window is inspected
- buddies are sorted first by online status, then by name
- don't reset to townhall on minor releases
- deathmatch assistant announces completion and player can directly claim victory
*world*
- new NPC Andy in Ados near the church
- new NPC Haunchy Meatoch on Ados market with a new quest
- new NPC Florence Boullabaisse on Ados market who will make a tasty Fish Soup for you
- new NPC Fritz on Ados market
- new NPC Barbarus in Semos Mine
- new NPC Ortiv Milquetoast in Kirdneh River House with a new quest
- new fish soup maker on Ados market (Florence Boullabaisse)
- new music in Orril Castle
- new items fish soup, garlic, grilled steak, coal, pick, red lionfish
- coal sources for extracting coal
- added garlic to Sues sales list
- new game for Semos Mine Town Revival Weeks: 9 switches
*website*
- animated/large NPCs like tomi and vulcanus now have an image
0.87.1
- fixed an issue causing the client to be unresponsive for some windows users

Binary file not shown.

View file

@ -1,3 +1,3 @@
set STENDHAL_VERSION=0.87.5
set STENDHAL_VERSION=0.88
set LOCALCLASSPATH=.;data\script;data\conf;stendhal-server-%STENDHAL_VERSION%.jar;marauroa.jar;mysql-connector.jar;log4j.jar;commons-lang.jar;h2.jar
java -Xmx400m -cp "%LOCALCLASSPATH%" marauroa.server.marauroad -c server.ini -l

View file

@ -1,5 +1,5 @@
#!/bin/sh
STENDHAL_VERSION="0.87.5"
STENDHAL_VERSION="0.88"
LOCALCLASSPATH=.:data/script/:data/conf/:stendhal-server-$STENDHAL_VERSION.jar:marauroa.jar:mysql-connector.jar:log4j.jar:commons-lang.jar:h2.jar

View file

@ -290,7 +290,7 @@ public class j2DClient implements UserInterface {
// Display a hint if this is a debug client
if (Debug.PRE_RELEASE_VERSION != null) {
addEventLine(new HeaderLessEventLine("This is a pre release test client client: " + Debug.VERSION + " - " + Debug.PRE_RELEASE_VERSION, NotificationType.CLIENT));
addEventLine(new HeaderLessEventLine("This is a pre release test client: " + Debug.VERSION + " - " + Debug.PRE_RELEASE_VERSION, NotificationType.CLIENT));
}
// set some default window positions

View file

@ -10,7 +10,7 @@ package games.stendhal.client.update;
public class Version {
/** Version Number. */
private static final String VERSION = "0.87.5";
private static final String VERSION = "0.88";
/**
* Extract the specified number of parts from a version-string.

View file

@ -26,7 +26,7 @@ public class Debug {
/** version. */
// Note: This line is updated by build.xml using a regexp so be sure to adjust it in case you modify this line.
public static final String VERSION = "0.87.5";
public static final String VERSION = "0.88";
public static final String PRE_RELEASE_VERSION = null;

View file

@ -269,7 +269,7 @@ public class Grammar {
if (result.equals("meat") || result.equals("ham")
|| result.equals("cheese") || result.equals("wood")
|| result.equals("paper") || result.equals("iron")
|| result.equals("chicken")) {
|| result.equals("chicken") || result.equals("coal")) {
result = addPrefixIfNotAlreadyThere(lowString, "piece of ",
"pieces of ");
} else if (result.endsWith(" ore")) {

View file

@ -246,7 +246,7 @@ public class GenerateINI {
out.println();
out.println("server_typeGame=" + gameName);
out.println("server_name=" + gameName + " Marauroa server");
out.println("server_version=0.87.5");
out.println("server_version=0.88");
out.println("server_contact=https://sourceforge.net/tracker/?atid=514826&group_id=66537&func=browse");
out.println();
out.println("# Extensions configured on the server. Enable at will.");

View file

@ -50,12 +50,13 @@ public class StendhalBuddyDAO {
/**
* saves the buddy list for the specified charname
*
* @param transaction DBTransaction
* @param charname name of char
* @param buddies buddy list
* @throws SQLException
* @throws SQLException in case of an database error
*/
private void saveBuddyList(DBTransaction transaction, String charname, Set<String> buddies) throws SQLException {
public void saveBuddyList(DBTransaction transaction, String charname, Set<String> buddies) throws SQLException {
Set<String> oldList = loadBuddyList(transaction, charname);
Set<String> newList = buddies;
newList.add(charname);

View file

@ -41,7 +41,7 @@ public class StendhalCharacterDAO extends CharacterDAO {
if (player instanceof Player) {
final Player instance = (Player) player;
DAORegister.get().get(StendhalWebsiteDAO.class).insertIntoCharStats(transaction, instance);
DAORegister.get().get(StendhalBuddyDAO.class).saveBuddyList(character, instance.getBuddies());
DAORegister.get().get(StendhalBuddyDAO.class).saveBuddyList(transaction, character, instance.getBuddies());
}
} catch (final SQLException sqle) {
logger.warn("error storing character", sqle);

View file

@ -75,7 +75,6 @@ import games.stendhal.server.maps.quests.MeetMonogenes;
import games.stendhal.server.maps.quests.MeetSanta;
import games.stendhal.server.maps.quests.MeetZynn;
import games.stendhal.server.maps.quests.MithrilCloak;
import games.stendhal.server.maps.quests.MixtureForOrtiv;
import games.stendhal.server.maps.quests.NewsFromHackim;
import games.stendhal.server.maps.quests.ObsidianKnife;
import games.stendhal.server.maps.quests.PaperChase;
@ -202,7 +201,7 @@ public class StendhalQuestSystem {
loadQuest(new MeetSanta());
loadQuest(new MeetZynn());
loadQuest(new MithrilCloak());
loadQuest(new MixtureForOrtiv());
// loadQuest(new MixtureForOrtiv());
loadQuest(new NewsFromHackim());
loadQuest(new ObsidianKnife());
loadQuest(new PizzaDelivery());

View file

@ -104,10 +104,13 @@ public class Dice extends Item {
/**
* Throw the dice.
*/
private void randomize() {
void randomize() {
topFaces = new int[NUMBER_OF_DICE];
for (int i = 0; i < NUMBER_OF_DICE; i++) {
final int topFace = Rand.roll1D6();
int topFace = Rand.roll1D6();
if (topFace == 6) {
topFace = Rand.roll1D6();
}
topFaces[i] = topFace;
}
}

View file

@ -155,8 +155,8 @@ public class CoalSource extends PlayerActivityEntity {
private void handleRespawn() {
if (getState() == 0) {
final int time = Rand.randExponential(6000);
int turn = Math.max(time, 200);
TurnNotifier.get().notifyInSeconds(turn, new Refiller());
int turn = Math.max(time, 6000);
TurnNotifier.get().notifyInTurns(turn, new Refiller());
}
}

View file

@ -57,12 +57,12 @@ public class ManWithHatNPC implements ZoneConfigurator {
@Override
protected void createDialog() {
addGreeting("Sniff!");
addHelp("When I lived together with my beloved wife, we used to travell a lot. We loved the beach on Athor Island! *Sigh* These memories are making me even more sad...Please, leave me alone now...");
addQuest("I am too old and too sad to think about jobs for others...*sniff-sniff*");
addJob("*Cry* I had to stop working after my wife died...");
addOffer("Nothing, I lost my darling!");
addGoodbye("Buuaaahaaaahaa!");
addGreeting("Hello.");
addHelp("When I lived together with my beloved wife, we used to travel a lot. We loved the beach on Athor Island! But these memories make me sad now.");
addQuest("I am too old to think about jobs for others...");
addJob("I stopped working after my wife died.");
addOffer("I have nothing to offer you.");
addGoodbye("Goodbye, thank you for talking with me.");
}
};

View file

@ -60,9 +60,9 @@ public class BBQGrillmasterNPC implements ZoneConfigurator {
@Override
protected void createDialog() {
addGreeting("Hey! Isn't it a nice day for having a BBQ?");
addHelp("Unfortunetly the steaks aren't ready yet... If you are hungry and can't wait, you could check some offers in the near out like the Blacksheep offers near the fisherhuts in Ados or you can take a ferry to Athor for getting some nice snacks...");
addJob("I am a grillmaster as you can prolly see. I love the smell of fresh grilled meat!");
addGreeting("Hey! Nice day for a BBQ!");
addHelp("Unfortunately the steaks aren't ready yet... If you are hungry and can't wait, you could check some offers in the near out like the Blacksheep offers near the fisherhuts in Ados or you can take a ferry to Athor for getting some nice snacks...");
addJob("I am a grillmaster as you can probably see. I love the smell of fresh grilled meat!");
addOffer("I hope that my steaks will be ready soon. Please be a bit patient or have some other snacks first.");
addGoodbye("A nice day to you! Always keep your fire burning!");

View file

@ -56,7 +56,7 @@ public class FishSoupMakerNPC implements ZoneConfigurator {
@Override
protected void createDialog() {
//addGreeting();
addHelp("I can cook a really tasty fish soup for you but if you are not into fish, I can suggest a good friend of mine to you, Old Mother Helena in Fado. She makes the best vegetable soups in whole Faiumoni!");
addHelp("I can cook a really tasty fish soup for you but if you are not into fish, I can suggest a good friend of mine to you, Old Mother Helena in Fado. She makes the best vegetable soup in the whole of Faiumoni!");
addQuest("I don't have any quests for you, but I can offer you some fresh made fish soup for your travels.");
addJob("I am a trained cook but specialized into soups. My most favourite soup is a fish soup but I also like normal ones...");

View file

@ -63,11 +63,14 @@ public class OldFishermanNPC implements ZoneConfigurator {
@Override
protected void createDialog() {
addGreeting("Ahoy!");
addHelp("Harr my friend, my whole life long I was sitting in a boat, trying to catch some fish... The feeling you have when fishies hang on your rod is awesome! Did you ever try to catch some by yourself? You can ask my friend Santiago for help, he lives in a fisherhut somewhere in the city!");
addHelp("Harr my friend, my #whole #life long I was sitting in a boat, trying to catch some fish...");
addReply("whole life","The feeling you have when fish hang on your rod is awesome! Did you ever try to catch some by #yourself?");
addReply("yourself", "You can ask my friend Santiago for help, he lives in a hut somewhere in the city!");
addQuest("Ahoy Matey! I don't have any tasks for you but others do!");
addJob("I am a fisherman. For many, many years I went fishing every day. There have been dangerous storms I had to get over and some reeeeeally big fish which almost drown my ship, but of course I always was able to catch them! Hehe! I hope that I will be able to deliver some fish to the market one time...");
addOffer("My fishing places on the sea are catched by some ugly storm I can't drive out at the moment. Sorry matey, I can't offer you anything at the moment...");
addJob("I am a fisherman. For many, many years I went fishing every day. There have been dangerous storms I had to get through and some reeeeeally big fish which almost drown my ship, but of course I always was able to #catch them!");
addReply("catch","Hehe! I hope that I will be able to deliver some fish to the market one time...");
addOffer("My fishing places on the sea are caught in some ugly #storm so I can't venture out at the moment.");
addReply("storm", "The huge storm nearly destroyed my boat! Sorry matey, I can't offer you anything at the moment...");
addGoodbye("See you, matey! And be careful there on this slippy ground!");
}

View file

@ -74,17 +74,17 @@ public class RetiredTeacherNPC implements ZoneConfigurator {
@Override
protected void createDialog() {
addGreeting("Ohh a stranger found my hidden house, welcome!");
addGreeting("Ohh, a stranger found my hidden house, welcome!");
addHelp("Never ever get into trouble with assassins when they are stronger than you! They will come to get you otherwise! And some of them are waiting downstairs under my basement!");
addJob("I was a teacher for alchemy once but some of my students turned into ugly bandits and assassins... I don't know what happens in Faiumoni at the moment as though as I just stay in my save house the whole day long...");
addOffer("Sorry, but I can't offer you anything... I have some mayor problems in my basement at the moment...");
addJob("I was a teacher for alchemy once but some of my students turned into ugly bandits and assassins... I don't know what happens in Faiumoni at the moment, though, as I just stay in my safe house the whole day long...");
addOffer("Sorry, but I can't offer you anything... I have some major problems in my basement at the moment...");
addQuest("I want to prepare a mixture for keeping the assassins and bandits in my cellar. I could need some ingredients for that soon...");
addGoodbye("Take care of you and please be fast with visiting me again, I'm scared alone!");
addGoodbye("Take care of yourself and please return soon to visit me again, I'm scared alone!");
}
};
npc.setDescription("You see Ortiv Milquetoast. Although he has some kind of teacher aura around him, he seems to be quite scared and nervous.");
npc.setDescription("You see Ortiv Milquetoast. Though he has some kind of teacher aura around him, he seems to be quite scared and nervous.");
npc.setEntityClass("retiredteachernpc");
npc.setPosition(15, 28);
npc.setDirection(Direction.RIGHT);

View file

@ -78,6 +78,8 @@ public class CoalForHaunchy extends AbstractQuest {
private void offerQuestStep() {
final SpeakerNPC npc = npcs.get("Haunchy Meatoch");
// player says quest when he has not ever done the quest before (rejected or just new)
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new QuestNotStartedCondition(QUEST_SLOT),
@ -93,7 +95,7 @@ public class CoalForHaunchy extends AbstractQuest {
"Coal isn't easy to find. You normally can find it somewhere in the ground but perhaps you are lucky and find some in the old Semos Mine tunnels...",
null);
// player has completed the quest (doesn't happen here)
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new QuestCompletedCondition(QUEST_SLOT),
@ -101,19 +103,21 @@ public class CoalForHaunchy extends AbstractQuest {
"I can go on with grilling my tasty steaks now! Thank you!",
null);
// player asks about quest which he has done already and he is allowed to repeat it
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new AndCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES), new QuestStateStartsWithCondition(QUEST_SLOT, "waiting;")),
ConversationStates.QUEST_OFFERED,
"The last coal you brought me is mostly gone again. Will you bring me some more?",
null);
// player asks about quest which he has done already but it is not time to repeat it
npc.add(ConversationStates.ATTENDING,
ConversationPhrases.QUEST_MESSAGES,
new AndCondition(new NotCondition(new TimePassedCondition(QUEST_SLOT, 1, REQUIRED_MINUTES)), new QuestStateStartsWithCondition(QUEST_SLOT, "waiting;")),
ConversationStates.ATTENDING,
null,
new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES, "The coal amount behind my counter is still high enough. I will not need more for at least "));
new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES, "The coal amount behind my counter is still high enough. I will not need more for "));
// Player agrees to get the coal
npc.add(ConversationStates.QUEST_OFFERED,
@ -142,9 +146,10 @@ public class CoalForHaunchy extends AbstractQuest {
triggers.add("stone coal");
triggers.addAll(ConversationPhrases.QUEST_MESSAGES);
// player asks about quest or says coal when they are supposed to bring some coal and they have it
npc.add(
ConversationStates.ATTENDING, triggers,
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new PlayerHasItemWithHimCondition("coal",10)),
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new PlayerHasItemWithHimCondition("coal",25)),
ConversationStates.ATTENDING,
null,
new MultipleActions(
@ -164,17 +169,18 @@ public class CoalForHaunchy extends AbstractQuest {
}
}));
// player asks about quest or says coal when they are supposed to bring some coal and they don't have it
npc.add(
ConversationStates.ATTENDING, triggers,
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new NotCondition(new PlayerHasItemWithHimCondition("coal",10))),
new AndCondition(new QuestInStateCondition(QUEST_SLOT, "start"), new NotCondition(new PlayerHasItemWithHimCondition("coal",25))),
ConversationStates.ATTENDING,
"You don't have the coal amount which I need yet. Go and pick some more pieces up, please.",
null);
npc.add(
ConversationStates.ATTENDING, triggers,
new QuestNotInStateCondition(QUEST_SLOT, "start"),
ConversationStates.ATTENDING,
Arrays.asList("coal","stone coal"),
new QuestNotInStateCondition(QUEST_SLOT,"start"),
ConversationStates.ATTENDING,
"Sometime you could do me a #favour ...", null);
@ -204,10 +210,10 @@ public class CoalForHaunchy extends AbstractQuest {
res.add("He asked me to fetch him some pieces of coal but I don't have time to collect some.");
}
if (player.isQuestInState(QUEST_SLOT, "start") || isCompleted(player)) {
res.add("The BBQ grill-heat is low and I promised Haunchy to help him out with 10 pieces of coal.");
res.add("The BBQ grill-heat is low and I promised Haunchy to help him out with 25 pieces of coal.");
}
if (("start".equals(questState) && player.isEquipped("coal",10)) || isCompleted(player)) {
res.add("I found 10 pieces of coal for the Haunchy and think he will be happy.");
if (("start".equals(questState) && player.isEquipped("coal",25)) || isCompleted(player)) {
res.add("I found 25 pieces of coal for the Haunchy and think he will be happy.");
}
if (isCompleted(player)) {
if (isRepeatable(player)) {

View file

@ -129,7 +129,7 @@ public class FishSoup extends AbstractQuest {
ConversationPhrases.GREETING_MESSAGES,
new QuestNotStartedCondition(QUEST_SLOT),
ConversationStates.INFORMATION_1,
"Hello and welcome on Ados market! Are you intersted in something #tasty?",
"Hello and welcome on Ados market! I have something really tasty and know what would #revive you.",
null);
// player returns after finishing the quest (it is repeatable) after the
@ -152,9 +152,9 @@ public class FishSoup extends AbstractQuest {
new SayTimeRemainingAction(QUEST_SLOT, 1, REQUIRED_MINUTES , "Oh I am sorry, I have to wash my cooking pots first before making more soup for you. Please come back in")
);
// player responds to word 'tasty'
// player responds to word 'revive'
npc.add(ConversationStates.INFORMATION_1,
"tasty",
"revive",
new QuestNotStartedCondition(QUEST_SLOT),
ConversationStates.QUEST_OFFERED,
null,

View file

@ -126,29 +126,29 @@ public class AwaitingPhase extends TPPQuest {
private void fillConversations() {
//piper
conversations.add("Hi Mayor. For what you called me here?");
conversations.add("Good day, Mayor Chalmers. What did you call me here for?");
//mayor
conversations.add("Hello, very glad to see our respectable hero here. Who didnt hear about you, there is almost...");
conversations.add("Hello, very glad to see our respectable hero here. Who hasn't heard about you, there is almost...");
//piper
conversations.add("Talk about your business to me, my time costs a much of moneys.");
conversations.add("Please talk about your business to me, my time is precious.");
//mayor
conversations.add("... ok, what I talked about? Ah yes, our city have a little problem with #rats.");
conversations.add("... ok, what was I saying? Ah yes, our city has a little problem with #rats.");
//piper
conversations.add("Again?");
//mayor
conversations.add("Yes, these animals are of course too stupid to remember a lesson they have a few time ago.");
conversations.add("Yes, these animals are too stupid to remember a lesson they learnt only recently.");
//piper
conversations.add("No problem, if you are ready to pay.");
conversations.add("I can help, if you are ready to pay.");
//mayor
conversations.add("City have no other way to eliminate this source of infections. I will pay to you.");
conversations.add("Ados City has no other way to eliminate this nuisance. We will pay you.");
//piper
conversations.add("Do you know my usual price?");
//mayor
conversations.add("Yes, I have it written somewhere in my papers.");
//piper
conversations.add("Good. I will return for my reward soon, prepare it.");
conversations.add("Good. I will return for my reward soon, please prepare it.");
//mayor
conversations.add("Dont worry, how can I break your trustworth to me and my city?");
conversations.add("Don't worry, how can I break your trust in me and my city?");
}
/**
@ -167,8 +167,8 @@ public class AwaitingPhase extends TPPQuest {
private void setupDialog() {
if(mayor.isTalking()) {
mayor.say("Sorry, "+mayor.getAttending().getName()+
" but i see that our city's saver here. I have to speak with him quickly."+
" Please speak with me again after finish of our talking.");
" but I see that our city's savoiur is here. I have to speak with him quickly."+
" Please speak with me again after we finish talking.");
mayor.setCurrentState(ConversationStates.IDLE);
};
mayor.setCurrentState(ConversationStates.ATTENDING);
@ -205,7 +205,7 @@ public class AwaitingPhase extends TPPQuest {
return;
};
TurnNotifier.get().dontNotify(this);
TurnNotifier.get().notifyInSeconds(4, this);
TurnNotifier.get().notifyInSeconds(8, this);
}
}
@ -253,8 +253,8 @@ public class AwaitingPhase extends TPPQuest {
public String getSwitchingToNextPhaseMessage() {
final String text =
"Mayor Chalmers shouts: Thankfully, all the #rats are gone now, " +
"the Pied Piper hypnotized them and led them away to dungeons. "+
"Those of you, who helped Ados City with the rats problem, "+
"the Pied Piper hypnotized them and led them away to the dungeons. "+
"Those of you who helped Ados City with the rats problem "+
"can get your #reward now.";
return text;
}

View file

@ -165,7 +165,7 @@ public class InvasionPhase extends TPPQuest {
*/
public String getSwitchingToNextPhaseMessage() {
final String text =
"Mayor Chalmers shouts: Suddenly, #rats have captured city, "+
"Mayor Chalmers shouts: Suddenly, #rats have captured the city, "+
//"Mayor Chalmers shouts: The #rats left as suddenly as they arrived. "+
//"Perhaps they have returned to the sewers. "+
"I now need to call the Pied Piper, a rat exterminator. "+
@ -202,7 +202,7 @@ public class InvasionPhase extends TPPQuest {
*/
protected String ratsProblem() {
final String text = "Mayor Chalmers shouts: Ados City is being invaded by #rats!"+
" Anyone who will help to clean up city, will be rewarded!";
" Anyone who will help to clean up the city, will be rewarded!";
return(text);
}

View file

@ -22,7 +22,7 @@ Some of these people are NPC, they will give you tasks to accomplish and hints t
</security>
<resources>
<j2se href="http://java.sun.com/products/autodl/j2se" version="1.5+" /> <!-- max-heap-size="120" -->
<jar href="http://arianne.sourceforge.net/jws/stendhal-starter-0.87.5.jar" download="eager" main="true" />
<jar href="http://arianne.sourceforge.net/jws/stendhal-starter-0.88.jar" download="eager" main="true" />
</resources>
<application-desc/>
</jnlp>

View file

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map SYSTEM "http://mapeditor.org/dtd/1.0/map.dtd">
<map version="1.0" orientation="orthogonal" width="128" height="128" tilewidth="32" tileheight="32">
<?xml version="1.0"?>
<map version="0.99b" orientation="orthogonal" width="128" height="128" tilewidth="32" tileheight="32">
<tileset name="../../tileset/ground/ground.png" firstgid="1" tilewidth="32" tileheight="32">
<image source="../../tileset/ground/ground.png" trans="ffffff"/>
</tileset>
@ -141,27 +140,27 @@
</tileset>
<layer name="0_floor" width="128" height="128">
<data encoding="base64" compression="gzip">
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
</data>
</layer>
<layer name="1_terrain" width="128" height="128">
<data encoding="base64" compression="gzip">
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
</data>
</layer>
<layer name="2_object" width="128" height="128">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAO3cSW7UQAAF0KayZb4BC+4ARAIiFgEhIUCCCyTMs4QgCbAA9gwHAITEuOAuHIkq2VFaoTvpKS676z3pq4fEsuNvl2O3k16vvY4tDH6e2/EWLQsAsLOlkHsJaFp/5/oH2FtrcZxdzzzWvglVtkvHgHGPA7cdN8ayW/9P6q89iI/3Yx7FPG7pOl4N+p9E7v1/llbn6GcBmDfnphij07SDpr9l3O+cC6HKLKwE20DbrQ05xxvFvfr7HobqXCTZPA9Jva/ovvUG9T+qm3HaO3WSG/Hxrs4747muOut12Mqk9N9ev3fp5m3YCvMn9f9Lt8Vqsv8z9Xw2QnVM2BhxvrM6TySf1P1mxqX/6f0NVT5Zl8U5oXMoxp8wPG1yKlRhvi32dbzed89Ren9xzP4nuS+MvIZ1bN8vx7T77KVQhW4a1H+6FnB6xE6vhCo060vfOv9ZP5/l9cKzOoWZ+2G/Kpr+y6b/sumfYXJuG5fjvK9OeC53PlRhOl8zrcPtn+OP+7n+xVBlk+vAk5mHY4PuR5Ou33yP+Ry2Xk8qjRuzHDvc19Mtadv5pv9iTdu9vlmuf4dfti1AkS7a96lN8/8gAAAAaM71ff+/d23Ae01ZyjhvAAAAAAAAgK7biHkR8zLmVeZloXnvYt7HfIj5mHlZAAAA2Nn+hV7vQMzBmEML1euUNjrpb4b3xOHY95GYoy3tffs2Snnavo0CAAAAAAAAADTJ/TS4n4Z+XboPlL1hTAAAAACA9nva9/xZtqUgF/2XTf9l03/Z9A8AAADAOFxPKpv+y6b/sum/bPovm/7Lpv98/gFXIDJmAAABAA==
H4sIAAAAAAAAAO3c22rUQBwH4HX21vMbeOE7qAW1eFGlICroC7SezyDaLnih3gs+gIrg8cJ38ZHMkCwb1l2750l2vg/+bDZtSJrfzKTJTtvpNNep7ujl1E436FgAgP/bDKmPgFWrZy5/gOXaK8bZ/cRj7dtQ1rB4DZj2OnDPdWMqB+X/vPra4+L1UVFPi3rW0HO8G+Q/i9T9f5F21+hnAVg3l+YYo+O2o7a/a9xvnSuhrEXYCdpA0+2NucebxMPq+56E8l4k6t+HxNx3ZN94o/Kf1J1i2/tVRbeL1wcyb41XsmqtN2FQs5J/c/06IJt3YVCsn5j/T9lma5X5X6j20wvlNaE34X4XdZ9IOjH7fk1L/vP7E8r66Fxm54zMIRu/w/hqknOhLNbbRi3j/dqco7h+Y8r8Z5kXRlrjMtb38zFvn70ayqKdRuUfnwWcnzDT66EsVutz7Zz/qJYX+bzwokxh4b7rV1mTf97knzf5M07KtnGt2PeNGe/lLoeymM+XROdw+HP8aT/X3w5l9XkOPJt1uDbIfjLx+c23oj6FwftZxXFjkWOHeT3tEtvOV/lna97s5c1W9Tv8lrYAWdrW96nM8/8gAAAAWJ1bh/5dd3PEulXZTLhvAAAAAAAAgLbr1ZZfJzsKUnlfW/6Q7CgAAACYxOFup3OkqKNFHeuW72M10Vl/M7wUx4u8TxR1sqG5D7dR8tP0NgoAAAAAAAAAsErm02A+DXVtmgfKchgTAAAAAKD5XtSWXyY7ClKRf97knzf5503+AAAAAEzD86S8yT9v8s+b/PMm/7zJP2/yT+cvx4DMrgAAAQA=
</data>
</layer>
<layer name="3_roof" width="128" height="128">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAO3cSY7TQBQAUCfNPEggEGxgAxvGBeMZ2MMOWsAROASDxDUQ1+AIfQCWjEdght9qRe027u4k7aHsek/6SitxbKt+pVOu+k5RAMCmD9Oi+Bjxadr3mdRL/fyG7nO065eIr4m2b+rnx84uRd4uR1xpKX/HYr/Ha/Y9e3671+nG1Wj7axHX5WB0nkdOX/ac1/VzeFE5j9lz5Xit/7XqRrTvzUob1+Wh7/7C/Bb57r4V29yW21FZ5Lv7Tmxzt4P8X4hjXFzyOGfifWf1UYDBqhvzM16v9phn1yEA3Wt6/v9c7Of8kvs6Ee876f9+o3abAzb/P051872p2uv4kf/NM99bHXc3NeZ2/de/ruZ76U957OYzlx9jN1Jj/S8/xu/dW5tuPq4l2v4p1J+xs7brf0lbKmNI1y/QnZ3qsn0Gx+9t5PhNYnm2/je/Za65ulgT2sv6L+1yD0DerAmRKmPP5VXncPqaj63WE7insxupzOEA3Wn6vokm1mus/8IwNL32pw5gWIwbaVp5LDKPh7Hdo21iVb9cWAr3fdxb8PhPpvXB4szx580cP+SrrXv6AABIx/0Y4z3YZZw3zzYAAACrk42Y/U1e3leCvMh/3t5NtgZ5kf+8yX/e5D9vxn95k/+8PZtsDQCG4du0KL5H/KjEz4hfaoJG73fk+E/E30oUK0UxWen77DaU+6h+2axp5HglYl8l9kccSCT/5T6aUr8cg4PRlociDlfiSMTRjtv5VBzvdM0xy300pX5JN8p9tI9+CQAAQPseb/P7X+vx1DxgFvwGHAAAwHLU0+RNPU3e6upp1IHmo66eZgh1oLRnCHWgtCelOlAAAAAAAAAAAAAAAAAAAACA1PwDd5RNkgAAAQA=
H4sIAAAAAAAAAO3cSW4TQRQA0LbDPEggEGxgAxvGBeMZ2MMOIuAUiAMwSBG3QFyDI+QALBmPwAw/iqw0TSfx0EO56z3pK5Fjd5fql+Pqqt8uCgDY8n5cFB8iPo77bkm91Nu37D5Fv36O+JJo/6bePnZ2IfJ2MeJSS/k7Esc9WnPsyePb/Z1uXI6+vxJxVQ4G51nk9EXPed1ow/NKOyaPlWPN+GvVtejf65U+rstD3+OF6c3y2X0jnnNTbgdlls/uW/Gc2x3k/1yc4/yc5zkVrzttjAIsrbo5P8P1csE8uw4B6F7T6/9n4jhn5zzWsXjdcf/3G7XbGrD1/2GqW+9N1aLzR/43zXpvdd7d1Jzb9V//ulrvpT/luZv3XH7M3UiN/b/8mL93b3289XM90f5Pof6MnbVd/0vaUplDun6B7uxUl+09OHxvIsevE8uz/b/pzXPN1cWe0CL7v7TLPQB5sydEqsw951ddw+lrPbZaT+Cezm6ksoYDdKfp+yaa2K+x/wvLoem9P3UAy8W8kaaV5yLTuB/Pe7BNrBqXM0vhvo87M57/0bg+mJ01/rxZ44d8tXVPHwAA6bgbc7x7u8zzpnkOAADA6mgzJr+Tl3eVIC/yn7e3o3+DvMh/3uQ/b/KfN/O/vMl/3tYinkQ8jXjVc1sAmN7XcVF8i/heiR8RP9UEDd6vyPHviD+VKFaKYrTSd+s2lceocdmsceR4JWJPJfZG7Esk/+UxmtK4HIL90ZcHIg5W4lDE4Y77+USc72TNOctjNKVxSTfKY7SPcQkAAED7Hm7z/V8b8dg6YBZ8BxwAAMB81NPkTT1N3urqadSB5qOunmYZ6kBpzzLUgdKelOpAAQAAAAAAAAAAAAAAAAAAAFLzF/cNxJoAAAEA
</data>
</layer>
<layer name="4_roof_add" width="128" height="128">
<data encoding="base64" compression="gzip">
H4sIAAAAAAAAAO3azQnCMBgG4NbOIPTmCl3B0qu6jz9Xh9CL4BoOZ8RCfyhSL0qb54GXJLdAQvgSkiQAAAAAAAAAAAAA49wW3RYAAAAAmIf7wJvfxTsgAAAw0ibcH3YhW/cIgJ+5OnMBgIko67qlWjT9Ui0Tjaq35u19AACM9/rbM/S/BwAAAAAA2tbpO0BcVmk3AADM26MX4lKEmv9cp1D/R2cfcgg5hpz+PBcAAAAAAACmYZkN94lDnjXrntetfRCXPPs8BgAAAAAAAAAAAAAAAAAAAAAAAAAAAPjGExYgLsYAAAEA
H4sIAAAAAAAAAO3aSwrCMBQF0H7WIHTmFroFS6fqfgSnLkIngttwcVYs9EMpcaK0OQcueZ0VEsJLSJIAAAAAAAAAAAAAhLlnwxEAAAAAWIfHxJ3f1T0gAAAQaN+cH45NDs4RAD9zs+cCAAtRtX1LnXV1pZeJRj2a8/46AADCvd/2TL3vAQAAAACAvl36CRCXbToMAADr9hyFuJRNz39pU+r/o3Pq1ee//QUAAAAAAABLssmna+JQ5N28F+1oHcSlyOe/AQAAAAAAAAAAAAAAAAAAAAAAAAAAAL7xAixsQZcAAAEA
</data>
</layer>
<layer name="objects" width="128" height="128">