summaryrefslogtreecommitdiff
path: root/world/map/npc
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc')
-rw-r--r--world/map/npc/001-2/casino.txt16
-rw-r--r--world/map/npc/021-1/north_shops.txt13
-rw-r--r--world/map/npc/021-1/weellos.txt17
-rw-r--r--world/map/npc/021-2/_import.txt1
-rw-r--r--world/map/npc/021-2/kylian.txt275
-rw-r--r--world/map/npc/021-2/yanis.txt27
-rw-r--r--world/map/npc/022-1/_import.txt1
-rw-r--r--world/map/npc/022-1/adrian.txt52
8 files changed, 393 insertions, 9 deletions
diff --git a/world/map/npc/001-2/casino.txt b/world/map/npc/001-2/casino.txt
index 1ee4770a..d058b8c1 100644
--- a/world/map/npc/001-2/casino.txt
+++ b/world/map/npc/001-2/casino.txt
@@ -1,4 +1,18 @@
-//
+// Casino
+
+// takes part in quest given by 021-2/kylian.txt
+001-2.gat,32,72,0|script|#CasinoEntrance|32767,1,1,{
+ set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowCasinoNT;
+ set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+ if (@kylian != 6)
+ goto L_End;
+ message strcharinfo(0), "You wonder if Kylian would like to visit the casino in the evening.";
+ goto L_End;
+
+L_End:
+ set @kylian, 0;
+ end;
+}
001-2.gat,134,23,0|script|Valdo|117,{
mes "[Valdo the Worker]";
diff --git a/world/map/npc/021-1/north_shops.txt b/world/map/npc/021-1/north_shops.txt
index c02141d3..a64a1d87 100644
--- a/world/map/npc/021-1/north_shops.txt
+++ b/world/map/npc/021-1/north_shops.txt
@@ -6,9 +6,22 @@
021-1.gat,136,38,0|shop|Inar|108,CottonShirt :-1,CottonShorts :-1,WhiteCottonBoots :-1,DesertShirt :-1,SilkRobe :-5,DesertHat :-4
// A snobby store that won't sell to the player
+// takes part in quest given by 021-2/kylian.txt
021-1.gat,138,29,0|script|Latoy|106,{
+
+ set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowLatoyNT;
+ set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+
mes "[Latoy]";
mes "\"There's nothing here you could want or afford.\"";
+ if (@kylian != 7)
+ goto L_Close;
+ next;
+ mes "Maybe this is the kind of shop Kylian is looking for?";
+ goto L_Close;
+
+L_Close:
+ set @kylian, 0;
close;
}
diff --git a/world/map/npc/021-1/weellos.txt b/world/map/npc/021-1/weellos.txt
index ec57a457..d86f7221 100644
--- a/world/map/npc/021-1/weellos.txt
+++ b/world/map/npc/021-1/weellos.txt
@@ -1,6 +1,10 @@
// A historian
+// takes part in quest given by 021-2/kylian.txt
021-1.gat,130,125,0|script|Weellos|103,{
+ set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowWeellosNT;
+ set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+
set @hw2011_npc_id, $@hw2011_npc_weellos;
if (gettime(7) == $@hw2011_year && gettime(6) == 10 && gettime(5) >= $@hw2011_start_day)
goto L_TrickOrTreat;
@@ -10,12 +14,23 @@ L_Begin:
mes "[Weellos]";
mes "\"This is a very historic building. One of the oldest in the area.\"";
- close;
+ goto L_BeforeClose;
// If the player is inside the fence with Weellos
L_In:
mes "[Weellos]";
mes "\"What did you think of the historic building?\"";
+ goto L_BeforeClose;
+
+L_BeforeClose:
+ if (@kylian != 4)
+ goto L_Close;
+ next;
+ mes "You wonder if Kylian would be interested to see this building.";
+ goto L_Close;
+
+L_Close:
+ set @kylian, 0;
close;
L_TrickOrTreat:
diff --git a/world/map/npc/021-2/_import.txt b/world/map/npc/021-2/_import.txt
index 592a9a3f..bb80fc32 100644
--- a/world/map/npc/021-2/_import.txt
+++ b/world/map/npc/021-2/_import.txt
@@ -8,6 +8,7 @@ npc: npc/021-2/government_building.txt
npc: npc/021-2/heathin.txt
npc: npc/021-2/inya.txt
npc: npc/021-2/jhedia.txt
+npc: npc/021-2/kylian.txt
npc: npc/021-2/mapflags.txt
npc: npc/021-2/workshop.txt
npc: npc/021-2/yanis.txt
diff --git a/world/map/npc/021-2/kylian.txt b/world/map/npc/021-2/kylian.txt
new file mode 100644
index 00000000..0376f0ca
--- /dev/null
+++ b/world/map/npc/021-2/kylian.txt
@@ -0,0 +1,275 @@
+// Kylian is a businessman from Argeas who wants to eventually open a shop in Tulimshar
+// asks the player for several information about the city
+// Quest uses Nibble 4 and 5 of QUEST_NorthTulimshar
+// Author: Jenalya
+
+// Nibble 4 is used as flags to indicate if the player knows certain places/persons
+// Bit 0: player talked to Yanis in the government building
+// Bit 1: player talked to Latoy on the market in North Tulimshar
+// Bit 2: player talked to Weellos as the historic building
+// Bit 3: player was in the casino rooms
+
+// Nibble 5 is used to save the quest progress with Kylian
+// state 1: player has the task to get the luggage from the harbor
+// state 2: Adrian gave the luggage to the player
+// state 3: player gave luggage to Kylian and Kylian asks who to talk to for the shop license
+// after the player answered this, @KylianNTLicense is set.
+// the player can only continue the quest when logging out and therefore setting that value to 0 again
+// state 4: Kylian asks for a historical building to get some cultural knowledge
+// state 5: Kylian asks where to get some typical food
+// after the player answered this, @KylianNTSightSeeing is set.
+// the player can only continue the quest when logging out and therefore setting that value to 0 again
+// state 6: Kylian asks where to go to have some fun in the evening (casino)
+// state 7: Kylian asks where to get exquisite clothing before going out in the evening
+// after the player answered this, @KylianNTSightSeeing is set.
+// the player can only continue the quest when logging out and therefore setting that value to 0 again
+// state 8: Kylian was in the casino and gives a desert hat as reward
+// state 9: To be continued here
+
+// temporary variables used to check if the player logged out or left the building in the meanwhile
+// this is to ensure some 'time in between' different actions of the quest
+// @KylianNTLicense
+// @KylianNTSightSeeing
+// @KylianNTCasino
+
+-|script|#businessmanNTconfig|-1,{
+OnInit:
+ // Nibble 4
+ set $@knowYanisNT, 0x10000;
+ set $@knowLatoyNT, 0x20000;
+ set $@knowWeellosNT, 0x40000;
+ set $@knowCasinoNT, 0x80000;
+
+ set $@businessmanNT_MASK, NIBBLE_5_MASK;
+ set $@businessmanNT_SHIFT, NIBBLE_5_SHIFT;
+ end;
+}
+
+021-2.gat,25,67,0|script|#KylianOut|32767,1,1,{
+ set @KylianNTLicense, 0;
+ set @KylianNTSightSeeing, 0;
+ set @KylianNTCasino, 0;
+ end;
+}
+
+021-2.gat,32,92,0|script|Kylian|193,{
+
+ set @state, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+
+ set @acorn_amount, 12;
+ set @suitcase_money, 100;
+ set @suitcase_exp, 50;
+ set @license_money, 50;
+ set @license_exp, 20;
+ set @sightseeing_money, 50;
+ set @sightseeing_exp, 20;
+ set @food_money, 50;
+ set @food_exp, 20;
+ set @clothes_money, 50;
+ set @clothes_exp, 20;
+ set @fun_money, 50;
+ set @fun_exp, 20;
+
+ if (@state == 9) goto L_Done;
+ if (@KylianNTCasino) goto L_CasinoDone;
+ if (@state == 8) goto L_DesertHat;
+ if (@state == 7) goto L_Clothes;
+ if (@KylianNTSightSeeing) goto L_SightSeeingDone;
+ if (@state == 6) goto L_Casino;
+ if (@state == 5) goto L_Food;
+ if (@KylianNTLicense) goto L_LicenseDone;
+ if (@state == 4) goto L_SightSeeing;
+ if (@state == 3) goto L_ShopLicense;
+ if (@state >= 1) goto L_Suitcase;
+
+ mes "[Kylian]";
+ mes "\"Ah, are you the room service? I've some requests.\"";
+ menu
+ "Sure, what can I do for you?",L_Luggage,
+ "No, I'm not!",-;
+ mes "[Kylian]";
+ mes "\"Too bad. Would you be interested in earning some quick money with some errands regardless?\"";
+ menu
+ "I'm a great adventurer! I don't do errands.",L_Close,
+ "No, I'm busy.",L_Close,
+ "Mh, ok.",L_Luggage;
+L_Luggage:
+ mes "[Kylian]";
+ mes "\"I need someone to get my luggage from the docks. Show this paper to the sailor who's taking care about the luggage.\"";
+ mes "He gives you his ticket which you store in your pocket, seperated from your inventory.";
+ set @state, 1;
+ callsub S_Update_Mask;
+ goto L_Close;
+
+L_Suitcase: // @state >= 1, but below 3
+ mes "[Kylian]";
+ mes "\"Did you already get my luggage from the docks?\"";
+ if (@state != 2)
+ goto L_Close;
+ menu
+ "Here it is.",-,
+ "I'm on my way, don't worry.",L_Close;
+ if (countitem("LeatherSuitcase") < 1)
+ goto L_NoItem;
+ delitem "LeatherSuitcase", 1;
+ set Zeny, Zeny + @suitcase_money;
+ getexp @suitcase_exp, 0;
+ set @state, 3;
+ callsub S_Update_Mask;
+ mes "[Kylian]";
+ mes "\"Ah, very good. I really need to have a look at some of my papers in there.\"";
+ mes "He gives you some money.";
+ next;
+ mes "[Kylian]";
+ mes "\"Oh, and I have some acorns left, I had them with me as travelling fare. You can have them, they're tasty.";
+ mes "In case you don't like them, you could also bring them to the Tulimshar bakery. I heard they use them to make some special flour out of them.\"";
+ getitem "Acorn", @acorn_amount;
+ next;
+L_ShopLicense: // @state == 3
+ mes "[Kylian]";
+ mes "\"I'm a salesman and came to Tulimshar because I'm thinking about establishing a shop here. While I'm going through my papers, could you find out who I have to talk to in regards of opening a shop in this city?\"";
+ if (!(QUEST_NorthTulimshar & $@knowYanisNT))
+ goto L_Close;
+ menu
+ "You need to talk to Yanis in the government building.",-,
+ "I'll see what I can do.",L_Close;
+ set Zeny, Zeny + @license_money;
+ getexp @license_exp, 0;
+ set @state, 4;
+ callsub S_Update_Mask;
+ set @KylianNTLicense, 1;
+ mes "[Kylian]";
+ mes "\"Ah, excellent. That's very helpful. Could you tell me how to get to that building?\"";
+ mes "You explain the way to the building.";
+ next;
+L_LicenseDone: // the player didn't log out yet after telling about Yanis
+ mes "[Kylian]";
+ mes "\"I need to prepare my papers now. I might have some more questions later.\"";
+ goto L_Close;
+
+L_SightSeeing: // @state == 4 and logged out somewhen between getting to that state and now
+ mes "[Kylian]";
+ mes "\"You just came here the right moment. I have finished my business affairs. I think I should use my time here to also get a bit cultural knowledge about the area. Can you tell me if there are any historical places to visit?\"";
+ if (!(QUEST_NorthTulimshar & $@knowWeellosNT))
+ goto L_Close;
+ menu
+ "There is a very old historic building not far from here.",-,
+ "I don't know, but will have a look around.",L_Close;
+ set Zeny, Zeny + @sightseeing_money;
+ getexp @sightseeing_exp, 0;
+ set @state, 5;
+ callsub S_Update_Mask;
+ mes "[Kylian]";
+ mes "\"This sounds interesting. Please explain me the way.\"";
+ mes "You tell him how to get to the historic building.";
+ next;
+L_Food: // @state == 5
+ mes "[Kylian]";
+ mes "\"While I'm out, I could also get something to eat. Maybe some typical dish for this region. Do you have a good suggestion for that?\"";
+ if (TMW_Quest < 4) // didn't yet help Bernard to make his soup
+ goto L_Close;
+ menu
+ "Bernard on the bazaar makes a great soup.",-,
+ "No idea, I'll try to find out.",L_Close;
+ set Zeny, Zeny + @food_money;
+ getexp @food_exp, 0;
+ set @state, 6;
+ callsub S_Update_Mask;
+ set @KylianNTSightSeeing, 1;
+L_SightSeeingDone:
+ mes "[Kylian]";
+ mes "\"I'm going to see the historic building you told me about and try this local soup on the bazaar. Thank you for the suggestions.\"";
+ goto L_Close;
+
+L_Casino: // @state == 6 and logged out somewhen between getting to that state and now
+ mes "[Kylian]";
+ mes "\"Hello. I just came back from my sight-seeing tour. And this soup from Bernard really was delicious. I wonder what it's made of...\"";
+ next;
+ mes "\"However, I was wondering if you know about a good place to spend the evening? Some place to have fun?\"";
+ if (!(QUEST_NorthTulimshar & $@knowCasinoNT))
+ goto L_Close;
+ menu
+ "Of course! The casino!",-,
+ "Not really.",L_Close;
+ set Zeny, Zeny + @casino_money;
+ getexp @casino_exp, 0;
+ set @state, 7;
+ callsub S_Update_Mask;
+ mes "[Kylian]";
+ mes "\"Oh, there's a casino in this city? That's a wonderful thing. Where can i find it?\"";
+ mes "You explain how to get to the casino.";
+ next;
+L_Clothes: // @state == 7
+ mes "[Kylian]";
+ mes "\"I should get proper clothing before I go to the casino tonight. Do you know a reputable shop where clothing of high quality is sold?\"";
+ if (!(QUEST_NorthTulimshar & $@knowLatoyNT))
+ goto L_Close;
+ menu
+ "At the market near the harbor district...",-,
+ "Mh, I don't know.",L_Close;
+ set Zeny, Zeny + @clothes_money;
+ getexp @clothes_exp, 0;
+ set @state, 8;
+ callsub S_Update_Mask;
+ set @KylianNTCasino, 1;
+ mes "You explain about Latoy and his high quality shop.";
+ mes "[Kylian]";
+ mes "\"This seems to be exactly what I need. Thanks a lot.\"";
+ goto L_Close;
+
+L_CasinoDone:
+ mes "[Kylian]";
+ mes "\"I'm looking forward to going to the casino tonight. See me tomorrow.\"";
+ goto L_Close;
+
+L_DesertHat: // @state == 8
+ mes "Kylian looks a bit tired.";
+ mes "[Kylian]";
+ mes "\"That was an interesting night. Thanks for your suggestion to visit the casino.\"";
+ next;
+ mes "\"You helped my a lot, so I bought a souvenir for you while I was shopping.\"";
+ if ((checkweight("DesertHat", count) == 0) || (@inventory_count == 100))
+ goto L_Inventory;
+ getitem "DesertHat", 1;
+ set @state, 9;
+ callsub S_Update_Mask;
+ next;
+L_Done:
+ mes "[Kylian]";
+ mes "\"I hope to get a positive response about my shop license soon. I might have more things to do for you then, if you're interested.";
+ mes "Just stop by later.\"";
+ goto L_Close;
+
+L_Inventory:
+ mes "[Kylian]";
+ mes "\"Oh, you're carrying a lot of things. Come back when you have more room.\"";
+ goto L_Close;
+
+L_NoItem:
+ mes "[Kylian]";
+ mes "\"I don't see it! Are you trying to tease me? This is not funny!\"";
+ goto L_Close;
+
+L_Close:
+ set @acorn_amount, 0;
+ set @suitcase_money, 0;
+ set @suitcase_exp, 0;
+ set @license_money, 0;
+ set @license_exp, 0;
+ set @sightseeing_money, 0;
+ set @sightseeing_exp, 0;
+ set @food_money, 0;
+ set @food_exp, 0;
+ set @clothes_money, 0;
+ set @clothes_exp, 0;
+ set @fun_money, 0;
+ set @fun_exp, 0;
+ set @inventory_count, 0;
+ // NOT set to zero: @KylianNTLicense, @KylianNTSightSeeing and @KylianNTCasino
+ // those are used to check if the player logged out in the meanwhile
+ close;
+
+S_Update_Mask:
+ set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~($@businessmanNT_MASK)) | (@state << $@businessmanNT_SHIFT);
+ return;
+}
diff --git a/world/map/npc/021-2/yanis.txt b/world/map/npc/021-2/yanis.txt
index 0add08cf..6b47b599 100644
--- a/world/map/npc/021-2/yanis.txt
+++ b/world/map/npc/021-2/yanis.txt
@@ -1,26 +1,39 @@
+// Government official taking care about shop licenses
+// involved in quest given by 021-1/imec.txt and 021-2/kylian.txt
+
021-2.gat,33,17,0|script|Yanis|107,{
- set @state, ((QUEST_NorthTulimshar & $@ImecShopNT_MASK) >> $@ImecShopNT_SHIFT);
+ set QUEST_NorthTulimshar, QUEST_NorthTulimshar | $@knowYanisNT;
+ set @kylian, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+ set @imec, ((QUEST_NorthTulimshar & $@ImecShopNT_MASK) >> $@ImecShopNT_SHIFT);
mes "[Yanis]";
mes "\"Welcome. I'm handling issues with trading licenses for the shop owners in Tulimshar. Can I help you?\"";
- if (@state != 1)
+ if (@imec != 1)
menu
- "Nothing right now.",L_Close;
+ "Nothing right now.",L_BeforeClose;
menu
"Imec asked me to bring this petition.",-,
- "Nothing right now.",L_Close;
+ "Nothing right now.",L_BeforeClose;
mes "[Yanis]";
mes "\"Imec? I see. Give it to me.\"";
mes "Yanis has a disapprovingly look on his face. He takes the letter and writes something on another paper.";
next;
mes "[Yanis]";
mes "\"Here you have a letter of acknowledgement. You can bring that back to Imec. We will have a look at his case.\"";
- set @state, 2;
- set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~($@ImecShopNT_MASK)) | (@state << $@ImecShopNT_SHIFT);
+ set @imec, 2;
+ set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~($@ImecShopNT_MASK)) | (@imec << $@ImecShopNT_SHIFT);
+ goto L_BeforeClose;
+
+L_BeforeClose:
+ if (@kylian != 3)
+ goto L_Close;
+ next;
+ mes "You think that this is the person Kylian needs to talk to. You should tell him.";
goto L_Close;
L_Close:
- set @state, 0;
+ set @imec, 0;
+ set @kylian, 0;
close;
}
diff --git a/world/map/npc/022-1/_import.txt b/world/map/npc/022-1/_import.txt
index cc46a286..9695d72f 100644
--- a/world/map/npc/022-1/_import.txt
+++ b/world/map/npc/022-1/_import.txt
@@ -3,6 +3,7 @@
map: 022-1.gat
npc: npc/022-1/_mobs.txt
npc: npc/022-1/_warps.txt
+npc: npc/022-1/adrian.txt
npc: npc/022-1/anwar.txt
npc: npc/022-1/dock.txt
npc: npc/022-1/ferry_master.txt
diff --git a/world/map/npc/022-1/adrian.txt b/world/map/npc/022-1/adrian.txt
new file mode 100644
index 00000000..f9af1d81
--- /dev/null
+++ b/world/map/npc/022-1/adrian.txt
@@ -0,0 +1,52 @@
+// part of quest given by 021-2/kylian.txt
+// Author: Jenalya
+
+// state 1: player has the task to get the luggage from the harbor
+// state 2: Adrian gave the luggage to the player
+// state 3: player gave luggage to Kylian and Kylian asks who to talk to for the shop license
+
+022-1.gat,58,54,0|script|Adrian|213,{
+
+ set @state, ((QUEST_NorthTulimshar & $@businessmanNT_MASK) >> $@businessmanNT_SHIFT);
+
+ mes "[Adrian]";
+ mes "\"Hello. Are you here to get the luggage from some of our passengers?\"";
+ if (@state == 1)
+ menu
+ "Yes, Kylian sent me to get his luggage.",L_Get,
+ "No.",L_No;
+ menu
+ "No.",-;
+L_No:
+ mes "[Adrian]";
+ mes "\"Too bad. I wantto go and drink a beer, but I have to wait here until all the luggage is picked up.\"";
+ mes "He sighs.";
+ goto L_Close;
+
+L_Get:
+ mes "[Adrian]";
+ mes "\"Wonderful! Show me the ticket.\"";
+ mes "He checks the paper Kylian gave you and then takes a critical look at you.";
+ next;
+ getinventorylist;
+ if ((checkweight("LeatherSuitcase", 1) == 0) || (@inventory_count == 100))
+ goto L_Inventory;
+ mes "[Adrian]";
+ mes "\"Alright, here it is.\"";
+ mes "Adrain hands you a very heavy suitcase.";
+ getitem "LeatherSuitcase", 1;
+ set @state, 2;
+ set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~($@businessmanNT_MASK)) | (@state << $@businessmanNT_SHIFT);
+ goto L_Close;
+
+L_Inventory:
+ mes "[Adrian]";
+ mes "\"The suitcase is rather heavy. You doesn't look as if you can handle that.";
+ mes "Maybe if you get rid of some of the other stuff you're carrying.\"";
+ goto L_Close;
+
+L_Close:
+ set @state, 0;
+ set @inventory_count, 0;
+ close;
+}