From 02752bb8c4e11935d1fdea5dee0a48a267eef4f2 Mon Sep 17 00:00:00 2001
From: Jessica Tölke <jtoelke@mail.upb.de>
Date: Fri, 22 Apr 2011 21:30:25 +0200
Subject: some changes in towel event npc: using gem powders for towel dying
 adding generic answers as spellinvocations

---
 conf/magic.conf.template     | 113 ++++++++++++++++++---
 npc/003-1_Beach/stranger.txt | 234 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 293 insertions(+), 54 deletions(-)

diff --git a/conf/magic.conf.template b/conf/magic.conf.template
index 931fb678..f208b440 100644
--- a/conf/magic.conf.template
+++ b/conf/magic.conf.template
@@ -583,7 +583,7 @@ SPELL lay-on-hands (target : STRING) : "#L10" =
                             )
                       ELSE (target = pc(target);
                             needed = max_hp(target) - hp(target);)
-                    
+
                     pay_fraction = max(80, 200 - (vit(caster) + (spellpower / 10))); # Pay at least 40%
                     payment = (needed * pay_fraction) / 200;
                     available = hp(caster) - (max_hp(caster) / 20);
@@ -685,7 +685,7 @@ SPELL magic-knuckles : "#W12" =
           REQUIRE skill(caster, MAGIC) > level,
           REQUIRE skill(caster, school) > level,
           (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["Beer"]))
-          => 
+          =>
              EFFECT CALL adjust_spellpower(WAR);
                     str = str(caster);
                     CALL install_melee_spell(10 + spellpower / 10, 1300, 34);
@@ -786,13 +786,13 @@ PROCEDURE shear-drop2(target, target2, item, prob, item2, prob2) =
                      THEN (IF (score < prob)
                            THEN drop_item_for(place, item, 1, 60000, caster, 5000);
                            ELSE CALL shear-drop(target, target2, item2, prob2 + prob);)
-          
+
 PROCEDURE shear-drop3(target, target2, item, prob, item2, prob2, item3, prob3) =
                      IF (target = name || target2 = name)
                      THEN (IF (score < prob)
                            THEN drop_item_for(place, item, 1, 60000, caster, 5000);
                            ELSE CALL shear-drop2(target, target2, item2, prob2 + prob, item3, prob3 + prob);)
-          
+
 
 SPELL shear : "#N14" =
       LET level = 1
@@ -823,7 +823,7 @@ SPELL shear : "#N14" =
                          THEN { set @value, 1; callfunc "QuestSagathaHappy"; };
                     )
 
-      
+
 
 SPELL barrier (target : PC) : "#A10" =
       LET level = 1
@@ -904,7 +904,7 @@ SPELL reveal : "#G11" =
              DO IF has_shroud(target) && level(caster) * 2 > level(target)
                 THEN (unshroud(target);
                       sfx(target, SFX_DEFAULT, 500);)
-                      
+
 
 SPELL enchant-lifestone : "#G12" =
       LET level = 1
@@ -1022,7 +1022,7 @@ SPELL fire-ball : "#W22" =
                                   CALL elt_damage (target, (damage * 3) / divisor, (damage_bonus * 3) / divisor, ELT_WATER, ELT_FIRE, 15);
                             )
 
