summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2009-01-18 16:27:13 +0000
committerJared Adams <jaxad0127@gmail.com>2009-01-18 16:27:13 +0000
commit6a92fbc8e20a211d85e0656cc86bb3569389b85b (patch)
tree2c209e08298c90c31c0bd9323043cc3d8f80c440
parentbb203b7c602ae52111828c7f89a5c10cd8e7a206 (diff)
parentd66e5af9f0024f897a8d239aa5100b30c487a45b (diff)
downloadserverdata-6a92fbc8e20a211d85e0656cc86bb3569389b85b.tar.gz
serverdata-6a92fbc8e20a211d85e0656cc86bb3569389b85b.tar.bz2
serverdata-6a92fbc8e20a211d85e0656cc86bb3569389b85b.tar.xz
serverdata-6a92fbc8e20a211d85e0656cc86bb3569389b85b.zip
Merge commit 'mainline/master'
-rw-r--r--conf/battle_athena.conf2
-rw-r--r--data/015-1.wlkbin16804 -> 16804 bytes
-rw-r--r--data/015-3.wlkbin0 -> 4100 bytes
-rw-r--r--data/resnametable.txt1
-rw-r--r--db/item_db.txt15
-rw-r--r--eathena-monitor.c2
-rwxr-xr-xeathena.sh2
-rw-r--r--news.txt28
-rw-r--r--npc/001-1_Tulimshar/bleacher.txt6
-rw-r--r--npc/001-1_Tulimshar/sandra.txt56
-rw-r--r--npc/009-1_Hurnscald/milly.txt2
-rw-r--r--npc/009-2_Hurnscald/selim.txt7
-rw-r--r--npc/015-1_Woodland/_import.txt1
-rw-r--r--npc/015-1_Woodland/_warps.txt1
-rw-r--r--npc/015-1_Woodland/alice.txt51
-rw-r--r--npc/015-1_Woodland/barrier.txt7
-rw-r--r--npc/015-3/_import.txt6
-rw-r--r--npc/015-3/_mobs.txt26
-rw-r--r--npc/015-3/_warps.txt3
-rw-r--r--npc/015-3/barrier.txt28
-rw-r--r--npc/015-3/katze.txt207
-rw-r--r--npc/015-3/pot.txt111
-rw-r--r--npc/_import.txt1
-rw-r--r--npc/functions/barber.txt20
-rw-r--r--tools/tmwcon/README27
-rw-r--r--tools/tmwcon/usage16
26 files changed, 542 insertions, 84 deletions
diff --git a/conf/battle_athena.conf b/conf/battle_athena.conf
index f40d2b7d..2b5a208a 100644
--- a/conf/battle_athena.conf
+++ b/conf/battle_athena.conf
@@ -149,7 +149,7 @@ pvp_exp: yes
// 0 = No penalty.
// 1 = Lose % of current level when killed.
// 2 = Lose % of total experience when killed.
-death_penalty_type: 1
+death_penalty_type: 0
// Base exp. penalty rate (Each 100 is 1% of their exp)
death_penalty_base: 100
diff --git a/data/015-1.wlk b/data/015-1.wlk
index f3e7bbc9..8d13a5b3 100644
--- a/data/015-1.wlk
+++ b/data/015-1.wlk
Binary files differ
diff --git a/data/015-3.wlk b/data/015-3.wlk
new file mode 100644
index 00000000..25ef46b1
--- /dev/null
+++ b/data/015-3.wlk
Binary files differ
diff --git a/data/resnametable.txt b/data/resnametable.txt
index c7c65430..02c33d6d 100644
--- a/data/resnametable.txt
+++ b/data/resnametable.txt
@@ -30,6 +30,7 @@
014-1.gat#014-1.wlk#
014-3.gat#014-3.wlk#
015-1.gat#015-1.wlk#
+015-3.gat#015-3.wlk#
016-1.gat#016-1.wlk#
017-1.gat#017-1.wlk#
018-1.gat#018-1.wlk#
diff --git a/db/item_db.txt b/db/item_db.txt
index 721db3ee..4cce8027 100644
--- a/db/item_db.txt
+++ b/db/item_db.txt
@@ -219,6 +219,9 @@
727, Iten, Iten, 3, 0, 0, 100, , , , , , , , , , , , {}, {}
// RESERVED
731, AssassinPants, Assassin Pants, 5, 10000, 3000, 10, , 5, , -5, 0, 10477567, 2, 1, , 0, 0, {}, {}
+// RESERVED
+734, BlackBoots, Black Boots, 5, 20000, 3000, 35, , 4, , -10, 0, 10477567, 2, 64, , 0, 0, {}, {}
+735, WhiteCottonBoots, WhiteCottonBoots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
#ID, Name, Label, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Job, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
1198, JackOSoul, Jack O Soul, 3, 100000, 1, 1, , , , , , , , , , , , {}, {}
@@ -361,3 +364,15 @@
2147, OrangeCottonHeadBand, Orange Cotton Head Band, 5, 3000, 500, 5, , 2, , 0, 0, 10477567, 2, 256, , 0, 0, {}, {}
2148, PurpleCottonHeadBand, Purple Cotton Head Band, 5, 3000, 500, 5, , 2, , 0, 0, 10477567, 2, 256, , 0, 0, {}, {}
2149, DarkGreenCottonHeadBand, Dark Green Cotton Head Band, 5, 3000, 500, 5, , 2, , 0, 0, 10477567, 2, 256, , 0, 0, {}, {}
+
+#ID, Name, Label, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Job, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2150, RedCottonBoots, Red Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2151, GreenCottonBoots, Green Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2152, DarkBlueCottonBoots, Dark Blue Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2153, YellowCottonBoots, Yellow Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2154, LightBlueCottonBoots, Light Blue Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2155, PinkCottonBoots, Pink Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2156, BlackCottonBoots, Black Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2157, OrangeCottonBoots, Orange Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2158, PurpleCottonBoots, Purple Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {}
+2159, DarkGreenCottonBoots, Dark Green Cotton Boots, 5, 2000, 500, 10, , 1, , 1, 0, 10477567, 2, 64, , 0, 0, {}, {} \ No newline at end of file
diff --git a/eathena-monitor.c b/eathena-monitor.c
index 3ab7f0f2..8e9d985c 100644
--- a/eathena-monitor.c
+++ b/eathena-monitor.c
@@ -79,7 +79,7 @@ int read_config(char *filename) {
int errors = 0;
if ( !(input = fopen(filename,"r")) && !(input = fopen (config, "r"))) {
- fprintf (stderr, "ERROR: Config file doesn't exist (%s and %s), using builtin defaults\n",filename,CONFIG);
+ fprintf (stderr, "ERROR: Config file doesn't exist (%s and %s), using builtin defaults\n", filename, config);
return -1;
}
diff --git a/eathena.sh b/eathena.sh
index edfabf9c..31c3a860 100755
--- a/eathena.sh
+++ b/eathena.sh
@@ -20,7 +20,7 @@ cd ${SRVHOMEDIR}
eathena_start() {
if [ -x ${SRVHOMEDIR}/eathena-monitor ];
then echo "Starting eathena monitor..."
- ${SRVHOMEDIR}/eathena-monitor
+ ${SRVHOMEDIR}/eathena-monitor ${SRVHOMEDIR}/conf/eathena-monitor.conf
else echo "Eathena monitor binary is not executable or not found."
fi
}
diff --git a/news.txt b/news.txt
index 798fc3f0..f7dd2f13 100644
--- a/news.txt
+++ b/news.txt
@@ -1,6 +1,6 @@
##3 Open Testing on Official Test Server
##3 2009-01-04 through 2009-01-11
-
+
##0 A testing period on enigma (our official test
##0 server) has started. Experience and drop rates
##0 are 10 times higher than normal during this
@@ -10,31 +10,31 @@
##0 currently supported clients are welcome. Please
##0 direct all feedback to the appropriate thread on
##0 the forums.
-
+
##0 To participate in this testing, set your server
##0 to enigma.dy.fi. Enigma shouldn't be used between
##0 open test periods, as the content may be in an
##0 unusable state. Characters and accounts may be
##0 wiped at any time between testing periods.
-
+
##3 Monster Mutations and Experience Point Changes
##3 2008-12-10
-
+
##0 We have rebalanced monster experience points
-##0 and added two new mechanisms to make the game
-##0 more challenging: monster mutations, by which
-##0 monster attributes (and experience points) are
-##0 slightly modified for each individual monster,
-##0 and increased boni for shared kills: killing a
-##0 monster with a group of fighters now yields
-##0 significantly more experience points than
-##0 killing it alone. To adjust for the latter
+##0 and added two new mechanisms to make the
+##0 game more challenging: monster mutations, by
+##0 which monster attributes (and experience points)
+##0 are slightly modified for each individual
+##0 monster, and increased boni for shared kills:
+##0 killing a monster with a group of fighters now
+##0 yields significantly more experience points than
+##0 killing it alone. To adjust for the latter
##0 increase, we have reduced base experience points
##0 for low and medium-level monsters, though we
##0 expect levelling to be easier overall.
-
+
##2 The TMW development team
-
+
##3 Mines and weddings!
##3 2008-10-11
diff --git a/npc/001-1_Tulimshar/bleacher.txt b/npc/001-1_Tulimshar/bleacher.txt
index 48b5c6c6..67ea1497 100644
--- a/npc/001-1_Tulimshar/bleacher.txt
+++ b/npc/001-1_Tulimshar/bleacher.txt
@@ -29,6 +29,7 @@ L_bleach_menu:
"Silk robe", L_robe,
"Cotton headband", L_cotton_headband,
"Desert hat", L_desert_hat,
+ "Cotton boots", L_cotton_boots,
"Nevermind", -;
goto L_close;
@@ -74,6 +75,11 @@ L_desert_hat:
set @normal, 723;
set @dyeBase, 2130;
goto L_choose_color;
+
+L_cotton_boots:
+ set @normal, 735;
+ set @dyeBase, 2150;
+ goto L_choose_color;
L_choose_color:
mes "[Candide]";
diff --git a/npc/001-1_Tulimshar/sandra.txt b/npc/001-1_Tulimshar/sandra.txt
index 048bfa19..314e009a 100644
--- a/npc/001-1_Tulimshar/sandra.txt
+++ b/npc/001-1_Tulimshar/sandra.txt
@@ -4,31 +4,31 @@
if(Scorp == 2) goto L_Done;
if(Scorp == 1) goto L_Progress;
- set @TEMP,rand(3);
+ set @TEMP, rand(4);
+ if(@TEMP == 0) goto L_Opening0;
if(@TEMP == 1) goto L_Opening1;
if(@TEMP == 2) goto L_Opening2;
if(@TEMP == 3) goto L_Opening3;
- if(@TEMP == 0) goto L_Opening4;
-L_Opening1:
+L_Opening0:
mes "[Sandra]";
- mes "\"In the outskirts of Tulimshar, there wanders a red scorpion. I need a favor, please help me. Will you?\"";
+ mes "\"In the outskirts of Tulimshar, there are some scorpions. I need a favor, please help me. Will you?\"";
next;
goto L_Ask;
-L_Opening2:
+L_Opening1:
mes "[Sandra]";
- mes "\"When you venture in the outskirts of Tulimshar, you can spot a red scorpion. Will you help me kill one?\"";
+ mes "\"When you venture in the outskirts of Tulimshar, you can spot scorpions. Will you help me kill some?\"";
next;
goto L_Ask;
-L_Opening3:
+L_Opening2:
mes "[Sandra]";
- mes "\"The red scorpion stinger carries many properties used in potions. Will you get some for me?\"";
+ mes "\"The scorpion stinger carries many properties used in potions. Will you get some for me?\"";
next;
goto L_Ask;
-L_Opening4:
+L_Opening3:
mes "[Sandra]";
mes "\"You look sturdy enough, will you help me get something?\"";
next;
@@ -40,26 +40,26 @@ L_Ask:
"No", L_No;
L_Yes:
- if(@TEMP == 1) goto L_Req1;
- if(@TEMP == 2) goto L_Req2;
- if(@TEMP == 3) goto L_Req3;
+ set @TEMP, rand(3);
if(@TEMP == 0) goto L_Req1;
+ if(@TEMP == 1) goto L_Req2;
+ if(@TEMP == 2) goto L_Req3;
-L_Req1:
+L_Req0:
mes "[Sandra]";
- mes "\"I need you to slaughter the red scorpion found outside of Tulimshar and bring me 5 [Red Stingers].\"";
+ mes "\"I need 5 [Scorpion Stingers] and 1 [Red Scoprion Stinger].\"";
next;
goto L_Set;
-L_Req2:
+L_Req1:
mes "[Sandra]";
- mes "\"I heard a while ago that the stinger of a red scorpion can be used for medical purposes. I need you to help me get 5 [Red Stingers].\"";
+ mes "\"I heard a while ago that scorpion stingers can be used for medical purposes. I need you to help me get 5 [Scorpion Stingers] and 1 [Red Scoprion Stinger].\"";
next;
goto L_Set;
-L_Req3:
+L_Req2:
mes "[Sandra]";
- mes "\"Bring me 5 [Red Stingers] and i will reward you greatly.\"";
+ mes "\"Bring me 5 [Scorpion Stingers] and 1 [Red Scoprion Stinger]. I'll give you something if you do.\"";
next;
goto L_Set;
@@ -70,23 +70,25 @@ L_Set:
close;
L_Progress:
- if (countitem(517) >= 5) goto L_Have;
- mes "[Sandra]";
- mes "\"Please hurry and bring me 5 [Red Stingers].\"";
- close;
-
-L_Have:
+ if (countitem(507) < 5) goto L_NotEnough;
+ if (countitem(517) < 1) goto L_NotEnough;
mes "[Sandra]";
mes "\"Excellent!";
- mes "You brought me 5 [Red Stingers]!\"";
+ mes "You brought me 5 [Scorpion Stingers] and 1 [Red Scoprion Stinger]!\"";
getinventorylist;
- if (@inventorylist_count == 100 && countitem(517) > 5) goto L_TooMany;
- delitem 517, 5;
+ if ((@inventorylist_count - (countitem(507) == 5) - (countitem(517) == 1)) > 99 - (countitem(1199) == 0)) goto L_TooMany;
+ delitem 507, 5;
+ delitem 517, 1;
getitem 1200, 1;
getitem 1199, 100;
set Scorp, 2;
close;
+L_NotEnough:
+ mes "[Sandra]";
+ mes "\"Please hurry and bring me 5 [Scorpion Stingers] and 1 [Red Scoprion Stinger].\"";
+ close;
+
L_Done:
mes "[Sandra]";
mes "\"Thank you for all your help!\"";
diff --git a/npc/009-1_Hurnscald/milly.txt b/npc/009-1_Hurnscald/milly.txt
index 82b5cb6a..2935d314 100644
--- a/npc/009-1_Hurnscald/milly.txt
+++ b/npc/009-1_Hurnscald/milly.txt
@@ -9,7 +9,7 @@ L_NohMask:
menu
"Have you seen anything strange lately?", L_NohMask_Strange,
"Do you know anything about the recent robberies?", L_NohMask_Robbery,
- "Yes, it is.", -;
+ "Hello", -;
close;
L_NohMask_Strange:
diff --git a/npc/009-2_Hurnscald/selim.txt b/npc/009-2_Hurnscald/selim.txt
index cc7a8863..14eac5b9 100644
--- a/npc/009-2_Hurnscald/selim.txt
+++ b/npc/009-2_Hurnscald/selim.txt
@@ -28,6 +28,7 @@ L_clothes_choice:
"Silk robe", L_robe,
"Cotton headband", L_headband,
"Desert hat", L_desert_hat,
+ "Cotton boots", L_cottonboots,
"I'm fine for now, thanks.", -;
close;
@@ -93,6 +94,12 @@ L_desert_hat:
set @name$, "desert hat";
goto L_picked_item;
+L_cottonboots:
+ set @del, 735;
+ set @new, 2150;
+ set @name$, "cotton boots";
+ goto L_picked_item;
+
L_picked_item:
if (countitem(@del) == 0) goto L_havenone;
L_colour:
diff --git a/npc/015-1_Woodland/_import.txt b/npc/015-1_Woodland/_import.txt
index d92e0749..b7b63b22 100644
--- a/npc/015-1_Woodland/_import.txt
+++ b/npc/015-1_Woodland/_import.txt
@@ -2,4 +2,5 @@ map: 015-1.gat
npc: npc/015-1_Woodland/_mobs.txt
npc: npc/015-1_Woodland/_warps.txt
npc: npc/015-1_Woodland/alice.txt
+npc: npc/015-1_Woodland/barrier.txt
npc: npc/015-1_Woodland/monsters.txt
diff --git a/npc/015-1_Woodland/_warps.txt b/npc/015-1_Woodland/_warps.txt
index c6ca1856..75e377a4 100644
--- a/npc/015-1_Woodland/_warps.txt
+++ b/npc/015-1_Woodland/_warps.txt
@@ -1,3 +1,4 @@
// 015-1 Woodland warps
015-1.gat,93,55 warp ToWoodland -1,0,010-1.gat,15,55
+015-1.gat,59,31 warp to 015_3 -1,-1,015-3.gat,31,42
diff --git a/npc/015-1_Woodland/alice.txt b/npc/015-1_Woodland/alice.txt
index b9ce5831..629cfed5 100644
--- a/npc/015-1_Woodland/alice.txt
+++ b/npc/015-1_Woodland/alice.txt
@@ -1,16 +1,23 @@
-//#################################################################################
-//# #
-//# A herb collector giving the players some hints about finding and brewing #
-//# herbs #
-//# #
-//#################################################################################
-
+// A herb collector giving the players some hints about finding and brewing
+// herbs.
015-1.gat,52,53,0 script Alice 106, {
mes "[Alice]";
mes "\"Greeting, fellow wanderer.";
mes "Are you collecting herbs, too?\"";
next;
+ if (LastHiss == 2 && Katze < 4)
+ menu
+ "Yes, sure.", L_findmany,
+ "Herbs?", L_herbs,
+ "Nope, just enjoying the scenery.", close,
+ "I saw the cat, but it doesn't like me.", L_cat;
+ if (LastHiss == 1)
+ menu
+ "Yes, sure.", L_findmany,
+ "Herbs?", L_herbs,
+ "Nope, just enjoying the scenery.", close,
+ "There is a monster in that cave!", L_cave;
menu
"Yes, sure.", L_findmany,
"Herbs?", L_herbs,
@@ -35,7 +42,6 @@ L_plenty:
mes "Good brewers get much better healing potions from them.";
mes "The most important characteristic of a good brewer is intelligence.\"";
close;
-
L_herbs:
mes "[Alice]";
@@ -43,4 +49,33 @@ L_herbs:
mes "Caul in Hurnscald found a way to brew magical healing potions from them, and I have heard a rumor that they may also be good for making colors.";
mes "Now everyone is running around in the woods to harvest the herbs.\"";
close;
+
+L_cave:
+ mes "[Alice]";
+ mes "\"Haha, that is no monster! It's just a sweet little cat.\"";
+ next;
+ menu
+ "But it wanted to kill me!", -,
+ "A cat!? I'll go and kill it!", -;
+ mes "[Alice]";
+ mes "\"No no, I'm sure it was only frightened. It gets upset when you've got clothes or weapons on you.\"";
+ next;
+ menu
+ "Ok, let's try it without clothes then", -,
+ "What a stupid cat!", -;
+ mes "[Alice]";
+ mes "\"Please don't do her any harm. See you later!\"";
+ next;
+ close;
+
+L_cat:
+ mes "[Alice]";
+ mes "\"You would have to tame her first. Maybe she's thirsty or hungry. Cats also tend to get bored without something to play with. Good luck!\"";
+ next;
+ menu "Thank you so much!", close,
+ "Are you crazy? Taming a cat?", -;
+ mes "[Alice]";
+ mes "\"Well, it's up to you.\"";
+ next;
+ close;
}
diff --git a/npc/015-1_Woodland/barrier.txt b/npc/015-1_Woodland/barrier.txt
new file mode 100644
index 00000000..beeeb976
--- /dev/null
+++ b/npc/015-1_Woodland/barrier.txt
@@ -0,0 +1,7 @@
+// This barrier is for checking whether the player went outside after
+// progressing with the cat quest.
+
+015-1.gat,59,32,0 script #CatOutsideBarrier 127,1,1,{
+ set KatzeBeenOutside, 1;
+ close;
+}
diff --git a/npc/015-3/_import.txt b/npc/015-3/_import.txt
new file mode 100644
index 00000000..ad76971d
--- /dev/null
+++ b/npc/015-3/_import.txt
@@ -0,0 +1,6 @@
+map: 015-3.gat
+npc: npc/015-3/_mobs.txt
+npc: npc/015-3/_warps.txt
+npc: npc/015-3/barrier.txt
+npc: npc/015-3/katze.txt
+npc: npc/015-3/pot.txt
diff --git a/npc/015-3/_mobs.txt b/npc/015-3/_mobs.txt
new file mode 100644
index 00000000..1c1d9941
--- /dev/null
+++ b/npc/015-3/_mobs.txt
@@ -0,0 +1,26 @@
+// 015-3 mobs
+
+015-3.gat,21,25,3,4 monster Bats 1017,2,0,0,Mob015-3::On1017
+015-3.gat,29,31,2,2 monster Maggots 1002,2,0,0,Mob015-3::On1002
+015-3.gat,23,19,1,1 monster Maggots 1002,1,0,0,Mob015-3::On1002
+015-3.gat,40,19,1,1 monster Spider 1012,1,0,0,Mob015-3::On1012
+
+
+015-3.gat,0,0,0 script Mob015-3 -1,{
+On1002:
+ set @mobID, 1002;
+ callfunc "MobPoints";
+ break;
+
+On1012:
+ set @mobID, 1012;
+ callfunc "MobPoints";
+ break;
+
+On1017:
+ set @mobID, 1017;
+ callfunc "MobPoints";
+ break;
+
+ end;
+}
diff --git a/npc/015-3/_warps.txt b/npc/015-3/_warps.txt
new file mode 100644
index 00000000..8b8a83d7
--- /dev/null
+++ b/npc/015-3/_warps.txt
@@ -0,0 +1,3 @@
+// 015-3 warps
+
+015-3.gat,31,43 warp to 015-1 -1,-1,015-1.gat,59,32
diff --git a/npc/015-3/barrier.txt b/npc/015-3/barrier.txt
new file mode 100644
index 00000000..3abffbb1
--- /dev/null
+++ b/npc/015-3/barrier.txt
@@ -0,0 +1,28 @@
+// You can only enter the cat cave naked, otherwise the cat's reaction scares
+// you away. You can also get in while wearing the cat ears.
+
+015-3.gat,31,42,0 script #CatCaveBarrier 127,1,1,{
+
+ if (getequipid(equip_head) != 1217 && (getequipid(equip_head) > 0 ||
+ getequipid(equip_shield) > 0 ||
+ getequipid(equip_hand1) > 0 ||
+ getequipid(equip_hand2) > 0 ||
+ getequipid(equip_gloves) > 0 ||
+ getequipid(equip_shoes) > 0 ||
+ getequipid(equip_misc1) > 0 ||
+ getequipid(equip_misc2) > 0 ||
+ getequipid(equip_torso) > 0 ||
+ getequipid(equip_legs) > 0)) goto L_Not_Naked;
+
+ if (LastHiss != 2) mes "\"Hissss...\"";
+ set LastHiss, 2;
+ close;
+
+L_Not_Naked:
+ warp "015-1.gat", 60, 32;
+ set LastHiss, 1;
+ mes "\"GRAAUWL! Hissss...\"";
+ mes "Scared of what you hear, you flee back outside.";
+ next;
+ close;
+}
diff --git a/npc/015-3/katze.txt b/npc/015-3/katze.txt
new file mode 100644
index 00000000..c24a9f80
--- /dev/null
+++ b/npc/015-3/katze.txt
@@ -0,0 +1,207 @@
+// Katze doesn't like the player at first, needs following:
+//
+// 1. Some milk
+// 2. Some steak or chicken leg
+// 3. Some fur
+//
+// Now the cat starts to speak, still needs:
+//
+// 4. Some wood for scratching
+// 5. Some stuff for making somethings nice for the player:
+//
+// * 2 Snake skins
+// * 2 Snake tongues
+// * 2 Maggot slimes
+// * 2 White furs
+// * 2 Hard spikes
+// * 2 Tiny potions
+
+015-3.gat,32,25,0 script Katze 172, {
+
+ if (Katze == 1 && KatzeBeenOutside == 1) goto L_NeedsFood;
+ if (Katze == 1) goto L_PreNeedsFood;
+
+ if (Katze == 2 && KatzeBeenOutside == 1) goto L_NeedsFur;
+ if (Katze == 2) goto L_PreNeedsFur;
+
+ if (Katze == 3) goto L_NeedsWood;
+
+ if (Katze == 4 && KatzeBeenOutside == 1) goto L_NeedsStuff;
+ if (Katze == 4) goto L_PreNeedsStuff;
+
+ if (Katze == 5) goto L_NeedsStuff2;
+
+ if (Katze == 6 && KatzeBeenOutside == 1) goto L_GainEars;
+ if (Katze == 6) goto L_PreGainEars;
+
+ if (Katze == 7) goto L_Finished;
+
+L_NeedsMilk:
+ mes "[Katze]";
+ mes "\"Meow.\"";
+ next;
+ menu "Throw a stone at the cat", L_ThrowStone,
+ "Leave the cat alone", -;
+ close;
+
+L_ThrowStone:
+ set Katze, 0;
+ // Maybe make sure not to kill the player, since this has an issue. The
+ // text below will remain in the NPC dialog until it is used again.
+ heal -100,0;
+ warp "015-1.gat", 60, 32;
+ mes "\"GRAAUWL! Hissss...\"";
+ mes "Yikes, the cat attacked you! Your whole body is scratched. Maybe throwing a stone wasn't such a great idea...";
+ next;
+ close;
+
+L_PreNeedsFood:
+L_NeedsFood:
+ mes "[Katze]";
+ mes "\"Meow, prrrr...\"";
+ next;
+ menu "Throw a stone at the cat", L_ThrowStone,
+ "Leave the cat alone", -;
+ close;
+
+L_PreNeedsFur:
+L_NeedsFur:
+ mes "[Katze]";
+ mes "\"Prrr. Meow, prrr...\"";
+ next;
+
+ if (countitem(611) > 0) // White Fur
+ menu "Make funny movements with the fur near the ground", L_MoveFur,
+ "Throw a stone at the cat", L_ThrowStone,
+ "Leave the cat alone", -;
+ if (countitem(611) == 0)
+ menu "Throw a stone at the cat", L_ThrowStone,
+ "Leave the cat alone", -;
+ close;
+
+L_MoveFur:
+ delitem 611, 1; // Cat takes the white fur
+ set Katze, 3;
+ mes "The cat jumps at the fur! You quickly let go of it. The cat happily returns to its spot, carrying the fur in its mouth.";
+ next;
+ mes "The cat drops the fur and looks at you with half opened eyes. Suddenly she starts talking, and says: \"That was very kind of you.\" She seems to be smiling.";
+ next;
+ close;
+
+L_NeedsWood:
+ mes "[Katze]";
+ mes "\"Prrrr, now I'd like something to sharpen my claws on.\"";
+ next;
+
+ if (countitem(569) > 0) // Raw log
+ menu "Want this piece of wood?", L_GiveWood,
+ "Ok, see you later", -;
+ close;
+
+L_GiveWood:
+ mes "[Katze]";
+ mes "\"Sure! Please put it next to the pot.\"";
+ next;
+ close;
+
+L_PreNeedsStuff:
+ mes "The cat is still eyeing the piece of wood. She probably needs to be left alone for a bit again.";
+ next;
+ close;
+
+L_NeedsStuff:
+ set Katze, 5;
+ mes "[Katze]";
+ mes "\"You've been really kind to me. I can make you something nice, but I will need";
+ mes "2 snake skins,";
+ mes "2 snake tongues,";
+ mes "2 maggot slimes,";
+ mes "2 white furs,";
+ mes "2 hard spikes and";
+ mes "2 tiny healing potions.\"";
+ next;
+ close;
+
+L_NeedsStuff2:
+ mes "[Katze]";
+ mes "\"Did you bring what I asked you for?\"";
+ next;
+ menu "Look here", L_CatChecksStuff,
+ "What do you need again?", L_WhatsNeeded,
+ "No, I haven't got everything yet", -;
+ close;
+
+L_WhatsNeeded:
+ mes "[Katze]";
+ mes "\"Actually, you should have remembered yourself.\"";
+ next;
+ menu "Please tell me", L_Please,
+ "Never mind", -;
+ close;
+
+L_Please:
+ mes "[Katze]";
+ mes "\"Alright... [the cat glares at you] it was";
+ mes "2 snake skins,";
+ mes "2 snake tongues,";
+ mes "2 maggot slimes,";
+ mes "2 white furs,";
+ mes "2 hard spikes and";
+ mes "2 tiny healing potions.\"";
+ next;
+ close;
+
+L_CatChecksStuff:
+ if (countitem(641) > 1 && // Snake skin
+ countitem(710) > 1 && // Snake tongue
+ countitem(505) > 1 && // Maggot slime
+ countitem(611) > 1 && // White fur
+ countitem(613) > 1 && // Hard spike
+ countitem(684) > 1) // Tiny healing potion
+ goto L_GiveStuff;
+ mes "[Katze]";
+ mes "\"You don't seem to have everything yet. Come back later when you do.\"";
+ next;
+ close;
+
+L_GiveStuff:
+ delitem 641, 2;
+ delitem 710, 2;
+ delitem 505, 2;
+ delitem 611, 2;
+ delitem 613, 2;
+ delitem 684, 2;
+ set Katze, 6;
+ set KatzeBeenOutside, 0;
+ mes "[Katze]";
+ mes "\"Nicely done! Now leave me alone for a while, I need some time to prepare your present.\"";
+ next;
+ close;
+
+L_PreGainEars:
+ mes "[Katze]";
+ mes "\"Please leave me alone for a while, so I can prepare your present.\"";
+ next;
+ close;
+
+L_GainEars:
+ getitem 1217, 1; // Cat ears
+ set @xpval, 5000;
+ getexp @xpval, 0;
+ set Katze, 7;
+ mes "[Katze]";
+ mes "\"Look what I made for you! It makes you look a bit like me! Maybe it will give you a feeling of what it is like to be a cat.\"";
+ mes "The cat winks at you.";
+ mes "[You gain " + @xpval + " experience points]";
+ next;
+ close;
+
+L_Finished:
+ mes "[Katze]";
+ if (getequipid(equip_head) == 1217) // Cat ears
+ mes "\"Meow, fellow cat.\"";
+ if (getequipid(equip_head) != 1217)
+ mes "\"Meow. Lost your ears?\"";
+ next;
+ close;
+}
diff --git a/npc/015-3/pot.txt b/npc/015-3/pot.txt
new file mode 100644
index 00000000..bf3bd945
--- /dev/null
+++ b/npc/015-3/pot.txt
@@ -0,0 +1,111 @@
+// The pot where the player can deposit stuff for the cat.
+
+015-3.gat,37,29,0 script Pot 127, {
+
+ if (Katze > 0)
+ mes "It's that old pot again.";
+ if (Katze == 0)
+ mes "It's a pot.";
+ next;
+
+ if (Katze == 1 && KatzeBeenOutside == 1) goto L_NeedsFood;
+ if (Katze == 1) goto L_HasMilk;
+
+ if (Katze == 2 && KatzeBeenOutside == 1) goto L_NeedsFur;
+ if (Katze == 2) goto L_HasFood;
+
+ if (Katze == 3) goto L_NeedsWood;
+
+ if (Katze == 4 && KatzeBeenOutside == 0) goto L_HasWood;
+ if (Katze >= 4) goto L_Finished;
+
+L_NeedsMilk:
+ if (countitem(527) > 0)
+ menu
+ "Pour in some milk", L_GiveMilk,
+ "Leave it alone", -;
+ close;
+
+L_GiveMilk:
+ delitem 527, 1;
+ set Katze, 1;
+ set KatzeBeenOutside, 0;
+ close;
+
+L_HasMilk:
+ mes "There is milk in it.";
+ next;
+ close;
+
+L_NeedsFood:
+ mes "The milk is gone!";
+ next;
+
+ if (countitem(562) > 0 && countitem(676) > 0)
+ menu
+ "Put in a chicken leg", L_GiveChicken,
+ "Put in a steak", L_GiveSteak,
+ "Leave it alone", -;
+ if (countitem(562) > 0 && countitem(676) == 0)
+ menu
+ "Put in a chicken leg", L_GiveChicken,
+ "Leave it alone", -;
+ if (countitem(562) == 0 && countitem(676) > 0)
+ menu
+ "Put in a steak", L_GiveSteak,
+ "Leave it alone", -;
+ close;
+
+L_GiveChicken:
+ delitem 562, 1;
+ set Katze, 2;
+ set KatzeBeenOutside, 0;
+ close;
+
+L_GiveSteak:
+ delitem 676, 1;
+ set Katze, 2;
+ set KatzeBeenOutside, 0;
+ close;
+
+L_HasFood:
+ mes "There is some food in it.";
+ next;
+ close;
+
+L_NeedsFur:
+ mes "And it's empty!";
+ next;
+
+ if (countitem(611) > 0) // White Fur
+ menu "Put a white fur next to the pot", L_GiveFur,
+ "Leave it alone", -;
+ close;
+
+L_GiveFur:
+ mes "You put down the fur, but the cat doesn't seem to take any notice. Maybe there's something else you could do. You pick the fur up again.";
+ next;
+ close;
+
+L_NeedsWood:
+ if (countitem(569) > 0) // Raw log
+ menu "Put a wooden log next to the pot", L_GiveWood,
+ "Leave it alone", -;
+ close;
+
+L_GiveWood:
+ delitem 569, 1;
+ set Katze, 4;
+ set KatzeBeenOutside, 0;
+ mes "You put the wooden log next to the pot. The cat eyes it suspiciously, but remains on her spot.";
+ next;
+ close;
+
+L_HasWood:
+ mes "A wooden log is patiently lying next to it.";
+ next;
+ close;
+
+L_Finished:
+ close;
+}
diff --git a/npc/_import.txt b/npc/_import.txt
index 626ecc37..142fd3ec 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -29,6 +29,7 @@ import: npc/013-3_Cave/_import.txt
import: npc/014-1_Woodland/_import.txt
import: npc/014-3_Cave/_import.txt
import: npc/015-1_Woodland/_import.txt
+import: npc/015-3/_import.txt
import: npc/016-1_Woodland/_import.txt
import: npc/017-1_Woodland_hills/_import.txt
import: npc/018-1_Woodland_mining_camp/_import.txt
diff --git a/npc/functions/barber.txt b/npc/functions/barber.txt
index 0edaab73..57c3c598 100644
--- a/npc/functions/barber.txt
+++ b/npc/functions/barber.txt
@@ -6,10 +6,9 @@ function script Barber {
"Change my color", L_Color,
"Nah, I'm fine", L_Done;
+ goto L_Done;
+
L_Style:
- if (Sex == 0) goto L_Style_Female;
-
-L_Style_Male:
menu
"Bald", -,
"Ponytail", -,
@@ -18,27 +17,18 @@ L_Style_Male:
"Emo", -,
"Mohawk", -,
"Pompadour", -,
- "Center parting", -,
- "Supprise me", -,
- "Nah, I'm fine", close;
- goto L_Process_Style;
-
-L_Style_Female:
- menu
- "Bald", -,
+ "Center parting/Short and slick", -,
"Long and slick", -,
"Short and curly", -,
- "Ponytail", -,
- "Pigtails", -,
"Long and curly", -,
+ "Pigtails", -,
"Parted", -,
- "Short and slick", -,
"Supprise me", -,
"Nah, I'm fine", L_Done;
L_Process_Style:
set @style, @menu - 1;
- if (@style == 8) set @style, rand(8);
+ if (@style == 13) set @style, rand(13);
setlook 1, @style;
return;
diff --git a/tools/tmwcon/README b/tools/tmwcon/README
new file mode 100644
index 00000000..a48fc836
--- /dev/null
+++ b/tools/tmwcon/README
@@ -0,0 +1,27 @@
+Dependencies:
+
+ * ant (recent version)
+ * J2SE 5 or higher (or equivalent)
+ * Tiled or Tiled core jar file (in this directory)
+ * TMW Tiled plugin jar (in this directory or the plugins directory)
+
+Compilation:
+
+ Run ant from this directory.
+
+Usage:
+
+ * Create a directory called tmwdata containing the client data
+ (can be symlink)
+
+ * Output will be in a directory called server-data
+ (usually you make this a symlink to eathena-data)
+
+ * If the aforementioned jar files are in class path you can run the
+ converter jar file directly:
+
+ java -jar converter.jar
+
+ Otherwise, the Converter class can handle that for you:
+
+ java Converter
diff --git a/tools/tmwcon/usage b/tools/tmwcon/usage
deleted file mode 100644
index f8fc8d8b..00000000
--- a/tools/tmwcon/usage
+++ /dev/null
@@ -1,16 +0,0 @@
-Dependancies:
- ant (recent version)
- J2SE 5 or higher (or equivalent)
- Tiled or Tiled core jar file (in this directory)
- TMW Tiled plugin jar (in this directory or the plugins directory)
-
-Compilation:
- Run ant from this directory.
-
-Usage:
- a directory called tmwdata containing the client data
- output will be in a directory called server-data
- if the aforementioned jar files are in class path you can run the converter jar file directly:
- java jar converter.jar
- otherwise, the Converter class can handle that for you:
- java Converter