summaryrefslogtreecommitdiff
path: root/world/map/npc/009-2
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/009-2')
-rw-r--r--world/map/npc/009-2/_import.txt4
-rw-r--r--world/map/npc/009-2/bernard.txt141
-rw-r--r--world/map/npc/009-2/entertainer.txt38
-rw-r--r--world/map/npc/009-2/peter.txt6
-rw-r--r--world/map/npc/009-2/shops.txt2
-rw-r--r--world/map/npc/009-2/trader.txt155
-rw-r--r--world/map/npc/009-2/wyara.txt7
-rw-r--r--world/map/npc/009-2/yalina.txt11
8 files changed, 363 insertions, 1 deletions
diff --git a/world/map/npc/009-2/_import.txt b/world/map/npc/009-2/_import.txt
index f3e16386..080bfeb6 100644
--- a/world/map/npc/009-2/_import.txt
+++ b/world/map/npc/009-2/_import.txt
@@ -5,8 +5,10 @@ npc: npc/009-2/_mobs.txt
npc: npc/009-2/_warps.txt
npc: npc/009-2/airlia.txt
npc: npc/009-2/alan.txt
+npc: npc/009-2/bernard.txt
npc: npc/009-2/doctor.txt
npc: npc/009-2/drunks.txt
+npc: npc/009-2/entertainer.txt
npc: npc/009-2/inspector.txt
npc: npc/009-2/kfahr.txt
npc: npc/009-2/lena.txt
@@ -19,5 +21,7 @@ npc: npc/009-2/peter.txt
npc: npc/009-2/richard.txt
npc: npc/009-2/selim.txt
npc: npc/009-2/shops.txt
+npc: npc/009-2/trader.txt
npc: npc/009-2/waitress.txt
npc: npc/009-2/wyara.txt
+npc: npc/009-2/yalina.txt
diff --git a/world/map/npc/009-2/bernard.txt b/world/map/npc/009-2/bernard.txt
new file mode 100644
index 00000000..307e7591
--- /dev/null
+++ b/world/map/npc/009-2/bernard.txt
@@ -0,0 +1,141 @@
+// Variables used: nibble 0 of QUEST_SouthTulimshar
+
+009-2.gat,67,79,0|script|Bernard|117
+{
+ // This NPC previously used the variable TMW_Quest
+ callfunc "ClearVarTMW_Quest";
+
+ set @state, ((QUEST_SouthTulimshar & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
+
+ if (@state >= 6) goto L_Done3;
+ if (@state >= 4) goto L_Done2;
+ if (@state == 3) goto L_Progress2;
+ if (@state == 2) goto L_Done1;
+ if (@state == 1) goto L_Progress;
+
+ set @TEMP, rand(2);
+ if(@TEMP == 1) goto L_Opening1;
+ goto L_Opening0;
+
+L_Opening0:
+ mes "[Bernard]";
+ mes "\"The fields are crawling with maggots. Where is Mikhail? What is taking them so long?";
+ mes "Could I ask a favor of you?\"";
+ next;
+ goto L_Ask;
+
+L_Opening1:
+ mes "[Bernard]";
+ mes "\"The taste of maggots in soup is... unforgettable, they taste simply divine!";
+ mes "I sent someone to kill me some maggots and they have yet to return. Would you help me kill some?\"";
+ next;
+ goto L_Ask;
+
+L_Ask:
+ menu
+ "Yes.", L_Yes,
+ "No.", L_Close;
+
+L_Yes:
+ set @TEMP, rand(2);
+ if(@TEMP == 1) goto L_Req1;
+ goto L_Req0;
+
+L_Req0:
+ mes "[Bernard]";
+ mes "\"Great! I need a Roasted Maggot for my soup.\"";
+ next;
+ goto L_Set;
+
+L_Req1:
+ mes "[Bernard]";
+ mes "\"Bring me a Roasted Maggot. I'll give you something if you do.\"";
+ next;
+ goto L_Set;
+
+L_Set:
+ set @state, 1;
+ callsub S_Update_Var;
+ mes "[Bernard]";
+ mes "\"Please bring it to me!\"";
+ goto L_Close;
+
+L_Progress:
+ if (countitem("RoastedMaggot") < 1) goto L_NotEnough;
+ mes "[Bernard]";
+ mes "\"Oooh, perfect! It's perfect!";
+ mes "You brought me my Roasted Maggot! Here, have some cake for your troubles.\"";
+ getinventorylist;
+ if (@inventorylist_count - (countitem("RoastedMaggot") == 1) > 99 - (countitem("CherryCake") == 0) ) goto L_TooMany;
+ delitem "RoastedMaggot", 1;
+ getexp 100, 0;
+ getitem "CherryCake", 5;
+ set @state, 2;
+ callsub S_Update_Var;
+ next;
+ mes "\"Now let's see...\"";
+ goto L_Close;
+
+L_Progress2:
+ if (countitem("MaggotSlime") < 3) goto L_NotEnough1;
+ mes "[Bernard]";
+ mes "\"Nice! They're perfect, just perfect!";
+ mes "You brought me the 3 Maggot Slimes! Here, have some beer as reward.\"";
+ getinventorylist;
+ if ((@inventorylist_count - (countitem("MaggotSlime") == 3) > 99 - (countitem("Beer") == 0) )) goto L_TooMany;
+ delitem "MaggotSlime", 3;
+ getexp 100, 0;
+ getitem "Beer", 3;
+ set @state, 4;
+ callsub S_Update_Var;
+ goto L_Close;
+
+L_NotEnough:
+ mes "[Bernard]";
+ mes "\"Oh, please hurry and bring me a Roasted Maggot. I'm yearning for maggot soup!\"";
+ goto L_Close;
+
+L_NotEnough1:
+ mes "[Bernard]";
+ mes "\"Please do hurry and bring me 3 Maggot Slimes, so I can finish my soup!\"";
+ goto L_Close;
+
+L_Done1:
+ mes "[Bernard]";
+ mes "\"Thank you so much!\"";
+ mes "\"But... something is missing to make the soup creamy.\"";
+ next;
+ mes "\"I need 3 Maggot Slimes for that.\"";
+ mes "\"Bring them to me, and I'll give you something nice.\"";
+ set @state, 3;
+ callsub S_Update_Var;
+ goto L_Close;
+
+L_Done2:
+ mes "[Bernard]";
+ mes "\"I didn't mention it before, but I also put beer in my soup. I hope you like beer as much as I do, because, you see...\"";
+ next;
+ mes "\"Beer is life!\"";
+ goto L_Close;
+
+L_Done3:
+ mes "[Bernard]";
+ mes "\"My help, Mikhail, finally returned with the slimes I needed.";
+ mes "I wonder what took him so long?\"";
+ goto L_Close;
+
+L_Close:
+ set @TEMP, 0;
+ set @state, 0;
+ close;
+
+L_TooMany:
+ next;
+ mes "[Bernard]";
+ mes "\"You don't have room for my reward. I'll wait until you do.\"";
+ goto L_Close;
+
+S_Update_Var:
+ set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_0_MASK) | (@state << NIBBLE_0_SHIFT));
+ return;
+}
diff --git a/world/map/npc/009-2/entertainer.txt b/world/map/npc/009-2/entertainer.txt
new file mode 100644
index 00000000..1b2b9622
--- /dev/null
+++ b/world/map/npc/009-2/entertainer.txt
@@ -0,0 +1,38 @@
+// Emote NPC allows for players to learn the emote skill
+
+009-2.gat,61,49,0|script|Entertainer|165
+{
+ mes "[Entertainer]";
+ mes "\"Yes how can I help you?\"";
+ menu
+ "How are you showing emotions above your head?", L_Learn,
+ "Never mind", L_Close;
+
+L_Learn:
+ mes "[Entertainer]";
+ mes "\"They are called emotes, I use them to express how I am feeling.";
+ mes "I can teach you if you'd like?\"";
+ menu
+ "Yes please.", L_Learn2,
+ "I don't see the point right now.", L_Close;
+
+L_Learn2:
+ mes "[Entertainer]";
+ mes "\"All you have to do is press alt and a number.";
+ mes "The number determines what emotion will be shown.";
+ mes "Some clients will also show an emote shortcut-bar with the F12 button\"";
+ goto L_Close;
+
+L_Close:
+ close;
+
+OnTimer3000:
+ emotion rand(EMOTE_DISGUST, EMOTE_TEARS);
+ setnpctimer 0;
+ end;
+
+OnInit:
+ if (debug >= 2) end;
+ initnpctimer;
+ end;
+}
diff --git a/world/map/npc/009-2/peter.txt b/world/map/npc/009-2/peter.txt
index 2c739055..4d248819 100644
--- a/world/map/npc/009-2/peter.txt
+++ b/world/map/npc/009-2/peter.txt
@@ -1,4 +1,5 @@
// Nicholas' Apprentice and Armorsmith
+009-2.gat,183,57,0|shop|#PeterShop|127,Knife:*50,SharpKnife:*100,Dagger:*1000
009-2.gat,183,57,0|script|Peter|157
{
@@ -30,6 +31,7 @@
"Light Plate ("+@peter_light_plate_coal+" coal, "+@peter_light_plate_ingot+" ingots and "+@peter_light_plate_money+" GP).", L_Peter_Light_Plate,
"Warlord Plate ("+@peter_warlord_plate_coal+" coal, "+@peter_warlord_plate_ingot+" ingots and "+@peter_warlord_plate_money+" GP).", L_Peter_Warlord_Plate,
"Do you know anything else than armor crafting?", L_Peter_New_Skills,
+ "Do you have anything else for sale?", L_Shop,
"Nevermind.", L_Close;
L_Peter_Chain_Mail:
@@ -64,6 +66,10 @@ L_Peter_New_Skills:
"Sure!", L_Peter_Warlord_Boots,
"No thanks, that sounds too heavy for me.", L_Close;
+L_Shop:
+ close2;
+ shop "#PeterShop";
+
L_Peter_Warlord_Boots:
set @peter_crafting_coal, @peter_warlord_boots_coal;
set @peter_crafting_iron_ingot, @peter_warlord_boots_ingot;
diff --git a/world/map/npc/009-2/shops.txt b/world/map/npc/009-2/shops.txt
index d0da9413..e400c3ef 100644
--- a/world/map/npc/009-2/shops.txt
+++ b/world/map/npc/009-2/shops.txt
@@ -20,7 +20,7 @@
// Archer Shop
// sells bow, short bow, arrows and iron arrows
-009-2.gat,97,24,0|shop|Apprentice|120,Arrow:*2,IronArrow:*4,Bow:*1000,ShortBow:*3000
+009-2.gat,97,24,0|shop|Apprentice|120,SlingBullet:*1,Arrow:*2,IronArrow:*4,Bow:*1000,ShortBow:*3000
// Potion Shop
// sells cactus drink, cactus potion, iron potion, concentration potion, and slow poison potion
diff --git a/world/map/npc/009-2/trader.txt b/world/map/npc/009-2/trader.txt
new file mode 100644
index 00000000..572cad1b
--- /dev/null
+++ b/world/map/npc/009-2/trader.txt
@@ -0,0 +1,155 @@
+// Teaches Trading skill
+// Offers item conversion for non-magic users
+// Updated by: TheKandiman
+// Reviewed by: Wombat
+
+009-2.gat,39,93,0|script|Trader|115
+{
+ set @Ironprice, 1000;
+ set @Sulphurprice, 1200;
+ set @Potionprice, 500;
+ if (BaseLevel >= 25) goto L_Trade;
+
+ mes "[Trader]";
+ mes "\"Hello. I came here to trade wares with the people of Hurnscald. Unfortunately for you, I've traded everything I had.\"";
+ next;
+ menu
+ "Oh. I'll go then.", L_Close,
+ "You don't have anything?", L_More;
+
+L_More:
+ mes "[Trader]";
+ mes "\"No. I have nothing for you. Except...\"";
+ next;
+ menu
+ "Yes?", L_Except,
+ "Ok then.", L_Close;
+
+L_Except:
+ mes "[Trader]";
+ mes "\"I could teach you how to trade. It'll cost you 2GP.\"";
+ next;
+ menu
+ "Sure.", L_Teach,
+ "No thank you.", L_Close;
+
+L_Teach:
+ if (Zeny < 5) goto L_NotEnoughMoney;
+ set Zeny, Zeny - 2;
+ mes "[Trader]";
+ mes "\"You can initiate trade with someone by right-clicking on them and choosing trade.";
+ mes "You'll both add the items and set the GP you're putting up then press propose trade.";
+ mes "After both parties have proposed their side, you can both review the trade, and then accept or reject by closing the window.\"";
+ next;
+ mes "[Trader]";
+ mes "\"Items added to the trade cannot be removed, and so mistakes have to be dealt with by canceling the trade.";
+ mes "You need to press the change button to let the other person know about GP changes.\"";
+ next;
+ goto L_Later;
+
+L_Later:
+ mes "[Trader]";
+ mes "\"Please feel free to check back later. I'm expecting a large shipment of goods to trade.\"";
+ goto L_Close;
+
+L_Trade:
+ mes "[Trader]";
+ mes "\"Welcome back! My shipment came in and I have a bunch of things that I can trade now. What would you like?\"";
+ goto L_Trademenu;
+
+L_Trademenu:
+ menu
+ "Do you have Iron Powder?", L_Iron,
+ "How about Sulphur Powder?", L_Sulphur,
+ "I need Medium Healing Potions.", L_Healpots,
+ "I think I have everything I need, thanks.", L_Close;
+
+L_Iron:
+ mes "[Trader]";
+ mes "\"I do have a few of those. I will give you 4 Iron Powders for 1 Iron Ore and " + @Ironprice + "gp.\"";
+ menu
+ "Sure.", L_Ipowder,
+ "What a ripoff! No way!", L_Close;
+
+L_Sulphur:
+ mes "[Trader]";
+ mes "\"I can trade you 5 Sulphur Powders for 1 Pile of Ash and " + @Sulphurprice + "gp.\"";
+ menu
+ "Here you go.", L_Spowder,
+ "Are you nuts?! Forget it!", L_Close;
+
+L_Healpots:
+ mes "[Trader]";
+ mes "\"Healing potions are always useful, but I rarely need anything larger than the small ones. I will happily trade you 1 Medium Healing Potion for 3 Small Healing Potions and " + @Potionprice + "gp.\"";
+ menu
+ "Alright.", L_Pots,
+ "Whoa, that's way too much.", L_Close;
+
+L_Ipowder:
+ if (countitem("IronOre") < 1) goto L_Missing;
+ if (Zeny < @Ironprice) goto L_NotEnoughMoney;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("IronOre") > 1 && countitem("IronPowder") < 1) goto L_Full;
+ delitem "IronOre", 1;
+ set Zeny, Zeny - @Ironprice;
+ getitem "IronPowder", 4;
+ mes "[Trader]";
+ mes "\"There you go. Would you like to trade anything else?\"";
+ menu
+ "Yes.", L_Trademenu,
+ "No.", L_No;
+
+L_Spowder:
+ if (countitem("PileOfAsh") < 1) goto L_Missing;
+ if (Zeny < @Sulphurprice) goto L_NotEnoughMoney;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("PileOfAsh") > 1 && countitem("SulphurPowder") < 1) goto L_Full;
+ delitem "PileOfAsh", 1;
+ set Zeny, Zeny - @Sulphurprice;
+ getitem "SulphurPowder", 5;
+ mes "[Trader]";
+ mes "\"There you go. Would you like to trade anything else?\"";
+ menu
+ "Yes.", L_Trademenu,
+ "No.", L_No;
+
+L_Pots:
+ if (countitem("SmallHealingPotion") < 3) goto L_Missing;
+ if (Zeny < @Potionprice) goto L_NotEnoughMoney;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("SmallHealingPotion") > 3 && countitem("MediumHealingPotion") < 1) goto L_Full;
+ delitem "SmallHealingPotion", 3;
+ set Zeny, Zeny - @Potionprice;
+ getitem "MediumHealingPotion", 1;
+ mes "[Trader]";
+ mes "\"There you go. Would you like to trade anything else?\"";
+ menu
+ "Yes.", L_Trademenu,
+ "No.", L_No;
+
+L_Full:
+ mes "[Trader]";
+ mes "\"You must have been making a lot of trades...your bag is completely full! Come back after you've made some room.\"";
+ goto L_Close;
+
+L_Missing:
+ mes "[Trader]";
+ mes "\"It looks like you're missing some items. Please come back when you have enough to trade.\"";
+ goto L_Close;
+
+L_NotEnoughMoney:
+ mes "[Trader]";
+ mes "\"You don't have enough money.\"";
+ goto L_Close;
+
+L_No:
+ mes "[Trader]";
+ mes "\"Have a great day!\"";
+ goto L_Close;
+
+L_Close:
+ set @Ironprice, 0;
+ set @Sulphurprice, 0;
+ set @Potionprice, 0;
+ close;
+}
diff --git a/world/map/npc/009-2/wyara.txt b/world/map/npc/009-2/wyara.txt
index 65c16fc7..f8df574a 100644
--- a/world/map/npc/009-2/wyara.txt
+++ b/world/map/npc/009-2/wyara.txt
@@ -46,12 +46,14 @@ L_Main:
"Can you help me use the mana seed?", L_Q_manaseed_unabsorbed,
"Can you help me learn magic?", L_Magic,
"I would like to buy potions.", L_Shop,
+ "Can you reset my stats?", L_StatReset,
"Bye!", L_Close;
if (!(!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)))
menu
"What do you know about...", L_Question,
"Can you help me learn magic?", L_Magic,
"I would like to buy potions.", L_Shop,
+ "Can you reset my stats?", L_StatReset,
"Bye!", L_Close;
goto L_Shop;
@@ -60,6 +62,11 @@ L_Shop:
mes "\"Please have a look at the shelf behind me.\"";
close;
+L_StatReset:
+ set @NpcName$, "Wyara";
+ callfunc "StatReset";
+ goto L_Close;
+
L_Question:
callfunc "MagicTalkOptionsSetup";
set @ignore, @QQ_WYARA;
diff --git a/world/map/npc/009-2/yalina.txt b/world/map/npc/009-2/yalina.txt
new file mode 100644
index 00000000..92055b48
--- /dev/null
+++ b/world/map/npc/009-2/yalina.txt
@@ -0,0 +1,11 @@
+009-2.gat,148,47,0|script|Yalina|209
+{
+ set @npcname$, "Yalina";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"Ian knows a lot! I had so many questions he helped me with!\"";
+ next;
+ mes "\"He rewards those that know what they are doing. When the Nurse stops healing you, check in with Ian.\"";
+ set @npcname$, "";
+ close;
+}