-SPELL summon-partner : "#A23" = 
+SPELL summon-partner : "#A23" =
       LET level = 2
           school = ASTRAL
       IN (MANA 30, CASTTIME 2000,
@@ -1055,7 +1055,7 @@ SPELL summon-partner : "#A23" =
 # Level 4 spells
 #--------------------------------------------------------------------------------
 
-SPELL shroud : "#N40" = 
+SPELL shroud : "#N40" =
       LET level = 4
           school = NATURE
       IN (MANA 40, CASTTIME 400,
@@ -1064,7 +1064,7 @@ SPELL shroud : "#N40" =
 	=> EFFECT CALL default_effect();
                   shroud(caster, 0x04);
 
-SPELL teleport (destination : STRING) : "#A40" = 
+SPELL teleport (destination : STRING) : "#A40" =
       LET level = 4
           school = ASTRAL
       IN (MANA 80, CASTTIME 400,
@@ -1156,27 +1156,27 @@ PROCEDURE debug_mod(name, delta) =
           ELSE IF (name = "elanore-sub") THEN CALL debug_xmod("QUEST_MAGIC2", 0xf, 12, delta);
           ELSE message(caster, "Unknown");
 
-SPELL debug-up1 (name : STRING) : "debug+1" = 
+SPELL debug-up1 (name : STRING) : "debug+1" =
 	REQUIRE DEBUG
         => EFFECT CALL debug_mod(name, 1);
 
-SPELL debug-down1 (name : STRING) : "debug-1" = 
+SPELL debug-down1 (name : STRING) : "debug-1" =
 	REQUIRE DEBUG
         => EFFECT CALL debug_mod(name, 0 - 1);
 
-SPELL debug-up16 (name : STRING) : "debug+16" = 
+SPELL debug-up16 (name : STRING) : "debug+16" =
 	REQUIRE DEBUG
         => EFFECT CALL debug_mod(name, 16);
 
-SPELL debug-down16 (name : STRING) : "debug-16" = 
+SPELL debug-down16 (name : STRING) : "debug-16" =
 	REQUIRE DEBUG
         => EFFECT CALL debug_mod(name, 0 - 16);
 
-SPELL debug-up256 (name : STRING) : "debug+256" = 
+SPELL debug-up256 (name : STRING) : "debug+256" =
 	REQUIRE DEBUG
         => EFFECT CALL debug_mod(name, 256);
 
-SPELL debug-down256 (name : STRING) : "debug-256" = 
+SPELL debug-down256 (name : STRING) : "debug-256" =
 	REQUIRE DEBUG
         => EFFECT CALL debug_mod(name, 0 - 256);
 
@@ -1221,7 +1221,7 @@ NONMAGIC SILENT SPELL marriage (target : PC) : "marry" =
               THEN (message(caster, "You must both be wearing your wedding rings!"); ABORT;)
 
               script_target = target;
-              { 
+              {
                 announce @caster_name$ + " is asking " + strcharinfo(0) + " for marriage.", 2;
                 mes @caster_name$ + " wishes to marry you.";
                 mes "Do you accept?";
@@ -1599,6 +1599,87 @@ NONMAGIC SPELL hug5 (target : STRING) : "*hugs" = REQUIRE ((rdistance(location(c
                                                          || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
                                                 => EFFECT CALL hug_tree(target);
 
+NONMAGIC SPELL towelanswer00a : "###towel 00a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer00b : "###towel 00b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer01a : "###towel 01a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer01b : "###towel 01b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer02a : "###towel 02a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer02b : "###towel 02b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer03a : "###towel 03a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer03b : "###towel 03b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer04a : "###towel 04a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer04b : "###towel 04b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer05a : "###towel 05a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer05b : "###towel 05b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer05c : "###towel 05c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer05d : "###towel 05d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer06a : "###towel 06a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer06b : "###towel 06b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer06c : "###towel 06c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer06d : "###towel 06d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer07a : "###towel 07a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer07b : "###towel 07b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer08a : "###towel 08a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer08b : "###towel 08b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer08c : "###towel 08c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer08d : "###towel 08d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer09a : "###towel 09a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer09b : "###towel 09b" = EFFECT {  message strcharinfo(0), ""; };
+
+NONMAGIC SPELL towelanswer10a : "###towel 10a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer10b : "###towel 10b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer11a : "###towel 11a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer11b : "###towel 11b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer12a : "###towel 12a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer12b : "###towel 12b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer13a : "###towel 13a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer13b : "###towel 13b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer14a : "###towel 14a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer14b : "###towel 14b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer15a : "###towel 15a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer15b : "###towel 15b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer15c : "###towel 15c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer16a : "###towel 16a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer16b : "###towel 16b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer17a : "###towel 17a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer17b : "###towel 17b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer18a : "###towel 18a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer18b : "###towel 18b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer18c : "###towel 18c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer18d : "###towel 18d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer19a : "###towel 19a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer19b : "###towel 19b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer19c : "###towel 19c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer19d : "###towel 19d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer110a : "###towel 110a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer110b : "###towel 110b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer111a : "###towel 111a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer111b : "###towel 111b" = EFFECT {  message strcharinfo(0), ""; };
+
+NONMAGIC SPELL towelanswer20a : "###towel 20a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer20b : "###towel 20b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer20c : "###towel 20c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer20d : "###towel 20d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer21a : "###towel 21a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer21b : "###towel 21b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer22a : "###towel 22a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer22b : "###towel 22b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer23a : "###towel 23a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer23b : "###towel 23b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer24a : "###towel 24a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer24b : "###towel 24b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer25a : "###towel 25a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer25b : "###towel 25b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer26a : "###towel 26a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer26b : "###towel 26b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer26c : "###towel 26c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer26d : "###towel 26d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer27a : "###towel 27a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer27b : "###towel 27b" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer27c : "###towel 27c" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer27d : "###towel 27d" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer28a : "###towel 28a" = EFFECT {  message strcharinfo(0), ""; };
+NONMAGIC SPELL towelanswer28b : "###towel 28b" = EFFECT {  message strcharinfo(0), ""; };
 
 #--------------------------------------------------------------------------------
 # Teleport anchors
diff --git a/npc/003-1_Beach/stranger.txt b/npc/003-1_Beach/stranger.txt
index abd1a2b7..1eb98d1f 100644
--- a/npc/003-1_Beach/stranger.txt
+++ b/npc/003-1_Beach/stranger.txt
@@ -2,8 +2,8 @@
 
 	set @month, 5;
 	set @start_day, 18;
-	set @end_day, 25;
-	set @end_day, 18;
+//TODO	set @end_day, 25;
+	set @end_day, 22;
 	set @IRONINGOT, 5;
 	set @PINKANTENNA, 21;
 	set @cost, 500;
@@ -196,13 +196,13 @@ L_Right_Answer_Hard:
 	mes "\"There you are! A towel is really the most important item for a hitchhiker to have.\"";
 	next;
 	mes "\"Please take this.\""; // no full inventory check, this is done before the game
-	getitem "WhiteWarpTowel", 1;
+	getitem "GreyWarpTowel", 1;
 	set FLAGS, FLAGS | FLAG_TOWEL_COMPLETED;
 	next;
 	mes "[Stranger]";
 	mes "\"This towel is even more useful than usual towels are. If you change its color, it uses a special techno-, ahm, let's say, it can help you to get to other places.\"";
 	next;
-	mes "\"Bring me some dye, and I can prepare it for you. But it won't work with every color. And it's a bit complicated to accomplish, so a payment of " + @cost + " GP is reasonable.\"";
+	mes "\"Bring me some powder made from gemstones and a bottle of water, and I can prepare it for you.\"";
 	close;
 
 L_No_Event:
@@ -233,70 +233,228 @@ L_Event_Done:
 L_Dye_Towel:
 	mes "[Stranger]";
 	mes "\"Alright, which color do you want?\"";
-// more colors should be added when more places are released
+// the other colors should be added when more places are released
 	menu
-		"Red", L_Red,
-		"Yellow", L_Yellow,
-		"Light Blue", L_Light_Blue,
+		"Red",L_Red,
+		"Yellow",L_Yellow,
+		"White",L_White,
+//		"Blue",L_Blue,
+//		"Green",L_Green,
+//		"Purple",L_Purple,
+//		"Orange",L_Orange,
+//		"Pink",L_Pink,
+//		"Lime",L_Lime,
+//		"Teal",L_Teal,
 		"I changed my mind.", L_Close;
 	close;
 
 L_Red:
-	if (countitem("WhiteWarpTowel") < 1) goto L_No_Towel;
+	mes "[Stranger]";
+	mes "\"Ok, I'll need two bags of Ruby Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
 	getinventorylist;
-	if ((countitem("WhiteWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
-	if (zeny < 500) goto L_No_Money;
-	if (countitem("RedDye") < 1) goto L_No_Dye;
-	delitem "RedDye", 1;
-	delitem "WhiteWarpTowel", 1;
-	set zeny, zeny - 500;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderRed") < 2) goto L_No_Powder;
+	delitem "GemPowderRed", 2;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
 	getitem "RedWarpTowel", 1;
-	mes "He takes your white towel and the dye, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
 	next;
 	mes "[Stranger]";
 	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
 	close;
 
 L_Yellow:
-	if (countitem("WhiteWarpTowel") < 1) goto L_No_Towel;
+	mes "[Stranger]";
+	mes "\"Ok, I'll need two bags of Topaz Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
 	getinventorylist;
-	if ((countitem("WhiteWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
-	if (zeny < 500) goto L_No_Money;
-	if (countitem("YellowDye") < 1) goto L_No_Dye;
-	delitem "YellowDye", 1;
-	delitem "WhiteWarpTowel", 1;
-	set zeny, zeny - 500;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderYellow") < 2) goto L_No_Powder;
+	delitem "GemPowderYellow", 2;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
 	getitem "YellowWarpTowel", 1;
-	mes "He takes your white towel and the dye, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
 	next;
 	mes "[Stranger]";
 	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
 	close;
 
-L_Light_Blue:
-	if (countitem("WhiteWarpTowel") < 1) goto L_No_Towel;
+
+L_White:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need two bags of Diamond Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderWhite") < 2) goto L_No_Powder;
+	delitem "GemPowderWhite", 2;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "WhiteWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Blue:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need two bags of Sapphire Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderBlue") < 2) goto L_No_Powder;
+	delitem "GemPowderBlue", 2;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "BlueWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Green:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need two bags of Emerald Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderGreen") < 2) goto L_No_Powder;
+	delitem "GemPowderGreen", 2;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "GreenWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Purple:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need two bags of Amethyst Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderPurple") < 2) goto L_No_Powder;
+	delitem "GemPowderPurple", 2;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "PurpleWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Orange:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need one bag of Ruby Powder, one bag of Topaz Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderRed") < 1) goto L_No_Powder;
+	if (countitem("GemPowderYellow") < 1) goto L_No_Powder;
+	delitem "GemPowderRed", 1;
+	delitem "GemPowderYellow", 1;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "OrangeWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Pink:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need one bag of Ruby Powder, one bag of Diamond Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderRed") < 1) goto L_No_Powder;
+	if (countitem("GemPowderWhite") < 1) goto L_No_Powder;
+	delitem "GemPowderRed", 1;
+	delitem "GemPowderWhite", 1;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "PinkWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Lime:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need one bag of Emerald Powder, one bag of Topaz Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
+	getinventorylist;
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderGreen") < 1) goto L_No_Powder;
+	if (countitem("GemPowderYellow") < 1) goto L_No_Powder;
+	delitem "GemPowderGreen", 1;
+	delitem "GemPowderYellow", 1;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "LimeWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	next;
+	mes "[Stranger]";
+	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+	close;
+
+L_Teal:
+	mes "[Stranger]";
+	mes "\"Ok, I'll need one bag of Emerald Powder, one bag of Sapphire Powder and a bottle of water for that.\"";
+	next;
+	if (countitem("GreyWarpTowel") < 1) goto L_No_Towel;
 	getinventorylist;
-	if ((countitem("WhiteWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
-	if (zeny < 500) goto L_No_Money;
-	if (countitem("LightBlueDye") < 1) goto L_No_Dye;
-	delitem "LightBlueDye", 1;
-	delitem "WhiteWarpTowel", 1;
-	set zeny, zeny - 500;
-	getitem "LightBlueWarpTowel", 1;
-	mes "He takes your white towel and the dye, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+	if ((countitem("GreyWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+	if (countitem("BottleOfWater") < 1) goto L_No_Water;
+	if (countitem("GemPowderGreen") < 1) goto L_No_Powder;
+	if (countitem("GemPowderBlue") < 1) goto L_No_Powder;
+	delitem "GemPowderGreen", 1;
+	delitem "GemPowderBlue", 1;
+	delitem "GreyWarpTowel", 1;
+	delitem "BottleOfWater", 1;
+	getitem "TealWarpTowel", 1;
+	mes "He takes your enchanted towel, the water and the gem powder, then he turns away and does something you can't see. After some minutes, he turns to you again.";
 	next;
 	mes "[Stranger]";
 	mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
 	close;
 
-L_No_Money:
+L_No_Water:
 	mes "[Stranger]";
-	mes "\"I'm sorry, preparing this towel for travelling is really complicated. I can't explain you the details, but I'll need " + @cost + " GP.\"";
+	mes "\"You don't have water.\"";
 	close;
 
-L_No_Dye:
+L_No_Powder:
 	mes "[Stranger]";
-	mes "\"You need to bring me dye in that color.\"";
+	mes "\"You need to bring me enough gem powder in that color. Maybe someone used to mining can help you with that.\"";
 	close;
 
 L_No_Towel:
-- 
cgit v1.2.3-70-g09d2