summaryrefslogtreecommitdiff
path: root/world/map/npc
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc')
-rw-r--r--world/map/npc/001-1/dock.txt2
-rw-r--r--world/map/npc/002-2/bleacher.txt327
-rw-r--r--world/map/npc/002-2/inya.txt2
-rw-r--r--world/map/npc/002-2/latoy.txt2
-rw-r--r--world/map/npc/007-1/witch.txt2
-rw-r--r--world/map/npc/008-1/dock.txt4
-rw-r--r--world/map/npc/009-2/alan.txt2
-rw-r--r--world/map/npc/009-2/peter.txt2
-rw-r--r--world/map/npc/009-2/selim.txt73
-rw-r--r--world/map/npc/009-4/barriers.txt18
-rw-r--r--world/map/npc/009-4/waric.txt2
-rw-r--r--world/map/npc/009-6/brodomir.txt19
-rw-r--r--world/map/npc/009-7/battlemaster.txt10
-rw-r--r--world/map/npc/009-7/eventHandler.txt6
-rw-r--r--world/map/npc/010-2/loratay.txt62
-rw-r--r--world/map/npc/011-1/auldsbel.txt6
-rw-r--r--world/map/npc/011-6/crastur.txt4
-rw-r--r--world/map/npc/012-1/injured-mouboo.txt2
-rw-r--r--world/map/npc/012-1/shops.txt2
-rw-r--r--world/map/npc/013-1/flowerpentagram.txt2
-rw-r--r--world/map/npc/015-1/barrier.txt2
-rw-r--r--world/map/npc/017-9/secret.txt8
-rw-r--r--world/map/npc/027-2/lover.txt2
-rw-r--r--world/map/npc/027-6/general_krukan.txt24
-rw-r--r--world/map/npc/027-7/general_razha.txt28
-rw-r--r--world/map/npc/027-8/general_terogan.txt28
-rw-r--r--world/map/npc/029-1/_warps.txt1
-rw-r--r--world/map/npc/029-1/barrier.txt8
-rw-r--r--world/map/npc/029-1/dock.txt2
-rw-r--r--world/map/npc/029-2/_import.txt3
-rw-r--r--world/map/npc/029-2/_warps.txt1
-rw-r--r--world/map/npc/029-2/bankroom.txt9
-rw-r--r--world/map/npc/029-2/cynric.txt9
-rw-r--r--world/map/npc/029-2/nyle.txt51
-rw-r--r--world/map/npc/029-2/sorfina.txt2
-rw-r--r--world/map/npc/029-3/parua.txt28
-rw-r--r--world/map/npc/030-4/mana_battery.txt52
-rw-r--r--world/map/npc/031-1/dock.txt2
-rw-r--r--world/map/npc/031-4/cindyCave.txt22
-rw-r--r--world/map/npc/051-1/janitor.txt4
-rw-r--r--world/map/npc/051-3/ambush.txt6
-rw-r--r--world/map/npc/051-3/janitor.txt2
-rw-r--r--world/map/npc/051-3/reinforcements.txt2
-rw-r--r--world/map/npc/052-1/janitor.txt2
-rw-r--r--world/map/npc/052-2/chest.txt28
-rw-r--r--world/map/npc/052-2/janitor.txt6
-rw-r--r--world/map/npc/052-2/partyroom.txt4
-rw-r--r--world/map/npc/052-2/storage.txt2
-rw-r--r--world/map/npc/annuals/xmas/config.txt12
-rw-r--r--world/map/npc/functions/DyeConfig.txt42
-rw-r--r--world/map/npc/functions/ferry.txt4
-rw-r--r--world/map/npc/functions/game_rules.txt32
-rw-r--r--world/map/npc/functions/time.txt57
-rw-r--r--world/map/npc/functions/travelers.txt7
-rw-r--r--world/map/npc/items/warpTowels.txt18
-rw-r--r--world/map/npc/scripts.conf1
56 files changed, 534 insertions, 526 deletions
diff --git a/world/map/npc/001-1/dock.txt b/world/map/npc/001-1/dock.txt
index 05402b94..0aacdcdb 100644
--- a/world/map/npc/001-1/dock.txt
+++ b/world/map/npc/001-1/dock.txt
@@ -14,7 +14,7 @@
close;
}
-001-1,70,70,0|script|#TulimsharDock|127
+001-1,70,70,0|script|#TulimsharDock|32767
{
end;
OnCommandArrive:
diff --git a/world/map/npc/002-2/bleacher.txt b/world/map/npc/002-2/bleacher.txt
index 213c96f8..2853bb73 100644
--- a/world/map/npc/002-2/bleacher.txt
+++ b/world/map/npc/002-2/bleacher.txt
@@ -1,293 +1,132 @@
-//
+// IMPORTANT: add your items to DyeConfig, do not edit Candide
002-2,72,92,0|script|Candide|156
{
mes "[Candide]";
- mes "\"I've figured out how that volcanic ash bleaches cloth.";
- mes "I could do it for you, but I'll need three piles of ash and 5,000 GP for supplies per item.\"";
+ mes "\"Greetings! I am Candide the Bleacher.";
+ mes "Tulimshar is my homeland, where I learned the ancient art of bleaching.\"";
+ next;
+ mes "\"Bleaching was originally done by the sun, but now we use ash combined with special ingredients to remove color from fabric.\"";
next;
-
- if (countitem("PileOfAsh") < 3) goto L_no_ash;
-
- if (Zeny < 5000) goto L_no_money;
-
menu
+ "What is needed for the bleaching process?", L_Materials,
"I'd like to bleach something.", L_bleach_menu,
- "No thanks.", L_Close;
+ "So long.", L_Close;
-L_bleach_menu:
+L_Materials:
mes "[Candide]";
- mes "\"What would you like to bleach?\"";
+ mes "\"For each item, I will need 3 piles of ash and 5,000 GP for the special ingredients.\"";
next;
-
menu
- "Cotton shirt.", L_cottonshirt,
- "Contributor shirt.", L_contributor,
- "V-Neck sweater.", L_vneck,
- "Turtleneck sweater.", L_tneck,
- "Cotton shorts.", L_shorts,
- "Cotton trousers.", L_trousers,
- "Cotton skirt.", L_skirt,
- "Miniskirt.", L_miniskirt,
- "Tank top .", L_tanktop,
- "Short tank top.", L_tanktop_short,
- "Silk robe.", L_robe,
- "Cotton headband.", L_cotton_headband,
- "Desert hat.", L_desert_hat,
- "Cotton boots.", L_cotton_boots,
- "Cotton gloves.", L_cotton_gloves,
- "Rabbit ears.", L_rabbit_ears,
- "Wizard hat.", L_wizard_hat,
- "Bowler hat.", L_bowler_hat,
- "Sorcerer robe.", L_sorcerer_robe,
- "Bowler hat (brown).", L_bowler_hat_brown,
- "Fine dress.", L_fine_dress,
- "Cotton cloth.", L_cotton_cloth,
- "Nevermind.", L_Close;
-
-L_contributor:
- set @normal, 1178;
- set @dyeBase, 5131;
- goto L_choose_color;
-
-L_cottonshirt:
- set @normal, 1202;
- set @dyeBase, 2050;
- goto L_choose_color;
-
-L_vneck:
- set @normal, 624;
- set @dyeBase, 2060;
- goto L_choose_color;
-
-L_tneck:
- set @normal, 564;
- set @dyeBase, 2070;
- goto L_choose_color;
-
-L_shorts:
- set @normal, 586;
- set @dyeBase, 2110;
- goto L_choose_color;
-
-L_trousers:
- set @normal, 648;
- set @dyeBase, 2180;
- goto L_choose_color;
-
-L_skirt:
- set @normal, 632;
- set @dyeBase, 2100;
- goto L_choose_color;
-
-L_miniskirt:
- set @normal, 771;
- set @dyeBase, 2170;
- goto L_choose_color;
-
-L_tanktop:
- set @normal, 688;
- set @dyeBase, 2090;
- goto L_choose_color;
-
-L_tanktop_short:
- set @normal, 689;
- set @dyeBase, 2120;
- goto L_choose_color;
-
-L_robe:
- set @normal, 720;
- set @dyeBase, 2080;
- goto L_choose_color;
-
-L_cotton_headband:
- set @normal, 724;
- set @dyeBase, 2140;
- goto L_choose_color;
-
-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_cotton_gloves:
- set @normal, 741;
- set @dyeBase, 2160;
- goto L_choose_color;
-
-L_rabbit_ears:
- set @normal, 1255;
- set @dyeBase, 2190;
- goto L_choose_color;
-
-L_wizard_hat:
- set @normal, 4028;
- set @dyeBase, 2200;
- goto L_choose_color;
-
-L_bowler_hat:
- set @normal, 4030;
- set @dyeBase, 2210;
- goto L_choose_color;
+ "I'd like to bleach something.", L_bleach_menu,
+ "So long.", L_Close;
-L_sorcerer_robe:
+L_bleach_menu:
+ if (countitem("PileOfAsh") < 3) goto L_no_ash;
+ if (Zeny < 5000) goto L_no_money;
+ cleararray @CANDIDE_items,0,getarraysize(@CANDIDE_items);
+ cleararray @CANDIDE_color,0,getarraysize(@CANDIDE_color);
+ cleararray @CANDIDE_menu$,"",getarraysize(@CANDIDE_menu$);
+ set @w, 0;
+ freeloop 1; // do not check for infinity loop
+ callsub S_LoopArray;
+ freeloop 0; // re-enable infinity loop check
+ set @w, 0;
+ set @c, 0;
+ set @p, 0;
+ if(@CANDIDE_menu$[0] == "") goto L_Nothing;
mes "[Candide]";
- mes "\"Which one?\"";
+ mes "\"Yes?\"";
next;
menu
- "A red lined one.", L_red_lined,
- "A green lined one.", L_green_lined,
- "A dark blue lined one.", L_dark_blue_lined,
- "A yellow lined one.", L_yellow_lined,
- "A light blue lined one.", L_light_blue_lined,
- "A pink lined one.", L_pink_lined,
- "A black lined one.", L_black_lined,
- "An orange lined one.", L_orange_lined,
- "A purple lined one.", L_purple_lined,
- "A dark green lined one.", L_dark_green_lined,
- "A white lined one.", L_white_lined,
- "Nevermind.", L_Close;
-
-L_red_lined:
- set @normal, 798;
- set @dyeBase, 2220;
- goto L_choose_color;
-
-L_green_lined:
- set @normal, 5010;
- set @dyeBase, 5000;
- goto L_choose_color;
-
-L_dark_blue_lined:
- set @normal, 5021;
- set @dyeBase, 5011;
- goto L_choose_color;
-
-L_yellow_lined:
- set @normal, 5032;
- set @dyeBase, 5022;
- goto L_choose_color;
-
-L_light_blue_lined:
- set @normal, 5043;
- set @dyeBase, 5033;
- goto L_choose_color;
-
-L_pink_lined:
- set @normal, 5054;
- set @dyeBase, 5044;
- goto L_choose_color;
-
-L_black_lined:
- set @normal, 5065;
- set @dyeBase, 5055;
- goto L_choose_color;
-
-L_orange_lined:
- set @normal, 5076;
- set @dyeBase, 5066;
- goto L_choose_color;
-
-L_purple_lined:
- set @normal, 5087;
- set @dyeBase, 5077;
- goto L_choose_color;
-
-L_dark_green_lined:
- set @normal, 5098;
- set @dyeBase, 5088;
- goto L_choose_color;
-
-L_white_lined:
- set @normal, 5109;
- set @dyeBase, 5099;
- goto L_choose_color;
-
-L_bowler_hat_brown:
- set @normal, 800;
- set @dyeBase, 2230;
- goto L_choose_color;
-
-L_fine_dress:
- set @normal, 870;
- set @dyeBase, 2240;
- goto L_choose_color;
-
-L_cotton_cloth:
- set @normal, 660;
- set @dyeBase, 2250;
- goto L_choose_color;
-
-L_choose_color:
+ "Nevermind.", L_Close,
+ @CANDIDE_menu$[0], L_MenuItems, // base array was too big for a dynamic menu so we can't use it
+ @CANDIDE_menu$[1], L_MenuItems,
+ @CANDIDE_menu$[2], L_MenuItems,
+ @CANDIDE_menu$[3], L_MenuItems,
+ @CANDIDE_menu$[4], L_MenuItems,
+ @CANDIDE_menu$[5], L_MenuItems,
+ @CANDIDE_menu$[6], L_MenuItems,
+ @CANDIDE_menu$[7], L_MenuItems,
+ @CANDIDE_menu$[8], L_MenuItems,
+ @CANDIDE_menu$[9], L_MenuItems,
+ @CANDIDE_menu$[10], L_MenuItems,
+ @CANDIDE_menu$[11], L_MenuItems,
+ @CANDIDE_menu$[12], L_MenuItems,
+ @CANDIDE_menu$[13], L_MenuItems,
+ @CANDIDE_menu$[14], L_MenuItems,
+ @CANDIDE_menu$[15], L_MenuItems,
+ @CANDIDE_menu$[16], L_MenuItems,
+ @CANDIDE_menu$[17], L_MenuItems;
+
+S_LoopArray:
+ set @c, 0;
+ callsub S_LoopColor;
+ set @w, @w + 1;
+ if(@w < getarraysize($@DYE_items$)) goto S_LoopArray;
+ return;
+
+S_LoopColor:
+ if(countitem($@DYE_colors$[@c] + $@DYE_items$[@w]) > 0)
+ goto L_AddToMenu;
+ goto L_LoopColor2;
+
+L_AddToMenu:
+ set @CANDIDE_items[@p], @w;
+ set @CANDIDE_color[@p], @c;
+ set @CANDIDE_menu$[@p], $@DYE_color_names$[@c]+" "+$@DYE_item_names$[@w];
+ set @p, @p + 1;
+ goto L_LoopColor2;
+
+L_LoopColor2:
+ set @c, @c + 1;
+ if(@c < getarraysize($@DYE_colors$)) goto S_LoopColor;
+ return;
+
+L_Nothing:
mes "[Candide]";
- mes "\"And the color?\"";
+ mes "\"Sorry, you have nothing to bleach.\"";
next;
-
- menu
- "Red.", L_MenuItems,
- "Green.", L_MenuItems,
- "Dark Blue.", L_MenuItems,
- "Yellow.", L_MenuItems,
- "Light Blue.", L_MenuItems,
- "Pink.", L_MenuItems,
- "Black.", L_MenuItems,
- "Orange.", L_MenuItems,
- "Purple.", L_MenuItems,
- "Dark Green.", L_MenuItems;
+ goto L_Close;
L_MenuItems:
- set @del, @dyeBase + @menu - 1;
-
- if (countitem(@del) == 0) goto L_no_item;
-
if (countitem("PileOfAsh") < 3) goto L_no_ash;
-
if (Zeny < 5000) goto L_no_money;
-
- delitem @del, 1;
- getitem @normal, 1;
+ set @m, @menu - 2;
+ set @it$, $@DYE_colors$[@CANDIDE_color[@m]] + $@DYE_items$[@CANDIDE_items[@m]];
+ if(getitemname(@it$) == "Unknown Item") mapexit;
+ delitem @it$, 1;
delitem "PileOfAsh", 3;
set Zeny, Zeny - 5000;
+ getitem $@DYE_items$[@CANDIDE_items[@m]], 1;
goto L_again;
L_again:
mes "[Candide]";
mes "\"Would you like to bleach something else?\"";
next;
-
menu
"Yes.", L_bleach_menu,
"No.", L_Close;
-L_no_item:
- mes "[Candide]";
- mes "\"You don't have one of those.\"";
- next;
-
- goto L_again;
-
L_no_ash:
mes "[Candide]";
mes "\"You don't have enough ash for me to bleach anything.";
mes "I need three piles.\"";
+ next;
goto L_Close;
L_no_money:
mes "[Candide]";
mes "\"You don't have enough gold for me to bleach anything.";
mes "I need 5,000 GP for supplies.\"";
+ next;
goto L_Close;
L_Close:
mes "[Candide]";
mes "\"Come again.\"";
- set @normal, 0;
- set @dyeBase, 0;
- set @del, 0;
- close;
+ close2;
+ emotion EMOTE_GRIN;
+ end;
}
diff --git a/world/map/npc/002-2/inya.txt b/world/map/npc/002-2/inya.txt
index 7f0184f8..475c73b6 100644
--- a/world/map/npc/002-2/inya.txt
+++ b/world/map/npc/002-2/inya.txt
@@ -1,7 +1,7 @@
//Gemstones: Diamond (white) , Ruby (red), Emerald (green), Sapphire (blue), Topaz (yellow), Amethyst (purple)
//The power of the gems is important to future balance of these rings. Are they related to stats, tiers of power, schools of magic?
-002-2,116,61,0|shop|#InyaShop|127,SimpleRing:*1
+002-2,116,61,0|shop|#InyaShop|32767,SimpleRing:*1
002-2,116,61,0|script|Inya|106
{
diff --git a/world/map/npc/002-2/latoy.txt b/world/map/npc/002-2/latoy.txt
index 49be414e..bb818bc1 100644
--- a/world/map/npc/002-2/latoy.txt
+++ b/world/map/npc/002-2/latoy.txt
@@ -1,7 +1,7 @@
// A snobby store that won't sell to the player
// takes part in quest given by 021-2/kylian.txt
-002-2,86,93,0|shop|#LatoyShop|127,SilkHeadband:*4,SilkGloves:*4,SilkPants:*4,SilkRobe:*4
+002-2,86,93,0|shop|#LatoyShop|32767,SilkHeadband:*4,SilkGloves:*4,SilkPants:*4,SilkRobe:*4
002-2,86,93,0|script|Latoy|106
{
diff --git a/world/map/npc/007-1/witch.txt b/world/map/npc/007-1/witch.txt
index 24a1243f..f1290699 100644
--- a/world/map/npc/007-1/witch.txt
+++ b/world/map/npc/007-1/witch.txt
@@ -686,7 +686,7 @@ L_KillHero:
}
-007-1,128,100,0|script|#IlliaDaemon|127
+007-1,128,100,0|script|#IlliaDaemon|32767
{
end;
diff --git a/world/map/npc/008-1/dock.txt b/world/map/npc/008-1/dock.txt
index 4be8ad11..42763609 100644
--- a/world/map/npc/008-1/dock.txt
+++ b/world/map/npc/008-1/dock.txt
@@ -12,7 +12,7 @@
close;
}
-008-1,120,44,0|script|#Hurnscald NorthDock|127
+008-1,120,44,0|script|#Hurnscald NorthDock|32767
{
end;
OnCommandArrive:
@@ -30,7 +30,7 @@ OnCommandWarp:
close;
}
-008-1,65,25,0|script|#Hurnscald SouthDock|127
+008-1,65,25,0|script|#Hurnscald SouthDock|32767
{
end;
OnCommandArrive:
diff --git a/world/map/npc/009-2/alan.txt b/world/map/npc/009-2/alan.txt
index 12f5cde8..412b5823 100644
--- a/world/map/npc/009-2/alan.txt
+++ b/world/map/npc/009-2/alan.txt
@@ -98,7 +98,7 @@ L_State_2:
next;
if (@inspector == 1)
menu
- "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next,
+ "Yes, I did. He said that the trees turned into dangerous monsters.", L_Next1,
"Have you seen anything strange recently that might be connected to the robberies?", L_NohMask_Answer;
if (@inspector != 1)
menu
diff --git a/world/map/npc/009-2/peter.txt b/world/map/npc/009-2/peter.txt
index 0eaf4ced..bbb336e2 100644
--- a/world/map/npc/009-2/peter.txt
+++ b/world/map/npc/009-2/peter.txt
@@ -1,5 +1,5 @@
// Nicholas' Apprentice and Armorsmith
-009-2,183,57,0|shop|#PeterShop|127,Knife:*1,SharpKnife:*1,Dagger:*1
+009-2,183,57,0|shop|#PeterShop|32767,Knife:*1,SharpKnife:*1,Dagger:*1
009-2,183,57,0|script|Peter|157
{
diff --git a/world/map/npc/009-2/selim.txt b/world/map/npc/009-2/selim.txt
index ab74b2f9..80abfdcc 100644
--- a/world/map/npc/009-2/selim.txt
+++ b/world/map/npc/009-2/selim.txt
@@ -1,46 +1,20 @@
-function|script|SelimDebug
-{
- set @w, 0;
- mes "[Selim Debug]";
- menu
- "Debug item array.", L_DebugArrayExplain,
- "Exit debug.", L_Return;
-
-L_DebugArrayExplain:
- mes "[How it works]";
- mes "Click on the link to verify that it is the red variation of the item.";
- mes "If, for example, you see [Skirt] then when you click on it you should see Red Skirt.";
- next;
- goto L_DebugArray;
-
-L_DebugArray:
- mes "[@@" + @items_new[@w] + "|" + @item_names$[@w] + "@@]";
- set @w, @w + 1;
- if(@w >= getarraysize(@items_new)) goto L_Return;
- menu
- "Next.", L_DebugArray,
- "Exit debug.", L_Return;
-
-L_Return:
- return;
-}
-
009-2,32,104,0|script|Selim|326
{
- setarray @all_colours$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green";
-
cleararray @items$, "", getarraysize(@items$);
cleararray @item_names$, "", getarraysize(@item_names$);
- cleararray @items_new, "", getarraysize(@items_new);
- setarray @items_new, 2050, 2250, 2060, 2070, 2110, 2180, 2100, 2170, 2090, 2120, 2080, 2140, 2130, 2150, 2160, 2190, 2200, 2210, 2230, 2240, 5131, 2220, 5000, 5011, 5022, 5033, 5044, 5055, 5066, 5077, 5088, 5099;
- setarray @items$, "CottonShirt", "CottonCloth", "VNeckSweater", "TurtleneckSweater", "CottonShorts", "CottonTrousers", "CottonSkirt", "Miniskirt", "TankTop", "ShortTankTop", "SilkRobe", "CottonHeadband", "DesertHat", "CottonBoots", "CottonGloves", "WhiteRabbitEars", "WizardHat", "BowlerHat", "BowlerHatBrown", "FineDress", "ContributorShirt", "SorcererRobeRed", "SorcererRobeGreen", "SorcererRobeDarkBlue", "SorcererRobeYellow", "SorcererRobeLightBlue", "SorcererRobePink", "SorcererRobeBlack", "SorcererRobeOrange", "SorcererRobePurple", "SorcererRobeDarkGreen", "SorcererRobeWhite";
- setarray @item_names$, "Cotton Shirt", "Cotton Cloth", "V-Neck Sweater", "Turtleneck Sweater", "Cotton Shorts", "Cotton Trousers", "Cotton Skirt", "Miniskirt", "Tank Top", "Short Tank Top", "Silk Robe", "Cotton Headband", "Desert Hat", "Cotton Boots", "Cotton Gloves", "White Rabbit Ears", "Wizard Hat", "Bowler Hat", "Bowler Hat (brown)", "Fine Dress", "Contributor Shirt", "Red lined Sorcerer Robe", "Green lined Sorcerer Robe", "Dark Blue lined Sorcerer Robe", "Yellow lined Sorcerer Robe", "Light Blue lined Sorcerer Robe", "Pink lined Sorcerer Robe", "Black lined Sorcerer Robe", "Orange lined Sorcerer Robe", "Purple lined Sorcerer Robe", "Dark Green lined Sorcerer Robe", "White lined Sorcerer Robe";
- if ((getgmlevel() >= 40 || debug) && (getequipid(equip_head) == 647 || getequipid(equip_head) == 725)) goto L_Debug;
+ set @r, 0;
+ set @j, getarraysize($@DYE_items$);
+ goto L_CloneArray; // clone the array from DyeConfig
+
+L_CloneArray:
+ set @items$[@r], $@DYE_items$[@r];
+ set @item_names$[@r], $@DYE_item_names$[@r];
+ set @r, @r + 1;
+ if(@r < @j) goto L_CloneArray;
+ set @r, 0;
+ set @j, 0;
goto L_Main;
-L_Debug:
- callfunc "SelimDebug";
- close;
L_Main:
mes "[Selim]";
@@ -86,7 +60,6 @@ L_clothes_choice:
callfunc "DynamicItemMenu$";
set @default_choice$, "";
set @item_del$, @item$;
- set @item_new, @items_new[@index];
set @name$, @item_names$[@index];
cleararray @items$, "", getarraysize(@items$);
cleararray @item_names$, "", getarraysize(@item_names$);
@@ -114,7 +87,6 @@ L_Next:
mes "\"Of course I can help you by dyeing the materials your tailor will want.";
mes "All I need is a piece of Cotton Cloth.\"";
set @item_del$, "CottonCloth";
- set @item_new, 2250;
menu
"Sure. Here is one.", L_picked_item,
"I have to go pick that.", L_Close;
@@ -127,8 +99,9 @@ L_colour:
mes "[Selim]";
mes "\"Excellent. Now, what color do you want?\"";
next;
- setarray @items$, "RedDye", "GreenDye", "DarkBlueDye", "YellowDye", "LightBlueDye", "PinkDye", "BlackDye", "OrangeDye", "PurpleDye", "DarkGreenDye";
- setarray @item_names$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green";
+ set @r, 0;
+ set @j, getarraysize($@DYE_colors$);
+ callsub S_CloneColors;
set @default_choice$, "I have no dye.";
callfunc "DynamicItemMenu$";
cleararray @items$, "", getarraysize(@items$);
@@ -136,9 +109,17 @@ L_colour:
set @default_choice$, "";
if (@item$ == "") goto L_no_dye;
set @colour, @index;
- set @vial, 690 + @colour;
goto L_finish;
+S_CloneColors:
+ set @items$[@r], $@DYE_colors$[@r] + "Dye";
+ set @item_names$[@r], $@DYE_color_names$[@r];
+ set @r, @r + 1;
+ if(@r < @j) goto S_CloneColors;
+ set @r, 0;
+ set @j, 0;
+ return;
+
L_no_dye:
mes "[Selim]";
mes "\"I would love to dye your " + @name$ + " for you, but you will have to bring me some dye first.";
@@ -159,11 +140,13 @@ L_explain_dye:
goto L_Close;
L_finish:
- delitem @vial, 1;
+ if(getitemname($@DYE_colors$[@colour] + @item_del$) == "Unknown Item") mapexit;
+ if(countitem(@item_del$) < 1) goto L_havenone;
+ delitem @item$, 1;
delitem @item_del$, 1;
- getitem @item_new + @colour, 1;
+ getitem $@DYE_colors$[@colour] + @item_del$, 1;
mes "[Selim]";
- mes "\"Here's your " + @all_colours$[@colour] + " " + @name$ + "! Please let dry for a minute.\"";
+ mes "\"Here's your " + $@DYE_color_names$[@colour] + " " + @name$ + "! Please let dry for a minute.\"";
goto L_Close;
L_havenone:
diff --git a/world/map/npc/009-4/barriers.txt b/world/map/npc/009-4/barriers.txt
index 135f083d..4a2055fa 100644
--- a/world/map/npc/009-4/barriers.txt
+++ b/world/map/npc/009-4/barriers.txt
@@ -44,7 +44,7 @@ L_Error2:
// Starting Barrier / Quest Entrance
-009-4,37,119,0|script|#OrumCaveStartMessage|127,0,0
+009-4,37,119,0|script|#OrumCaveStartMessage|32767,0,0
{
if (OrumQuest >= 3) end;
if (OrumQuest == 2) goto L_Started;
@@ -58,7 +58,7 @@ L_Started:
end;
}
-009-4,37,120,0|script|#OrumCaveStartBarrier|127,0,0
+009-4,37,120,0|script|#OrumCaveStartBarrier|32767,0,0
{
if (OrumQuest >= 3) end;
warp "009-4", 37, 118;
@@ -66,7 +66,7 @@ L_Started:
}
// First Barrier
-009-4,57,29,0|script|#OrumCaveFirstBarrier|127,0,0
+009-4,57,29,0|script|#OrumCaveFirstBarrier|32767,0,0
{
if (OrumQuest >= 5) end;
@@ -76,7 +76,7 @@ L_Started:
}
// Second Barrier
-009-4,61,55,0|script|#OrumCaveSecondMessage|127,0,0
+009-4,61,55,0|script|#OrumCaveSecondMessage|32767,0,0
{
if (OrumQuest >= 9) end;
if (OrumQuest == 3) set OrumQuest, 4;
@@ -104,7 +104,7 @@ L_Advance_Quest:
end;
}
-009-4,61,54,0|script|#OrumCaveSecondBarrier|127,0,0
+009-4,61,54,0|script|#OrumCaveSecondBarrier|32767,0,0
{
if (OrumQuest >= 9) end;
warp "009-4", 60, 56;
@@ -112,7 +112,7 @@ L_Advance_Quest:
}
// Third Barrier
-009-4,24,65,0|script|#OrumCaveThirdMessage|127,0,0
+009-4,24,65,0|script|#OrumCaveThirdMessage|32767,0,0
{
if (OrumQuest >= 10) end;
if (OrumQuest == 3) set OrumQuest, 4;
@@ -154,7 +154,7 @@ L_Advance_Quest:
end;
}
-009-4,24,66,0|script|#OrumCaveThirdBarrier|127,0,0
+009-4,24,66,0|script|#OrumCaveThirdBarrier|32767,0,0
{
if (OrumQuest >= 10) end;
warp "009-4", 23, 64;
@@ -162,7 +162,7 @@ L_Advance_Quest:
}
// Ending Barrier
-009-4,48,37,0|script|#OrumCaveEndMessage|127,0,0
+009-4,48,37,0|script|#OrumCaveEndMessage|32767,0,0
{
if (OrumQuest >= 11) end;
if (OrumQuest == 3) set OrumQuest, 4;
@@ -274,7 +274,7 @@ L_Advance_Quest:
close;
}
-009-4,48,38,0|script|#OrumCaveEndBarrier|127,0,0
+009-4,48,38,0|script|#OrumCaveEndBarrier|32767,0,0
{
if (OrumQuest >= 11) end;
warp "009-4", 47, 36;
diff --git a/world/map/npc/009-4/waric.txt b/world/map/npc/009-4/waric.txt
index 29eff17b..83c1ba78 100644
--- a/world/map/npc/009-4/waric.txt
+++ b/world/map/npc/009-4/waric.txt
@@ -1,6 +1,6 @@
//# see detailed description at orum.txt
-009-4,99,33,0|script|#WizardTrap|127,2,1
+009-4,99,33,0|script|#WizardTrap|32767,2,1
{
set @gender$, "They're";
if (Sex == 0)
diff --git a/world/map/npc/009-6/brodomir.txt b/world/map/npc/009-6/brodomir.txt
index 9b2c55d5..63bce759 100644
--- a/world/map/npc/009-6/brodomir.txt
+++ b/world/map/npc/009-6/brodomir.txt
@@ -133,11 +133,11 @@ L_Go:
set $@BRODOMIR_MONEY, @brodomir_money;
set $@brodomir_delay_seconds, 600;
set $@BRODOMIR_PVP_STATUS, 1;
- announce "Brodomir: In "+$@brodomir_delay_seconds/60+" minutes, I will start a PvP tournament, if at least 3 fighters are present. Make your way in Hurnscald Underground Caves!", 0;
+ announce "Brodomir : In "+$@brodomir_delay_seconds/60+" minutes, I will start a PvP tournament, if at least 3 fighters are present. Make your way in Hurnscald Underground Caves!", 0;
if ($@BRODOMIR_ITEM_AMOUNT > 0)
- announce "Brodomir: The winner will receive 150GP per fighter and " + $@BRODOMIR_ITEM_AMOUNT + " " + $@BRODOMIR_ITEM$ + ".", 0;
+ announce "Brodomir : The winner will receive 150GP per fighter and " + $@BRODOMIR_ITEM_AMOUNT + " " + $@BRODOMIR_ITEM$ + ".", 0;
if ($@BRODOMIR_MONEY > 0)
- announce "Brodomir: The winner will receive " + $@BRODOMIR_MONEY + "GP and additionally 150GP per fighter.", 0;
+ announce "Brodomir : The winner will receive " + $@BRODOMIR_MONEY + "GP and additionally 150GP per fighter.", 0;
mes "[Brodomir]";
mes "\"In "+$@brodomir_delay_seconds/60+" minutes I will bring you all to the PvP cave. If there are less than 3 players here the event will not start and your money will be lost.\"";
set $@BRODOMIR_START_TIME, gettimetick(2) + $@brodomir_delay_seconds;
@@ -146,13 +146,10 @@ L_Go:
goto L_Close;
L_Wait:
- set $@brodomir_seconds, ($@BRODOMIR_START_TIME - gettimetick(2));
+ set @ms, ($@BRODOMIR_START_TIME - gettimetick(2)) * 1000;
+ callfunc "HumanTime";
mes "[Brodomir]";
- if ($@brodomir_seconds/60 == 0)
- mes "\"Just a little longer. I will bring you there in " + $@brodomir_seconds + " seconds.\"";
- if ($@brodomir_seconds/60 > 0)
- mes "\"Just a little longer. I will bring you there in " + $@brodomir_seconds/60 + " minute(s).\"";
- set $@brodomir_seconds, 0;
+ mes "\"Just a little longer. I will bring you there in " + @time$ + ".\"";
goto L_Close;
OnTimer5000:
@@ -169,12 +166,12 @@ L_Warp:
set $@BRODOMIR_PVP_STATUS, $@BRODOMIR_PVP_STATUS + 1;
set $@BRODOMIR_PLAYERS, getareausers("009-6", 20, 20, 80, 80, 1);
mapwarp "009-6", "009-5", 0, 0;
- mapannounce "009-5", "PvP On!", 0;
+ mapannounce "009-5", "Brodomir : PvP On!", 0;
pvpon "009-5";
end;
L_Warpfail:
- mapannounce "009-6", "There are not enough players around to start!", 0;
+ mapannounce "009-6", "Brodomir : There are not enough players around to start!", 0;
if ($@BRODOMIR_ITEM_AMOUNT == 0 || $@BRODOMIR_ITEM$ == "")
goto L_Cleanup;
if (attachrid($@BRODOMIR_SPONSOR) == 0)
diff --git a/world/map/npc/009-7/battlemaster.txt b/world/map/npc/009-7/battlemaster.txt
index ed07eefb..33eb04d0 100644
--- a/world/map/npc/009-7/battlemaster.txt
+++ b/world/map/npc/009-7/battlemaster.txt
@@ -62,29 +62,29 @@ L_GoBack:
message strcharinfo(0), "Thank you for participating!";
return;
}
-009-6,36,48,0|script|#GoBack2Duels|127,0,1
+009-6,36,48,0|script|#GoBack2Duels|32767,0,1
{
callfunc "fightclub_GoBack";
end;
}
-009-5,53,74,0|script|#GoBack3Duels|127,3,1
+009-5,53,74,0|script|#GoBack3Duels|32767,3,1
{
callfunc "fightclub_GoBack";
end;
}
-009-3,158,83,0|script|#GoBack5Duels|127,7,0
+009-3,158,83,0|script|#GoBack5Duels|32767,7,0
{
callfunc "fightclub_GoBack";
end;
}
-001-2,130,22,0|script|#GoBack4Duels|127,1,1
+001-2,130,22,0|script|#GoBack4Duels|32767,1,1
{
callfunc "fightclub_GoBack";
end;
}
-001-3,73,28,0|script|#GoBack1Duels|127,0,1
+001-3,73,28,0|script|#GoBack1Duels|32767,0,1
{
callfunc "fightclub_GoBack";
end;
diff --git a/world/map/npc/009-7/eventHandler.txt b/world/map/npc/009-7/eventHandler.txt
index 7104d0a7..d20fff4d 100644
--- a/world/map/npc/009-7/eventHandler.txt
+++ b/world/map/npc/009-7/eventHandler.txt
@@ -15,7 +15,7 @@ L_Enter:
end;
}
-009-7,22,38,0|script|#FightClubUtils|127
+009-7,22,38,0|script|#FightClubUtils|32767
{
end;
@@ -44,7 +44,7 @@ OnCommandIntrusion:
end;
}
-009-7,20,45,0|script|#FightClubTimeLimit|127,0,0
+009-7,20,45,0|script|#FightClubTimeLimit|32767,0,0
{
end;
@@ -76,7 +76,7 @@ OnInit:
end;
}
-009-7,20,44,0|script|#FightClubHandler|127,0,0
+009-7,20,44,0|script|#FightClubHandler|32767,0,0
{
end;
diff --git a/world/map/npc/010-2/loratay.txt b/world/map/npc/010-2/loratay.txt
index ef85fc36..6843bfcc 100644
--- a/world/map/npc/010-2/loratay.txt
+++ b/world/map/npc/010-2/loratay.txt
@@ -44,7 +44,6 @@ OnInit:
set @FINEDRESS_COCOONS, 180;
set @SORCERER_ROBE_SEW_ZENY, 25000;
set @SORCERER_ROBE_NUM_COTTON_CLOTH, 2;
- setarray @item_colors$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green", "white";
set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
if (@loratay_asking_robe == 1) goto L_ExamineSR;
@@ -487,28 +486,30 @@ L_desert_hat:
mes "The seamstress sighs.";
mes "\"One of these days it would be nice to have an actual challenge... yes, of course I can make a desert hat. A Cotton Headband, three pieces of cotton cloth. Hmm. And let's add 300 GP to that.\"";
next;
- cleararray @items, 0, getarraysize(@items);
+ cleararray @items$, "", getarraysize(@items$);
cleararray @item_names$, "", getarraysize(@item_names$);
- setarray @items, 724, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149;
- setarray @item_names$, "Here is a Cotton Headband.", "Here is a Red Cotton Headband.", "Here is a Green Cotton Headband.", "Here is a Dark Blue Cotton Headband.", "Here is a Yellow Cotton Headband.", "Here is a Light Blue Cotton Headband.", "Here is a Pink Cotton Headband.", "Here is a Black Cotton Headband.", "Here is an Orange Cotton Headband.", "Here is a Puple Cotton Headband.", "Here is a Dark Green Cotton Headband.";
+ set @o, 1;
+ setarray @items$, "CottonHeadband";
+ setarray @item_names$, "Here is a Cotton Headband.";
+ callsub S_CottonHeadbandColors;
- callfunc "DynamicItemMenu";
- if (@item == 0)
+ callfunc "DynamicItemMenu$";
+ if (@item$ == "")
goto L_main_menu;
- if (@item == 724)
- set @genitem, 723;
- if (@item != 724)
- set @genitem, @item - 10;
- if (countitem(@item) < 1)
+ if (@item$ == "CottonHeadband")
+ set @genitem$, "DesertHat";
+ if (@item$ != "CottonHeadband")
+ set @genitem$, $@DYE_colors$[@index] + "DesertHat";
+ if (countitem(@item$) < 1)
goto L_desert_hat_noheadband;
if (countitem("CottonCloth") < 3)
goto L_desert_hat_nocotton;
if (Zeny < 300)
goto L_desert_hat_nogp;
- delitem @item, 1;
+ delitem @item$, 1;
delitem "CottonCloth", 3;
set Zeny, Zeny - 300;
- getitem @genitem, 1;
+ getitem @genitem$, 1;
mes "[Lora Tay the Seamstress]";
mes "\"Now then, this should only take a minute.\"";
mes "The seamstress folds your cotton cloth in a complicated fashion, wraps the resulting bundle into and out of the headband, and finally sews together several loose ends.";
@@ -520,6 +521,13 @@ L_desert_hat:
next;
goto L_main_menu;
+S_CottonHeadbandColors:
+ set @items$[@o], $@DYE_colors$[@o]+"CottonHeadband";
+ set @item_names$[@o], "Here is a "+$@DYE_color_names$[@o]+" Cotton Headband";
+ set @o, @o + 1;
+ if(@o < getarraysize($@DYE_colors$)) goto S_CottonHeadbandColors;
+ return;
+
L_desert_hat_nocotton:
mes "[Lora Tay the Seamstress]";
mes "\"You're asking me to make a desert hat without enough cloth? Here, have your headband back-- see, that's how much I can do without cloth! And since I'm generous today, you can even keep your GP...\"";
@@ -930,7 +938,7 @@ L_ExamineSR:
mes "Lora Tay takes a closer look at what you are wearing.";
next;
mes "[Lora Tay the Seamstress]";
- mes "\"Hmm. This " + @item_colors$[@current_linecolor] + " lined " + @item_colors$[@current_maincolor] + " sorcerer robe. I see. Is that ok?\"";
+ mes "\"Hmm. This " + $@DYE_color_names$[@current_linecolor] + " lined " + $@DYE_color_names$[@current_maincolor] + " sorcerer robe. I see. Is that ok?\"";
if (@current_maincolor == -1 || @current_linecolor == -1)
goto L_NotSR;
menu
@@ -947,17 +955,17 @@ L_ChooseSRLineColor:
mes "[Lora Tay the Seamstress]";
mes "\"And which Cotton Cloth color will you give me?\"";
menu
- "A " + @item_colors$[0] + " one.", L_ItemMenus2,
- "A " + @item_colors$[1] + " one.", L_ItemMenus2,
- "A " + @item_colors$[2] + " one.", L_ItemMenus2,
- "A " + @item_colors$[3] + " one.", L_ItemMenus2,
- "A " + @item_colors$[4] + " one.", L_ItemMenus2,
- "A " + @item_colors$[5] + " one.", L_ItemMenus2,
- "A " + @item_colors$[6] + " one.", L_ItemMenus2,
- "A " + @item_colors$[7] + " one.", L_ItemMenus2,
- "A " + @item_colors$[8] + " one.", L_ItemMenus2,
- "A " + @item_colors$[9] + " one.", L_ItemMenus2,
- "A " + @item_colors$[10] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[0] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[1] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[2] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[3] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[4] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[5] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[6] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[7] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[8] + " one.", L_ItemMenus2,
+ "A " + $@DYE_color_names$[9] + " one.", L_ItemMenus2,
+ "A White one.", L_ItemMenus2,
"Hum. I changed my mind. Later maybe.", L_end;
L_ItemMenus2:
@@ -985,8 +993,8 @@ L_ItemMenus2:
delitem @chest_equip_id, 1;
set Zeny, Zeny - @SORCERER_ROBE_SEW_ZENY;
getitem @new_sr_id, 1;
- mes "Lora Tay adjusts her glasses and removes carefully the " + @item_colors$[@current_linecolor] + " string of the robe.";
- mes "Then she grabs the " + @item_colors$[@chosen_color] + " cotton cloth, unfolds it and pins her needle in it.";
+ mes "Lora Tay adjusts her glasses and removes carefully the " + $@DYE_color_names$[@current_linecolor] + " string of the robe.";
+ mes "Then she grabs the " + $@DYE_color_names$[@chosen_color] + " cotton cloth, unfolds it and pins her needle in it.";
next;
mes "She begins to sew the new string onto the sorcerer robe.";
next;
diff --git a/world/map/npc/011-1/auldsbel.txt b/world/map/npc/011-1/auldsbel.txt
index f8315c18..23e3f84a 100644
--- a/world/map/npc/011-1/auldsbel.txt
+++ b/world/map/npc/011-1/auldsbel.txt
@@ -993,7 +993,7 @@ L_learn_spell:
mes "\"You can turn the log into a wooden figurine by imagining the creature whose shape you want in your head and saying `" + getspellinvocation("transmute-wood-to-figurine") + ",' followed by the last syllable of the name of the creature you want to shape it into.\"";
next;
mes "[Auldsbel the Wizard]";
- mes "\"So `" + getspellinvocation("transmute-wood-to-figurine") + " lurk' for a Skrytlurk figurine, for example. If you know what a Skrytlurk is, I mean, otherwise you will have a hard time imagining it. You may want to try some others instead, though.\"";
+ mes "\"So `" + getspellinvocation("transmute-wood-to-figurine") + " lurk' for a Skytlurk figurine, for example. If you know what a Skytlurk is, I mean, otherwise you will have a hard time imagining it. You may want to try some others instead, though.\"";
next;
mes "[Auldsbel the Wizard]";
mes "\"Oh... and it has to be the old Tritan name. Most creatures nowadays have very different names, but some old Tritan names have survived. Just try some, until you find one that fits.\"";
@@ -1007,10 +1007,10 @@ L_learn_spell:
L_repeat_spell:
mes "[Auldsbel the Wizard]";
- mes "\"The invocation is `" + getspellinvocation("transmute-wood-to-figurine") + ",' followed by the last syllable of the name of the creature you want to shape the log into. So `" + getspellinvocation("transmute-wood-to-figurine") + " lurk' for a Skrytlurk figurine.\"";
+ mes "\"The invocation is `" + getspellinvocation("transmute-wood-to-figurine") + ",' followed by the last syllable of the name of the creature you want to shape the log into. So `" + getspellinvocation("transmute-wood-to-figurine") + " lurk' for a Skytlurk figurine.\"";
next;
mes "[Auldsbel the Wizard]";
- mes "\"But keep two things in mind: First, you must KNOW what the creature looks like – so a Skrytlurk probably won't work – and second, you must use the old Tritan name of it. `Fluffy' and `Scorpion' are modern names, so those won't work, you should try some others.\"";
+ mes "\"But keep two things in mind: First, you must KNOW what the creature looks like – so a Skytlurk probably won't work – and second, you must use the old Tritan name of it. `Fluffy' and `Scorpion' are modern names, so those won't work, you should try some others.\"";
next;
mes "[Auldsbel the Wizard]";
mes "\"And make sure to keep notes of your spells! In the future, I will only tell you once.\"";
diff --git a/world/map/npc/011-6/crastur.txt b/world/map/npc/011-6/crastur.txt
index 6304acb8..679a2c9d 100644
--- a/world/map/npc/011-6/crastur.txt
+++ b/world/map/npc/011-6/crastur.txt
@@ -81,6 +81,8 @@ L_Jibber_Cont:
mes "";
mes "\"Bring me proof that you killed all of the pirates!\"";
next;
+ set @spants_state, 5;
+ callsub S_Update_Spants;
menu
"\"I have it right here\"", L_Bandana,
"\"What kind of proof?\"", L_Pirate_Proof;
@@ -91,8 +93,6 @@ L_Pirate_Proof:
mes "";
mes "\"It is for sure the Pirates give their souls for the rescue of their booty.\"";
mes "\"Bring me something unique from their treasure and I will give you those plans in return.\"";
- set @spants_state, 5;
- callsub S_Update_Spants;
menu
"\"I have it with me.\"", L_Bandana,
"\"I will try my best.\"", L_Close;
diff --git a/world/map/npc/012-1/injured-mouboo.txt b/world/map/npc/012-1/injured-mouboo.txt
index 58a6af50..09e27c80 100644
--- a/world/map/npc/012-1/injured-mouboo.txt
+++ b/world/map/npc/012-1/injured-mouboo.txt
@@ -195,7 +195,7 @@ L_dead:
getinventorylist;
if (@inventorylist_count == 100)
goto L_nopickup;
- getitem "BlackTurtleneckSweater", 1;
+ getitem "BlackTurtleneck", 1;
mes "You pull out the sweater and stuff it into your backpack.";
set @Q_status, @STATE_TOOK_KILL_REWARD;
callsub S_update_var;
diff --git a/world/map/npc/012-1/shops.txt b/world/map/npc/012-1/shops.txt
index f93ec464..3620b2c9 100644
--- a/world/map/npc/012-1/shops.txt
+++ b/world/map/npc/012-1/shops.txt
@@ -1,6 +1,6 @@
//
-012-1,36,99,0|shop|#FlowerShop|127,RedRose:*1,PinkRose:*1,YellowRose:*1,WhiteRose:*1,OrangeRose:*1,DarkRedRose:*1,RedTulip:*1,PinkTulip:*1,YellowTulip:*1,WhiteTulip:*1,OrangeTulip:*1
+012-1,36,99,0|shop|#FlowerShop|32767,RedRose:*1,PinkRose:*1,YellowRose:*1,WhiteRose:*1,OrangeRose:*1,DarkRedRose:*1,RedTulip:*1,PinkTulip:*1,YellowTulip:*1,WhiteTulip:*1,OrangeTulip:*1
012-1,36,99,0|script|Blossom|163
{
diff --git a/world/map/npc/013-1/flowerpentagram.txt b/world/map/npc/013-1/flowerpentagram.txt
index 5be2c99a..001b7e0a 100644
--- a/world/map/npc/013-1/flowerpentagram.txt
+++ b/world/map/npc/013-1/flowerpentagram.txt
@@ -1,4 +1,4 @@
-013-1,1,1,0|script|#FlowerPentagram|127
+013-1,1,1,0|script|#FlowerPentagram|32767
{
end;
diff --git a/world/map/npc/015-1/barrier.txt b/world/map/npc/015-1/barrier.txt
index a87cfd23..ad20257d 100644
--- a/world/map/npc/015-1/barrier.txt
+++ b/world/map/npc/015-1/barrier.txt
@@ -1,7 +1,7 @@
// This barrier is for checking whether the player went outside after
// progressing with the cat quest.
-015-1,59,32,0|script|#CatOutsideBarrier|127,1,1
+015-1,59,32,0|script|#CatOutsideBarrier|32767,1,1
{
set @catNeedsAlone, 0;
end;
diff --git a/world/map/npc/017-9/secret.txt b/world/map/npc/017-9/secret.txt
index 555d6837..4c48f0f7 100644
--- a/world/map/npc/017-9/secret.txt
+++ b/world/map/npc/017-9/secret.txt
@@ -1,4 +1,4 @@
-009-1,42,43,0|script|#SecretDoor|127,0,0
+009-1,42,43,0|script|#SecretDoor|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 26, 25;
@@ -8,7 +8,7 @@ L_close:
close;
}
-020-1,60,76,0|script|#SecretDoor2|127,0,0
+020-1,60,76,0|script|#SecretDoor2|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 22, 22;
@@ -18,7 +18,7 @@ L_close:
close;
}
-001-1,54,118,0|script|#SecretDoor3|127,0,0
+001-1,54,118,0|script|#SecretDoor3|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 30, 22;
@@ -28,7 +28,7 @@ L_close:
close;
}
-027-2,118,111,0|script|#SecretDoor4|127,0,0
+027-2,118,111,0|script|#SecretDoor4|32767,0,0
{
if (getgmlevel() < 40 && !debug) goto L_close;
warp "017-9", 30, 29;
diff --git a/world/map/npc/027-2/lover.txt b/world/map/npc/027-2/lover.txt
index 5488b8e7..d1ab2a56 100644
--- a/world/map/npc/027-2/lover.txt
+++ b/world/map/npc/027-2/lover.txt
@@ -264,7 +264,7 @@ L_Soul:
getinventorylist;
if (@inventorylist_count == 100)
goto L_Full_Inv;
- getitem "SorcererRobeRed", 1;
+ getitem "SorcererRed", 1;
set @state, 7;
callsub S_Update_Mask;
mes "\"This is what mages and their apprentices wore when I lived. It is white because I wasn't a master yet.\"";
diff --git a/world/map/npc/027-6/general_krukan.txt b/world/map/npc/027-6/general_krukan.txt
index 637befc8..91d8b35f 100644
--- a/world/map/npc/027-6/general_krukan.txt
+++ b/world/map/npc/027-6/general_krukan.txt
@@ -215,17 +215,17 @@ L_End:
OnInit:
setarray $@CRYPT_FIGHT1_MESSAGES$,
- "General Krukan:* Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
- "General Krukan:* Ha, Looks like your tougher then I thought.",
- "General Krukan:* and here I thought I wasn't going to enjoy this.",
- "General Krukan:* More of them are coming!",
- "General Krukan:* Minions! Kill them already!",
- "General Krukan:* *facepalm* I knew I should have hired better help.",
- "General Krukan:* Well at least you will make a good addition to my army.",
- "General Krukan:* To the Abyss with you already!",
- "General Krukan:* How about you try a different approach and kill them already!",
- "General Krukan:* Minions! Last chance or it's back to being part of an ossuary for you!",
- "General Krukan:* Looks like if you want something done right you have to do it yourself.",
- "General Krukan:* Charge!.";
+ "General Krukan : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Krukan : Ha, Looks like your tougher then I thought.",
+ "General Krukan : and here I thought I wasn't going to enjoy this.",
+ "General Krukan : More of them are coming!",
+ "General Krukan : Minions! Kill them already!",
+ "General Krukan : *facepalm* I knew I should have hired better help.",
+ "General Krukan : Well at least you will make a good addition to my army.",
+ "General Krukan : To the Abyss with you already!",
+ "General Krukan : How about you try a different approach and kill them already!",
+ "General Krukan : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Krukan : Looks like if you want something done right you have to do it yourself.",
+ "General Krukan : Charge!.";
end;
}
diff --git a/world/map/npc/027-7/general_razha.txt b/world/map/npc/027-7/general_razha.txt
index 9a99e8b8..60886f78 100644
--- a/world/map/npc/027-7/general_razha.txt
+++ b/world/map/npc/027-7/general_razha.txt
@@ -169,7 +169,7 @@ OnPetDeath:
end;
L_CleanUpLosers:
- mapannounce "027-7", "General Razha:* Oh where did you all go, I was beginning to have fun here.", 0;
+ mapannounce "027-7", "General Razha : Oh where did you all go, I was beginning to have fun here.", 0;
mapannounce "027-4", "The battle is lost.", 0;
set $@CRYPT_FIGHT2, 0;
set $@CRYPT_FIGHT2_PLAYER_COUNT, 0;
@@ -184,7 +184,7 @@ L_CleanUpLosers:
end;
L_CleanUp:
- mapannounce "027-7", "General Razha:* How in all hells could that happen? I am lost forever.", 0;
+ mapannounce "027-7", "General Razha : How in all hells could that happen? I am lost forever.", 0;
mapannounce "027-4", "General Razha is defeated.", 0;
areatimer "027-7", 0, 0, 79, 84, 10, "General Razha::OnReward";
set $@CRYPT_FIGHT2, 0;
@@ -219,17 +219,17 @@ L_End:
OnInit:
setarray $@CRYPT_FIGHT2_MESSAGES$,
- "General Razha:* Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
- "General Razha:* Ha, Looks like your tougher then I thought.",
- "General Razha:* and here I thought I wasn't going to enjoy this.",
- "General Razha:* More of them are coming!",
- "General Razha:* Minions! Kill them already!",
- "General Razha:* *facepalm* I knew I should have hired better help.",
- "General Razha:* Well at least you will make a good addition to my army.",
- "General Razha:* To the Abyss with you already!",
- "General Razha:* How about you try a different approach and kill them already!",
- "General Razha:* Minions! Last chance or it's back to being part of an ossuary for you!",
- "General Razha:* Looks like if you want something done right you have to do it yourself.",
- "General Razha:* Charge!.";
+ "General Razha : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Razha : Ha, Looks like your tougher then I thought.",
+ "General Razha : and here I thought I wasn't going to enjoy this.",
+ "General Razha : More of them are coming!",
+ "General Razha : Minions! Kill them already!",
+ "General Razha : *facepalm* I knew I should have hired better help.",
+ "General Razha : Well at least you will make a good addition to my army.",
+ "General Razha : To the Abyss with you already!",
+ "General Razha : How about you try a different approach and kill them already!",
+ "General Razha : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Razha : Looks like if you want something done right you have to do it yourself.",
+ "General Razha : Charge!.";
end;
}
diff --git a/world/map/npc/027-8/general_terogan.txt b/world/map/npc/027-8/general_terogan.txt
index c0adafd1..099430ee 100644
--- a/world/map/npc/027-8/general_terogan.txt
+++ b/world/map/npc/027-8/general_terogan.txt
@@ -233,7 +233,7 @@ L_Failure:
goto L_NextWave;
L_CleanUpLosers:
- mapannounce "027-8", "General Terogan:* You just proved you cannot even coordinate a simple task. Come back when you are prepared", 0;
+ mapannounce "027-8", "General Terogan : You just proved you cannot even coordinate a simple task. Come back when you are prepared", 0;
set $@CRYPT_FIGHT3, 0;
set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
set $@CRYPT_FIGHT3_WAVE, 0;
@@ -248,7 +248,7 @@ L_CleanUpLosers:
end;
L_CleanUp:
- mapannounce "027-8", "General Terogan: You might have won this battle, but you will never defeat me!", 0;
+ mapannounce "027-8", "General Terogan : You might have won this battle, but you will never defeat me!", 0;
areatimer "027-8", 0, 0, 79, 84, 10, "General Terogan#Main::OnReward";
set $@CRYPT_FIGHT3, 0;
set $@CRYPT_FIGHT3_PLAYER_COUNT, 0;
@@ -284,18 +284,18 @@ L_End:
OnInit:
setarray $@CRYPT_FIGHT3_MESSAGES$,
- "General Terogan:* Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
- "General Terogan:* Ha, Looks like your tougher then I thought.",
- "General Terogan:* and here I thought I wasn't going to enjoy this.",
- "General Terogan:* More of them are coming!",
- "General Terogan:* Minions! Kill them already!",
- "General Terogan:* *facepalm* I knew I should have hired better help.",
- "General Terogan:* Well at least you will make a good addition to my army.",
- "General Terogan:* To the Abyss with you already!",
- "General Terogan:* How about you try a different approach and kill them already!",
- "General Terogan:* Minions! Last chance or it's back to being part of an ossuary for you!",
- "General Terogan:* Looks like if you want something done right you have to do it yourself.",
- "General Terogan:* Charge!.";
+ "General Terogan : Haha, Thank you mortal. You have released me from my prison. To show my graditude you can die swiftly at my hands and become part of my undead army. MUhahahahaha! Minions, Dispose of these Adventurers!",
+ "General Terogan : Ha, Looks like your tougher then I thought.",
+ "General Terogan : and here I thought I wasn't going to enjoy this.",
+ "General Terogan : More of them are coming!",
+ "General Terogan : Minions! Kill them already!",
+ "General Terogan : *facepalm* I knew I should have hired better help.",
+ "General Terogan : Well at least you will make a good addition to my army.",
+ "General Terogan : To the Abyss with you already!",
+ "General Terogan : How about you try a different approach and kill them already!",
+ "General Terogan : Minions! Last chance or it's back to being part of an ossuary for you!",
+ "General Terogan : Looks like if you want something done right you have to do it yourself.",
+ "General Terogan : Charge!.";
end;
}
diff --git a/world/map/npc/029-1/_warps.txt b/world/map/npc/029-1/_warps.txt
index 0035c309..0cd326bb 100644
--- a/world/map/npc/029-1/_warps.txt
+++ b/world/map/npc/029-1/_warps.txt
@@ -5,3 +5,4 @@
029-1,44,83|warp|To Storeroom#029-11|-1,-1,029-2,22,92
029-1,52,84|warp|To The Magic Sh#029-12|-1,-1,029-2,103,61
029-1,58,79|warp|To Two Arms#029-13|-1,-1,029-2,94,30
+029-1,49,77|warp|To The Bank#029-14|-1,-1,029-2,24,123
diff --git a/world/map/npc/029-1/barrier.txt b/world/map/npc/029-1/barrier.txt
index 1e5281a4..e6c580ad 100644
--- a/world/map/npc/029-1/barrier.txt
+++ b/world/map/npc/029-1/barrier.txt
@@ -10,10 +10,14 @@ L_Block:
end;
}
-029-1,69,61,0|script|#CandorAnnouncer|127
+029-1,69,61,0|script|#CandorAnnouncer|32767
{
end;
+OnTalk:
+ if (BaseLevel >= 40) announce "Parua : " + $@candor_npctalk$, 3; // do not show these to newbies
+ end;
+
OnCommandTalk:
- npctalk $@candor_npctalk$;
+ areatimer "029-1", 61, 61, 69, 73, 0, "#CandorAnnouncer::OnTalk";
end;
}
diff --git a/world/map/npc/029-1/dock.txt b/world/map/npc/029-1/dock.txt
index 61f8a242..f0628440 100644
--- a/world/map/npc/029-1/dock.txt
+++ b/world/map/npc/029-1/dock.txt
@@ -13,7 +13,7 @@
close;
}
-029-1,55,110,0|script|#CandorDock|127
+029-1,55,110,0|script|#CandorDock|32767
{
end;
OnCommandArrive:
diff --git a/world/map/npc/029-2/_import.txt b/world/map/npc/029-2/_import.txt
index 086ac850..29e2607a 100644
--- a/world/map/npc/029-2/_import.txt
+++ b/world/map/npc/029-2/_import.txt
@@ -3,10 +3,13 @@
map: 029-2
npc: npc/029-2/_mobs.txt
npc: npc/029-2/_warps.txt
+npc: npc/029-2/bankroom.txt
npc: npc/029-2/barrels.txt
npc: npc/029-2/barrels_config.txt
+npc: npc/029-2/cynric.txt
npc: npc/029-2/mapflags.txt
npc: npc/029-2/morgan.txt
+npc: npc/029-2/nyle.txt
npc: npc/029-2/sorfina.txt
npc: npc/029-2/stat_reset.txt
npc: npc/029-2/tanisha.txt
diff --git a/world/map/npc/029-2/_warps.txt b/world/map/npc/029-2/_warps.txt
index 061424d1..9b3d0e52 100644
--- a/world/map/npc/029-2/_warps.txt
+++ b/world/map/npc/029-2/_warps.txt
@@ -6,3 +6,4 @@
029-2,112,84|warp|To Bedroom#029-22|-1,-1,029-2,44,30
029-2,103,62|warp|To Outside#029-23|-1,-1,029-1,52,85
029-2,94,31|warp|To Outside#029-24|-1,-1,029-1,58,80
+029-2,24,124|warp|To Outside#029-25|-1,-1,029-1,49,78
diff --git a/world/map/npc/029-2/bankroom.txt b/world/map/npc/029-2/bankroom.txt
new file mode 100644
index 00000000..dea5a428
--- /dev/null
+++ b/world/map/npc/029-2/bankroom.txt
@@ -0,0 +1,9 @@
+// Nyle is part of the Tutorial.
+// He explains how to use the bank.
+// Author: Cassy
+
+029-2,36,122,0|script|#BankRoom|45,1,0
+{
+ message strcharinfo(0), "The door is locked. This must be where Cynric saves the people's money and items.";
+ end;
+}
diff --git a/world/map/npc/029-2/cynric.txt b/world/map/npc/029-2/cynric.txt
new file mode 100644
index 00000000..d9f46d85
--- /dev/null
+++ b/world/map/npc/029-2/cynric.txt
@@ -0,0 +1,9 @@
+//
+
+029-2,30,118,0|script|Cynric|161
+{
+ callfunc "ClearVariables";
+ set @npcname$, "Cynric";
+ callfunc "Banker";
+ close;
+}
diff --git a/world/map/npc/029-2/nyle.txt b/world/map/npc/029-2/nyle.txt
new file mode 100644
index 00000000..3e15d6cb
--- /dev/null
+++ b/world/map/npc/029-2/nyle.txt
@@ -0,0 +1,51 @@
+// Nyle is part of the Tutorial.
+// He explains how to use the bank.
+// Author: Cassy
+
+029-2,26,120,6|script|Nyle|101
+{
+ mes "[Nyle]";
+ mes "\"Visiting the bank too right? We're only a small village but Cynric is the best bank guy I know.\"";
+ menu
+ "Yeah, your right.", L_Close,
+ "What is banking?", L_Explain;
+
+L_Explain:
+ mes "[Nyle]";
+ mes "\"There are banks all over the world. Usually every important village or city has one.";
+ mes "You can save both items and money at a bank.\"";
+ menu
+ "How do I save items?", L_Items,
+ "How do I save money?", L_Money,
+ "Thanks!", L_Thanks;
+
+L_Items:
+ mes "[Nyle]";
+ mes "\"Let Cynric open your storage. You might also want to open your inventory.";
+ mes "Pick an item from either storage or inventory and choose what you want to do with it by clicking the right button.";
+ mes "You can also pick and drag items from one window into the other but this will move all items of this kind.";
+ next;
+ mes "Items in your storage are totally safe. Banking itself is totally safe.\"";
+ menu
+ "And how do I save money?", L_Money,
+ "Thanks!", L_Thanks;
+
+L_Money:
+ mes "[Nyle]";
+ mes "\"That's easy. Cynric will save your money when you ask him to deposit. Or you pick up your money by asking to withdraw.";
+ mes "You only have to tell him how much you want to deposit or withdraw.";
+ mes "Also you can ask how much he already save for you by checking your balance.";
+ next;
+ mes "Money in your storage is totally safe. Banking itself is totally safe.\"";
+ menu
+ "And how do I save items?", L_Items,
+ "Thanks!", L_Thanks;
+
+L_Thanks:
+ mes "[Nyle]";
+ mes "\"You are very welcome.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/029-2/sorfina.txt b/world/map/npc/029-2/sorfina.txt
index c7d6e150..8becafd3 100644
--- a/world/map/npc/029-2/sorfina.txt
+++ b/world/map/npc/029-2/sorfina.txt
@@ -245,7 +245,7 @@ L_Bye:
getitem "HitchhikersTowel", 1;
getitem "CottonShirt", 1;
getitem "RaggedShorts", 1;
- set Zeny, Zeny + 50;
+ set Zeny, Zeny + 35; // tanisha gives 5 zeny
set @tutorial_tmp, 8;
callfunc "SetTutorialMask";
goto L_Close;
diff --git a/world/map/npc/029-3/parua.txt b/world/map/npc/029-3/parua.txt
index 59e0c8b6..f2aa728c 100644
--- a/world/map/npc/029-3/parua.txt
+++ b/world/map/npc/029-3/parua.txt
@@ -105,12 +105,10 @@ L_Enjoy:
goto L_Exit;
L_Wait:
- set @seconds, ($@ANNOUNCE_TIME - gettimetick(2));
+ set @ms, ($@ANNOUNCE_TIME - gettimetick(2)) * 1000;
+ callfunc "HumanTime";
mes "[Parua]";
- if (@seconds/60 == 0)
- mes "\"Be Patient... The fight will start in " + @seconds + " seconds.\"";
- if (@seconds/60 > 0)
- mes "\"Be Patient... The fight will start in " + @seconds/60 + " minute(s).\"";
+ mes "\"Be Patient... The fight will start in " + @time$ + ".\"";
goto L_Exit;
L_NotEnough:
@@ -221,7 +219,7 @@ L_NextRound:
set $@candor_npctalk$, "The next round (level " + $@FIGHT_CAVE_LEVEL + ") is starting with " + $@FIGHT_CAVE_PLAYER_COUNT + " player(s) left alive.";
donpcevent "#CandorAnnouncer::OnCommandTalk";
- mapannounce "029-3", "Parua: The next round (level " + $@FIGHT_CAVE_LEVEL + ") is starting with " + $@FIGHT_CAVE_PLAYER_COUNT + " player(s) left alive." , 0;
+ mapannounce "029-3", "Parua : The next round (level " + $@FIGHT_CAVE_LEVEL + ") is starting with " + $@FIGHT_CAVE_PLAYER_COUNT + " player(s) left alive." , 0;
set $@MOB_1_SUMMON, 0;
set $@MOB_2_SUMMON, 0;
@@ -267,25 +265,25 @@ L_GlobalAnnounce:
L_Five_Minutes:
if ($@ANNOUNCE_TIME - gettimetick(2) > 300)
end;
- if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there is ##3only 1 fighter##1 in the cave.", 0;
- if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there is ##3only 1 fighter##1 in the cave.", 0;
+ if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. It is almost time! The fight will start in ##B##75 minutes##1##b and, at the moment, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
set $@FIGHT_CAVE_STATUS, 2;
end;
L_Ten_Minutes:
if ($@ANNOUNCE_TIME - gettimetick(2) > 600)
end;
- if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there is ##3only 1 fighter##1 in the cave.", 0;
- if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there is ##3only 1 fighter##1 in the cave.", 0;
+ if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. You still have time to prepare yourself for this fight, since it will only start in ##B##610 minutes##1##b. Right now, there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
set $@FIGHT_CAVE_STATUS, 3;
end;
L_Fifteen_Minutes:
- if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there is ##3only 1 fighter##1 in the cave.", 0;
- if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
- if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua: " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ if($@FIGHT_CAVE_PLAYER_COUNT == 1) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there is ##3only 1 fighter##1 in the cave.", 0;
+ if(($@FIGHT_CAVE_PLAYER_COUNT > 1) && ($@FIGHT_CAVE_PLAYER_COUNT < 5)) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there are ##3only " + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
+ if($@FIGHT_CAVE_PLAYER_COUNT >= 5) announce "Parua : " + $@SPONSOR$ + " invites everyone to a challenge against the powers that sleep in Candor. The fight will start in ##B##615 minutes##1##b, so prepare yourself and call your friends. At the moment there are ##0" + $@FIGHT_CAVE_PLAYER_COUNT + " fighters##1 in the cave.", 0;
set $@FIGHT_CAVE_STATUS, 4;
end;
diff --git a/world/map/npc/030-4/mana_battery.txt b/world/map/npc/030-4/mana_battery.txt
index 18507bc9..28f791c8 100644
--- a/world/map/npc/030-4/mana_battery.txt
+++ b/world/map/npc/030-4/mana_battery.txt
@@ -360,34 +360,34 @@ L_Restart:
"", // unused
"Scrrreeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaatch",
"Scrrreeeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaaatch",
- "Avalia: I am getting a weird sensation ... ",
- "Orums Homunculus:* I think they know what we are up to!",
- "Avalia:* Oh no! This is going to blow up",
- "Orums Homunculus:* The Door is locked you idiot, fight for your life.",
- "Avalia:* Guards of Honor I demand you: STOP!",
- "Orums Homunculus:* Okay, this is somewhat funny... why are they coming back?!?",
- "Avalia:* You brave fighters! Deactivate the nutcrackers! they are out of control!",
- "Orums Homunculus:* The good news is: if we make it this time we will never have to do that again!",
- "Avalia:* Oh boy we are so screwed.",
- "Orums Homunculus:* Report: I am an Idiot",
- "Avalia:* Quick, we need to kill the nutcrackers, before they ruin everything we've been working for.",
- "Orums Homunculus:* Strange they are getting more and not less.",
- "Avalia:* Oh no, they are too powerful. Fight my warriors, Fight for the spirit of Christmas.",
- "Orums Homunculus:* If I was smart enough to stop talking, it would have happened already..",
- "Avalia:* I cannot believe it, this is making them stronger. More and more of them are coming.",
- "Orums Homunculus:* I think we are almost done, the bomb should explode any second.",
- "Avalia:* Those poor creatures. Just kill them all.",
- "Orums Homunculus:* A N Y S E C O N D.",
- "Avalia:* Oh well... just try again, I trust in you.",
- "Orum's Homunculus:* just lol.",
- "Avalia:* Wow! You saved christmas.",
- "Orum's Homunculus:* Yep, it's over... and strange enough you survived.";
+ "Avalia : I am getting a weird sensation ... ",
+ "Orums Homunculus : I think they know what we are up to!",
+ "Avalia : Oh no! This is going to blow up",
+ "Orums Homunculus : The Door is locked you idiot, fight for your life.",
+ "Avalia : Guards of Honor I demand you: STOP!",
+ "Orums Homunculus : Okay, this is somewhat funny... why are they coming back?!?",
+ "Avalia : You brave fighters! Deactivate the nutcrackers! they are out of control!",
+ "Orums Homunculus : The good news is: if we make it this time we will never have to do that again!",
+ "Avalia : Oh boy we are so screwed.",
+ "Orums Homunculus : Report: I am an Idiot",
+ "Avalia : Quick, we need to kill the nutcrackers, before they ruin everything we've been working for.",
+ "Orums Homunculus : Strange they are getting more and not less.",
+ "Avalia : Oh no, they are too powerful. Fight my warriors, Fight for the spirit of Christmas.",
+ "Orums Homunculus : If I was smart enough to stop talking, it would have happened already..",
+ "Avalia : I cannot believe it, this is making them stronger. More and more of them are coming.",
+ "Orums Homunculus : I think we are almost done, the bomb should explode any second.",
+ "Avalia : Those poor creatures. Just kill them all.",
+ "Orums Homunculus : A N Y S E C O N D.",
+ "Avalia : Oh well... just try again, I trust in you.",
+ "Orum's Homunculus : just lol.",
+ "Avalia : Wow! You saved christmas.",
+ "Orum's Homunculus : Yep, it's over... and strange enough you survived.";
setarray $@xmas_final_announce$,
- "Avalia:* Oh no, not only did you slay half my Guard of Honour, but also the issue was not fixed, try to install the battery again!",
- "Orum's Homunculus:* Boy are you lame. So what now? The battery is still not placed! Go try again!",
- "Avalia:* W00t you actually made it through. I think now that the manabattery lost some of its abundant power this seems to have given those nutcrackers that didn't go crazy a good boost of life energy. Thank you for your help all and come see me for a reward.",
- "Orum's Homunculus:* Good. They are dead. Now GET OUT OF THERE, this bomb is dangerous!";
+ "Avalia : Oh no, not only did you slay half my Guard of Honour, but also the issue was not fixed, try to install the battery again!",
+ "Orum's Homunculus : Boy are you lame. So what now? The battery is still not placed! Go try again!",
+ "Avalia : W00t you actually made it through. I think now that the manabattery lost some of its abundant power this seems to have given those nutcrackers that didn't go crazy a good boost of life energy. Thank you for your help all and come see me for a reward.",
+ "Orum's Homunculus : Good. They are dead. Now GET OUT OF THERE, this bomb is dangerous!";
// Danger Cells to attack sitters
// 0: 19,20,29,29
// 1: 30,20,40,29
diff --git a/world/map/npc/031-1/dock.txt b/world/map/npc/031-1/dock.txt
index 37ec98ed..b19cf271 100644
--- a/world/map/npc/031-1/dock.txt
+++ b/world/map/npc/031-1/dock.txt
@@ -13,7 +13,7 @@
close;
}
-031-1,100,100,0|script|#NivalisDock|127
+031-1,100,100,0|script|#NivalisDock|32767
{
end;
diff --git a/world/map/npc/031-4/cindyCave.txt b/world/map/npc/031-4/cindyCave.txt
index 2bce44bf..218e4c08 100644
--- a/world/map/npc/031-4/cindyCave.txt
+++ b/world/map/npc/031-4/cindyCave.txt
@@ -238,17 +238,17 @@ L_End:
OnInit:
setarray $@FIGHT_YETI_MESSAGES$,
"", // unused
- // ":* " is magic so that it says "global announcement from"
- "Cindy:* Yetis!",
- "Cindy:* Watch out!",
- "Cindy:* More of them are coming!",
- "Cindy:* Be careful! More of them!",
- "Cindy:* Attention! There is another bunch of them!",
- "Cindy:* Hang on! More of them!",
- "Cindy:* More Yetis! Will this never end?",
- "Cindy:* There are coming more and more!",
- "Cindy:* Watch your back! There are so many of them!",
- "Cindy:* This seems to be their final attack! I believe in you!";
+ // " : " is magic so that it says "global announcement from"
+ "Cindy : Yetis!",
+ "Cindy : Watch out!",
+ "Cindy : More of them are coming!",
+ "Cindy : Be careful! More of them!",
+ "Cindy : Attention! There is another bunch of them!",
+ "Cindy : Hang on! More of them!",
+ "Cindy : More Yetis! Will this never end?",
+ "Cindy : There are coming more and more!",
+ "Cindy : Watch your back! There are so many of them!",
+ "Cindy : This seems to be their final attack! I believe in you!";
end;
/////////
diff --git a/world/map/npc/051-1/janitor.txt b/world/map/npc/051-1/janitor.txt
index f0b8b771..623690f0 100644
--- a/world/map/npc/051-1/janitor.txt
+++ b/world/map/npc/051-1/janitor.txt
@@ -1,5 +1,5 @@
// Forest janitor
-051-1,1,1,0|script|#IlliaJanitor1|127
+051-1,1,1,0|script|#IlliaJanitor1|32767
{
end;
@@ -10,7 +10,7 @@ OnCommandClean:
}
// Desert janitor
-051-1,1,1,0|script|#IlliaJanitor3|127
+051-1,1,1,0|script|#IlliaJanitor3|32767
{
end;
diff --git a/world/map/npc/051-3/ambush.txt b/world/map/npc/051-3/ambush.txt
index 63b9775f..fd663f33 100644
--- a/world/map/npc/051-3/ambush.txt
+++ b/world/map/npc/051-3/ambush.txt
@@ -52,7 +52,7 @@ L_ShouldNotBeHere:
end;
}
-051-3,1,1,0|script|#BndtTl|127
+051-3,1,1,0|script|#BndtTl|32767
{
end;
@@ -141,7 +141,7 @@ L_CaptureHelper3:
}
-051-3,29,94,0|script|Sneaky Bandit|127
+051-3,29,94,0|script|Sneaky Bandit|32767
{
end;
@@ -161,7 +161,7 @@ OnTimer3600:
}
-051-3,33,95,0|script|Another Sneaky Bandit|127
+051-3,33,95,0|script|Another Sneaky Bandit|32767
{
end;
diff --git a/world/map/npc/051-3/janitor.txt b/world/map/npc/051-3/janitor.txt
index 905fe4dd..edef5856 100644
--- a/world/map/npc/051-3/janitor.txt
+++ b/world/map/npc/051-3/janitor.txt
@@ -1,5 +1,5 @@
// Bandit cave janitor
-051-3,1,1,0|script|#IlliaJanitor2|127
+051-3,1,1,0|script|#IlliaJanitor2|32767
{
end;
diff --git a/world/map/npc/051-3/reinforcements.txt b/world/map/npc/051-3/reinforcements.txt
index e52242cd..34f5434b 100644
--- a/world/map/npc/051-3/reinforcements.txt
+++ b/world/map/npc/051-3/reinforcements.txt
@@ -48,7 +48,7 @@ OnRnfrcmts:
// Spawn 4 bandit lords
areamonster "051-3", 29, 25, 48, 39, "", 1065, 3, "Door::OnB";
initnpctimer;
- mapannounce "051-3", "Bandit Lords:* Do not let them escape!!" , 0;
+ mapannounce "051-3", "Bandit Lords : Do not let them escape!!" , 0;
areatimer "051-3", 25, 20, 80, 85, 10, "Door::OnDRnfrcmts";
end;
diff --git a/world/map/npc/052-1/janitor.txt b/world/map/npc/052-1/janitor.txt
index dbbd54dc..6acd12ed 100644
--- a/world/map/npc/052-1/janitor.txt
+++ b/world/map/npc/052-1/janitor.txt
@@ -1,6 +1,6 @@
// Illia Island janitor
-052-1,1,1,0|script|#IlliaJanitor4|127
+052-1,1,1,0|script|#IlliaJanitor4|32767
{
end;
diff --git a/world/map/npc/052-2/chest.txt b/world/map/npc/052-2/chest.txt
index 7ba0d2df..03b08b82 100644
--- a/world/map/npc/052-2/chest.txt
+++ b/world/map/npc/052-2/chest.txt
@@ -30,8 +30,10 @@ L_ShouldNotBeHere:
end;
OnInit:
- setarray $@illia_item_common_rewards, 601, 636, 637, 638, 639, 625, 626, 658, 571, 579, 876, 782, 545, 758, 4028, 602, 536, 720, 532, 570, 642;
- setarray $@illia_item_unique_rewards, 877, 878, 879, 880;
+ setarray $@illia_common_rewards$, "SteelShield", "WarlordHelmet", "KnightsHelmet", "InfantryHelmet", "CrusadeHelmet", "ChainmailShirt", "LightPlatemail", "WarlordPlate", "Setzer", "RockKnife", "WarlordBoots", "ForestArmor", "ForestBow", "WoodenStaff", "WizardHat", "WoodenShield", "ShortSword", "SilkRobe", "LeatherGloves", "BoneKnife", "JeansChaps";
+ setarray $@illia_common_rewards_n$, "Steel Shield", "Warlord Helmet", "Knights Helmet", "Infantry Helmet", "Crusade Helmet", "Chainmail Shirt", "Light Platemail", "Warlord Plate", "Setzer", "Rock Knife", "Warlord Boots", "Forest Armor", "Forest Bow", "Wooden Staff", "Wizard Hat", "Wooden Shield", "Short Sword", "Silk Robe", "Leather Gloves", "Bone Knife", "Jeans Chaps";
+ setarray $@illia_unique_rewards$, "BullHelmet", "BansheeBow", "HeartOfIsis", "LazuriteRobe";
+ setarray $@illia_unique_rewards_n$, "Bull Helmet", "Banshee Bow", "Heart of Isis", "Lazurite Robe";
end;
L_ResumePick:
@@ -58,13 +60,14 @@ L_GetCommonReward:
if (@illia_current_num_rewards == $@illia_num_common_reward_items)
goto L_RewardDone;
getinventorylist;
- set @reward, $@illia_item_common_rewards[rand(getarraysize($@illia_item_common_rewards))];
- if ((checkweight(@reward, 1) == 0) || (@inventorylist_count == 100))
+ set @index, rand(getarraysize($@illia_common_rewards$));
+ set @reward$, $@illia_common_rewards$[@index];
+ if ((checkweight(@reward$, 1) == 0) || (@inventorylist_count == 100))
goto L_InventoryNoSpace;
set @illia_current_num_rewards, @illia_current_num_rewards + 1;
- getitem @reward, 1;
- mes "You found a " + getitemname(@reward) + "!";
- set @reward, 0;
+ getitem @reward$, 1;
+ mes "You found a " + $@illia_common_rewards_n$[@index] + "!";
+ set @reward$, "";
goto L_GetCommonReward;
L_GetUniqueReward:
@@ -73,17 +76,18 @@ L_GetUniqueReward:
if (Illia_Uniques_Count >= 2)
goto L_GetUniqueReward2;
getinventorylist;
- set @reward, $@illia_item_unique_rewards[rand(getarraysize($@illia_item_unique_rewards))];
- if ((checkweight(@reward, 1) == 0) || (@inventorylist_count == 100))
+ set @index, rand(getarraysize($@illia_unique_rewards$));
+ set @reward$, $@illia_unique_rewards$[@index];
+ if ((checkweight(@reward$, 1) == 0) || (@inventorylist_count == 100))
goto L_InventoryNoSpace;
next;
mes "You notice an interesting shape hidden under a cover...";
next;
set @illia_current_num_rewards, @illia_current_num_rewards + 1;
- getitem @reward, 1;
- mes "You found a " + getitemname(@reward) + "!";
+ getitem @reward$, 1;
+ mes "You found a " + $@illia_unique_rewards_n$[@index] + "!";
set Illia_Uniques_Count, Illia_Uniques_Count + 1;
- set @reward, 0;
+ set @reward$, "";
goto L_GetUniqueReward;
L_GetUniqueReward2:
diff --git a/world/map/npc/052-2/janitor.txt b/world/map/npc/052-2/janitor.txt
index 7435f005..73858ce4 100644
--- a/world/map/npc/052-2/janitor.txt
+++ b/world/map/npc/052-2/janitor.txt
@@ -1,5 +1,5 @@
// Lobby janitor
-052-2,1,1,0|script|#IlliaJanitor5|127
+052-2,1,1,0|script|#IlliaJanitor5|32767
{
end;
@@ -12,7 +12,7 @@ OnCommandClean:
}
// Storage janitor
-052-2,1,1,0|script|#IlliaJanitor6|127
+052-2,1,1,0|script|#IlliaJanitor6|32767
{
end;
@@ -24,7 +24,7 @@ OnCommandClean:
}
// Final boss janitor
-052-2,1,1,0|script|#IlliaJanitor7|127
+052-2,1,1,0|script|#IlliaJanitor7|32767
{
end;
diff --git a/world/map/npc/052-2/partyroom.txt b/world/map/npc/052-2/partyroom.txt
index ce9c9f7d..83bb51ee 100644
--- a/world/map/npc/052-2/partyroom.txt
+++ b/world/map/npc/052-2/partyroom.txt
@@ -83,7 +83,7 @@ OnTimer15000:
}
-052-2,88,15,0|script|#LuviaDaemon|127
+052-2,88,15,0|script|#LuviaDaemon|32767
{
end;
@@ -214,7 +214,7 @@ OnDeath:
end;
set $@illia_level_7_progress, 4;
killmonster "052-2", "#LuviaDaemon::OnWGD";
- mapannounce "052-2", "Luvia:* How? By mere humans! But we will see again! Enjoy your victory while it lasts, " + $@ILLIA_HERO$ + "!!", 0;
+ mapannounce "052-2", "Luvia : How? By mere humans! But we will see again! Enjoy your victory while it lasts, " + $@ILLIA_HERO$ + "!!", 0;
set $@illia_bp, $Illia_Luvia_Harvest * 16 / 10 + 120;
areatimer "052-2", 73, 11, 115, 49, 0, "#LuviaDaemon::OnBP";
diff --git a/world/map/npc/052-2/storage.txt b/world/map/npc/052-2/storage.txt
index 62f9cd46..4ddfdc09 100644
--- a/world/map/npc/052-2/storage.txt
+++ b/world/map/npc/052-2/storage.txt
@@ -27,7 +27,7 @@ L_StartItemInvoker:
}
-052-2,1,1,0|script|#ItemsInvoker|127
+052-2,1,1,0|script|#ItemsInvoker|32767
{
end;
diff --git a/world/map/npc/annuals/xmas/config.txt b/world/map/npc/annuals/xmas/config.txt
index 33ddcf97..b7a6de82 100644
--- a/world/map/npc/annuals/xmas/config.txt
+++ b/world/map/npc/annuals/xmas/config.txt
@@ -129,12 +129,12 @@ L_Main:
goto L_XmasError;
// Santas Helper quest rewards
setarray $@SantasHelper_Annual_Reward$,
- "RedTurtleneckSweater",
- "YellowTurtleneckSweater",
- "LightBlueTurtleneckSwea",
- "PinkTurtleneckSweater",
- "OrangeTurtleneckSweater",
- "PurpleTurtleneckSweater",
+ "RedTurtleneck",
+ "YellowTurtleneck",
+ "LightBlueTurtleneck",
+ "PinkTurtleneck",
+ "OrangeTurtleneck",
+ "PurpleTurtleneck",
"KnitCap",
"KnitCap";
diff --git a/world/map/npc/functions/DyeConfig.txt b/world/map/npc/functions/DyeConfig.txt
new file mode 100644
index 00000000..1da1e734
--- /dev/null
+++ b/world/map/npc/functions/DyeConfig.txt
@@ -0,0 +1,42 @@
+009-2,32,105,0|script|#DyeChecker|-1
+{
+ end;
+OnInit:
+ /******************************
+ Config Starts Here
+ ******************************/
+ setarray $@DYE_color_names$, "Red", "Green", "Dark Blue", "Yellow", "Light blue", "Pink", "Black", "Orange", "Purple", "Dark Green";
+ setarray $@DYE_colors$, "Red", "Green", "DarkBlue", "Yellow", "LightBlue", "Pink", "Black", "Orange", "Purple", "DarkGreen";
+
+ setarray $@DYE_items$, "CottonShirt", "CottonCloth", "VNeckSweater", "Turtleneck", "CottonShorts", "CottonTrousers", "CottonSkirt", "Miniskirt", "TankTop", "ShortTankTop", "SilkRobe", "CottonHeadband", "DesertHat", "CottonBoots", "CottonGloves", "RabbitEars", "WizardHat", "BowlerHat", "BowlerHatBrown", "FineDress", "Contributor", "SorcererRed", "SorcererGreen", "SorcererDBlue", "SorcererYellow", "SorcererLBlue", "SorcererPink", "SorcererBlack", "SorcererOrange", "SorcererPurple", "SorcererDGreen", "SorcererWhite";
+ setarray $@DYE_item_names$, "Cotton Shirt", "Cotton Cloth", "V-Neck Sweater", "Turtleneck Sweater", "Cotton Shorts", "Cotton Trousers", "Cotton Skirt", "Miniskirt", "Tank Top", "Short Tank Top", "Silk Robe", "Cotton Headband", "Desert Hat", "Cotton Boots", "Cotton Gloves", "Rabbit Ears", "Wizard Hat", "Bowler Hat", "Bowler Hat (brown)", "Fine Dress", "Contributor Shirt", "Sorcerer Robe (Red)", "Sorcerer Robe (Green)", "Sorcerer Robe (Dark Blue)", "Sorcerer Robe (Yellow)", "Sorcerer Robe (Light Blue)", "Sorcerer Robe (Pink)", "Sorcerer Robe (Black)", "Sorcerer Robe (Orange)", "Sorcerer Robe (Purple)", "Sorcerer Robe (Dark Green)", "Sorcerer Robe (White)";
+ /******************************
+ Config Ends Here
+ ******************************/
+
+ set $@w, 0;
+ freeloop 1; // do not check for infinity loop
+ callsub S_Array;
+ freeloop 0; // re-enable infinity loop check
+ set $@w, 0;
+ set $@c, 0;
+ end;
+
+S_Array:
+ if(getitemname($@DYE_items$[$@w]) == "Unknown Item") goto L_Fail;
+ set $@c, 0;
+ callsub S_Color;
+ set $@w, $@w + 1;
+ if($@w < getarraysize($@DYE_items$)) goto S_Array;
+ return;
+
+L_Fail:
+ debugmes "Dye Fail: "+$@DYE_items$[$@w];
+ mapexit;
+
+S_Color:
+ if(getitemname($@DYE_colors$[$@c] + $@DYE_items$[$@w]) == "Unknown Item") goto L_Fail;
+ set $@c, $@c + 1;
+ if($@c < getarraysize($@DYE_colors$)) goto S_Color;
+ return;
+}
diff --git a/world/map/npc/functions/ferry.txt b/world/map/npc/functions/ferry.txt
index 3d5f8ebb..aad92b14 100644
--- a/world/map/npc/functions/ferry.txt
+++ b/world/map/npc/functions/ferry.txt
@@ -40,8 +40,6 @@ L_NextDock:
donpcevent "#k1sound::OnCommandDing";
donpcevent "#k2sound::OnCommandDing";
- //mapannounce "035-2", " Koga - Main:* Now arriving in "+$@MainDocks$[$@MainCurrentDock]+".", 0;
- //mapannounce "036-2", " Koga - Candor:* Now arriving in "+$@CandorDocks$[$@CandorCurrentDock]+".", 0;
initnpctimer;
if($@MainCurrentDock == 2) goto L_k1city1;
@@ -52,8 +50,6 @@ L_NextDock:
OnTimer8000:
if ($@DockTickCount > $@DockLeaveCount)
goto L_NextDock;
- //mapannounce "035-2", "Koga - Main:* Now docked in "+$@MainDocks$[$@MainCurrentDock]+", Departing soon", 0;
- //mapannounce "036-2", "Koga - Candor:* Now docked in "+$@CandorDocks$[$@CandorCurrentDock]+", Departing soon", 0;
set $@DockTickCount, $@DockTickCount + 1;
initnpctimer;
end;
diff --git a/world/map/npc/functions/game_rules.txt b/world/map/npc/functions/game_rules.txt
index cbd4b8fb..d0b30c0d 100644
--- a/world/map/npc/functions/game_rules.txt
+++ b/world/map/npc/functions/game_rules.txt
@@ -78,14 +78,14 @@ L_French:
goto L_End;
L_Spanish:
- mes "Los jugadores que infrinjan las siguientes reglas pueden ser bloqueados (incluso permanentemente) o se reiniciarán al nivel 1 sus personajes, según el criterio de los GM:";
- mes "1. No abuse de otros jugadores (esto incluye insultos, malas palabras, y similares dirigidas a una o varias personas)";
- mes "2. No utilizar programas automáticos (incluyendo CUALQUIER actividad con el usuario lejos del teclado o el seguimiento automático)";
- mes "3. No envíe mensajes publicitarios o inunde el chat de mensajes (incluyendo los mensajes de intercambio)";
+ mes "Los jugadores que rompan las siguientes reglas pueden ser bloqueados (incluso permanentemente), o se les restablecerán sus personajes, según el criterio del GM:";
+ mes "1. No abusar de otros jugadores (insultos, malas palabras, y similares dirigidas a una o varias personas)";
+ mes "2. No utilizar programas automáticos (incluyendo el seguimiento automático y CUALQUIER otra actividad mientras el jugador está lejos del teclado)";
+ mes "3. No enviar mensajes publicitarios ni inundar el chat de mensajes (incluyendo los mensajes de intercambio)";
mes "4. No mendigar.";
- mes "5. Escriba únicamente en Inglés en el chat público";
- mes "6. Trate a los demás de la misma forma que le gustaría ser tratado";
- mes "El uso de programas automáticos para jugar sin estar frente al teclado se determinará hablando con los jugadores que estén moviéndose y/o atacando.";
+ mes "5. Hablar únicamente en Inglés en el chat público";
+ mes "6. Tratar a los demás de la misma forma que le gustaría ser tratado";
+ mes "El uso de programas automáticos para jugar sin estar frente al teclado será determinado al hablar con los jugadores que estén moviéndose y/o atacando.";
mes "El seguimiento automático será determinado por observación.";
goto L_End;
@@ -125,15 +125,15 @@ L_Polish:
goto L_End;
L_Italian:
- mes "ATTENTION: this translation is outdated. Please refer to the English version and submit a patch.";
- mes "I giocatori che infrangeranno le seguenti regole saranno bannati (anche permanentemente) o saranno resettati, a discrezione dei Game Masters:";
- mes "1. Vietato abusare degli altri giocatori (insulti, imprecazioni e simili, diretti verso una particolare persona o gruppi di persone)";
- mes "2. Vietato usare bot (ossia effettuare QUALSIASI attività quando non si è presenti alla tastiera)";
- mes "3. Vietato spammare / postare ripetutamente messaggi inutili (incluso spam di richieste di scambio)";
- mes "4. Vietato implorare";
- mes "5. Parlare solo inglese nella chat pubblica";
- mes "6. Tratta gli altri giocatori come vuoi che gli altri trattino te.";
- mes "I bot saranno determinati in base alle risposte e ai movimenti dei giocatori esaminati.";
+ mes "Gli account dei giocatori che infrangeranno le seguenti regole verranno bloccati (anche permanentemente) o i loro personaggi saranno resettati, a discrezione dei GM:";
+ mes "1. Non trattare male gli altri giocatori (questo include insulti, imprecazioni, e simili, diretti verso una persona in particolare o verso gruppi di persone)";
+ mes "2. Non usare bot (ossia non effettuare NESSUNA attività quando non si è al computer)";
+ mes "3. Non effettuare spam o scrivere ripetutamente messaggi inutili (incluso spam con richieste di scambio)";
+ mes "4. Non fare il mendicante, ovvero non importunare gli altri chiedendo soldi o oggetti";
+ mes "5. Non parlare altre lingue al di fuori dell'inglese nella chat pubblica";
+ mes "6. Non fare agli altri ciò che non vuoi sia fatto a te.";
+ mes "I bot saranno individuati scrivendo ai giocatori sospetti che attaccano o camminano, esaminandone le risposte e i movimenti.";
+ mes "Chiunque segua automaticamente un altro giocatore senza dimostrare di non essere un bot, verrà considerato come tale.";
goto L_End;
L_End:
diff --git a/world/map/npc/functions/time.txt b/world/map/npc/functions/time.txt
index 695c4cec..7d16a200 100644
--- a/world/map/npc/functions/time.txt
+++ b/world/map/npc/functions/time.txt
@@ -61,13 +61,20 @@ function|script|time_stamp
// HumanTime - returns a human-readable time
// author: meko
-// Variables:
+// Internal variables:
+// @separator$, @unit$, @unit2$, @unit3$, @unit4$, @unit5$
+// @seconds, @minutes, @hours, @days
+
+// Public Variables:
// input @ms integer
// output @time$ string
function|script|HumanTime
{
set @time$, "now";
+ if(@seconds) set @ms, @ms + (@seconds * 1000);
+ if(@minutes) set @ms, @ms + (@minutes * 60000);
+ if(@days) set @ms, @ms + (@days * 1440000);
if(@ms < 1000) goto L_Millis; // under 1 second we have nothing to count
set @seconds, @ms / 1000;
set @ms, @ms % 1000;
@@ -77,8 +84,11 @@ function|script|HumanTime
if(@minutes < 60) goto L_Minutes;
set @hours, @minutes / 60;
set @minutes, @minutes % 60;
- if(@hours < 60) goto L_Hours;
- return;
+ if(@hours < 24) goto L_Hours;
+ set @days, @hours / 24;
+ set @hours, @hours % 24;
+ if(@days) goto L_Days;
+ goto L_Clean;
L_Millis:
set @time$, @ms + "ms";
@@ -91,7 +101,7 @@ L_Seconds:
if(@ms > 1) set @unit2$, "milliseconds";
set @time$, @seconds + " " + @unit$;
if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit2$;
- return;
+ goto L_Clean;
L_Minutes:
set @unit$, "minute";
@@ -105,7 +115,7 @@ L_Minutes:
if(@ms) set @separator$, ", ";
if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit2$;
if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit3$;
- return;
+ goto L_Clean;
L_Hours:
set @unit$, "hour";
@@ -124,5 +134,42 @@ L_Hours:
if(@ms) set @separator$, ", ";
if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$;
if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$;
+ goto L_Clean;
+
+L_Days:
+ set @unit$, "day";
+ if(@hours > 1) set @unit$, "days";
+ set @unit2$, "hour";
+ if(@hours > 1) set @unit2$, "hours";
+ set @unit3$, "minute";
+ if(@minutes > 1) set @unit3$, "minutes";
+ set @unit4$, "second";
+ if(@seconds > 1) set @unit4$, "seconds";
+ set @unit5$, "millisecond";
+ if(@ms > 1) set @unit5$, "milliseconds";
+ set @time$, @days + " " + @unit$;
+ set @separator$, " and ";
+ if(@minutes || @seconds || @ms) set @separator$, ", ";
+ if(@hours) set @time$, @time$ + @separator$ + @hours + " " + @unit2$;
+ set @separator$, " and ";
+ if(@seconds || @ms) set @separator$, ", ";
+ if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit3$;
+ set @separator$, " and ";
+ if(@ms) set @separator$, ", ";
+ if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$;
+ if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$;
+ goto L_Clean;
+
+L_Clean:
+ set @unit$, "";
+ set @unit2$, "";
+ set @unit3$, "";
+ set @unit4$, "";
+ set @unit5$, "";
+ set @seconds, 0;
+ set @minutes, 0;
+ set @hours, 0;
+ set @days, 0;
+ set @separator$, "";
return;
}
diff --git a/world/map/npc/functions/travelers.txt b/world/map/npc/functions/travelers.txt
index a1db712e..07b084d9 100644
--- a/world/map/npc/functions/travelers.txt
+++ b/world/map/npc/functions/travelers.txt
@@ -189,6 +189,13 @@ L_TravelPachua:
set @NextLocationMap$, "006-1";
set @NextLocationX, 28;
set @NextLocationY, 97;
+ if(QUEST_MIRIAM_start != 0) goto L_Cheat;
+ goto L_TravelChecks;
+
+L_Cheat:
+ set QUEST_MIRIAM_cheat, 1;
+ set QUEST_MIRIAM_run, gettimetick(2) - QUEST_MIRIAM_start;
+ set QUEST_MIRIAM_start, 0;
goto L_TravelChecks;
L_TravelBarbarians:
diff --git a/world/map/npc/items/warpTowels.txt b/world/map/npc/items/warpTowels.txt
index 32a52aff..f586ed99 100644
--- a/world/map/npc/items/warpTowels.txt
+++ b/world/map/npc/items/warpTowels.txt
@@ -1,7 +1,8 @@
// See #TravelConfig
function|script|WarpTowel
{
- if (TowelLastUsed > (gettimetick(2) - 1800))
+ set @seconds, TowelLastUsed - (gettimetick(2) - 1800);
+ if (@seconds > 0)
goto L_DontPanic;
if (isin("botcheck",25,27,51,47))
goto L_Prison;
@@ -102,6 +103,13 @@ L_Lime:
set @NextLocationMap$, "006-1";
set @NextLocationX, 28;
set @NextLocationY, 97;
+ if(QUEST_MIRIAM_start != 0) goto L_Cheat;
+ goto L_WarpPlayer;
+
+L_Cheat:
+ set QUEST_MIRIAM_cheat, 1;
+ set QUEST_MIRIAM_run, gettimetick(2) - QUEST_MIRIAM_start;
+ set QUEST_MIRIAM_start, 0;
goto L_WarpPlayer;
L_Save:
@@ -123,15 +131,16 @@ L_BreakChance:
goto L_End;
L_Forbid:
- message strcharinfo(0), "This area is protected by a force that doesn't tolerate the power of the Towel.";
+ message strcharinfo(0), "##1Towel : This area is protected by a force that doesn't tolerate the power of the Towel.";
goto L_Keep;
L_Prison:
- message strcharinfo(0), "You must be warped by a GM to leave the botcheck area.";
+ message strcharinfo(0), "##1Towel : You must be warped by a GM to leave the botcheck area.";
goto L_Keep;
L_DontPanic:
- message strcharinfo(0), "Your towel is still too low on power to jump again.";
+ callfunc "HumanTime";
+ message strcharinfo(0), "##3Towel : Your towel is still too low on power to jump again. Try again in ##B"+ @time$ + "##b.";
goto L_Keep;
L_Keep:
@@ -168,4 +177,3 @@ L_Return:
cleararray $@warpTowels$, "", getarraysize($@warpTowels$);
return;
}
-
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index d9fbd64d..1414f681 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -27,6 +27,7 @@ npc: npc/functions/global_event_handler.txt
npc: npc/functions/stat_reset.txt
npc: npc/functions/quiz.txt
npc: npc/functions/dynamic_menu.txt
+npc: npc/functions/DyeConfig.txt
// Item Functions
npc: npc/items/magic_gm_top_hat.txt