diff options
Diffstat (limited to 'world/map/npc/009-2')
-rw-r--r-- | world/map/npc/009-2/_import.txt | 4 | ||||
-rw-r--r-- | world/map/npc/009-2/bernard.txt | 141 | ||||
-rw-r--r-- | world/map/npc/009-2/entertainer.txt | 38 | ||||
-rw-r--r-- | world/map/npc/009-2/peter.txt | 6 | ||||
-rw-r--r-- | world/map/npc/009-2/shops.txt | 2 | ||||
-rw-r--r-- | world/map/npc/009-2/trader.txt | 155 | ||||
-rw-r--r-- | world/map/npc/009-2/wyara.txt | 7 | ||||
-rw-r--r-- | world/map/npc/009-2/yalina.txt | 11 |
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; +} |