diff options
Diffstat (limited to 'world/map/npc/008-1')
-rw-r--r-- | world/map/npc/008-1/_import.txt | 2 | ||||
-rw-r--r-- | world/map/npc/008-1/_mobs.txt | 22 | ||||
-rw-r--r-- | world/map/npc/008-1/banu.txt | 112 | ||||
-rw-r--r-- | world/map/npc/008-1/dock.txt | 28 | ||||
-rw-r--r-- | world/map/npc/008-1/george.txt | 25 | ||||
-rw-r--r-- | world/map/npc/008-1/mikhail.txt | 76 |
6 files changed, 244 insertions, 21 deletions
diff --git a/world/map/npc/008-1/_import.txt b/world/map/npc/008-1/_import.txt index 8808364d..677d39ba 100644 --- a/world/map/npc/008-1/_import.txt +++ b/world/map/npc/008-1/_import.txt @@ -5,8 +5,10 @@ npc: npc/008-1/_mobs.txt npc: npc/008-1/_warps.txt npc: npc/008-1/andra.txt npc: npc/008-1/annualeaster.txt +npc: npc/008-1/banu.txt npc: npc/008-1/diryn.txt npc: npc/008-1/dock.txt npc: npc/008-1/george.txt npc: npc/008-1/hinnak.txt npc: npc/008-1/mapflags.txt +npc: npc/008-1/mikhail.txt diff --git a/world/map/npc/008-1/_mobs.txt b/world/map/npc/008-1/_mobs.txt index 546a93a2..0c528a66 100644 --- a/world/map/npc/008-1/_mobs.txt +++ b/world/map/npc/008-1/_mobs.txt @@ -3,8 +3,8 @@ 008-1.gat,0,0,0,0|monster|PinkFlower|1014,10,20ms,0ms,Mob008-1::On1014 008-1.gat,0,0,0,0|monster|Pinkie|1018,18,20ms,0ms,Mob008-1::On1018 -008-1.gat,0,0,0,0|monster|SpikyMushroom|1019,18,20ms,0ms,Mob008-1::On1019 -008-1.gat,0,0,0,0|monster|Snail|1041,5,30ms,0ms,Mob008-1::On1041 +008-1.gat,0,0,0,0|monster|ManaBug|1131,18,30ms,0ms,Mob008-1::On1131 +008-1.gat,0,0,0,0|monster|Maggot|1002,30,30ms,0ms,Mob008-1::On1002 008-1.gat,0,0,0,0|monster|MauvePlant|1029,2,270000ms,180000ms,Mob008-1::On1029 008-1.gat,0,0,0,0|monster|Silkworm|1035,2,60000ms,30000ms,Mob008-1::On1035 008-1.gat,0,0,0,0|monster|CloverPatch|1037,2,0ms,1000ms,Mob008-1::On1037 @@ -16,6 +16,11 @@ { end; +On1002: + set @mobID, 1002; + callfunc "MobPoints"; + end; + On1014: set @mobID, 1014; callfunc "MobPoints"; @@ -26,11 +31,6 @@ On1018: callfunc "MobPoints"; end; -On1019: - set @mobID, 1019; - callfunc "MobPoints"; - end; - On1029: set @mobID, 1029; callfunc "MobPoints"; @@ -51,13 +51,13 @@ On1038: callfunc "MobPoints"; end; -On1041: - set @mobID, 1041; +On1055: + set @mobID, 1055; callfunc "MobPoints"; end; -On1055: - set @mobID, 1055; +On1131: + set @mobID, 1131; callfunc "MobPoints"; end; } diff --git a/world/map/npc/008-1/banu.txt b/world/map/npc/008-1/banu.txt new file mode 100644 index 00000000..957d74d4 --- /dev/null +++ b/world/map/npc/008-1/banu.txt @@ -0,0 +1,112 @@ +// Old woman working on a field, asks the player to get her some water +// after that she asks for a knife +// Using bit 10 and 11 of QUEST_NorthTulimshar (second half of nibble 2) +// author: Jenalya + +008-1.gat,70,42,0|script|Banu|154 +{ + set @state, ((QUEST_NorthTulimshar & TWOBIT_5_MASK) >> TWOBIT_5_SHIFT); + set @EXP, 100; + set @money_water, 250; + set @money_knife, 100; + + if (@state >= 3) goto L_Done; + if (@state == 2) goto L_Knife; + if (@state == 1) goto L_Water; + + mes "[Banu]"; + mes "\"Ah, hello. You've come at just the right moment. The field work is hard and the sun is burning."; + mes "Would you mind refilling an old woman's Empty Bottle with water?\""; + menu + "Sure!",L_Next, + "Sorry, I'm busy.",L_Close; + +L_Next: + getinventorylist; + if (@inventorylist_count == 100) + goto L_FullInv; + + mes "She smiles."; + mes "[Banu]"; + mes "\"Here is my Empty Bottle. There is a well right over there at Hurnscald.\""; + getitem "EmptyBottle", 1; + set @state, 1; + callsub S_Update_Mask; + goto L_Close; + +L_Water: + mes "[Banu]"; + mes "\"Ah, you're back. I'm so thirsty.\""; + next; + if (countitem("BottleOfWater") < 1) + goto L_NoWater; + delitem "BottleOfWater", 1; + mes "She grabs the Bottle of Water and drinks."; + getexp @EXP, 0; + set Zeny, Zeny + @money_water; + set @state, 2; + callsub S_Update_Mask; + mes "[Banu]"; + mes "\"Ah, that's refreshing. Thank you. You're a good kid. Have this for your expenses."; + mes "Maybe you can do me another favor?\""; + next; + mes "\"I need a new Knife. Peter in the Hurnscald forge to the South of here is selling some. But it's such a long way for my old legs."; + mes "Would you go to get me a Knife?\""; + goto L_Close; + +L_Knife: + mes "[Banu]"; + mes "\"Hello dear. Did you get the knife for me?\""; + menu + "Yeah, here is it.",L_Next1, + "Not yet.",L_Close; + +L_Next1: + if (countitem("Knife") < 1) + goto L_NoKnife; + delitem "Knife", 1; + getexp @EXP, 0; + set Zeny, Zeny + @money_knife; + set @state, 3; + callsub S_Update_Mask; + mes "[Banu]"; + mes "\"Thank you! You're a darling. Please take this for your effort.\""; + goto L_Close; + +L_Done: + mes "[Banu]"; + set @rand, rand(3); + if (@rand == 0) + mes "\"I spent all my life here in Hurnscald. It's a good place to live.\""; + if (@rand == 1) + mes "\"Did you see the kids playing hide and seek? Ah, when I was young I used to play with my good friend Sorfina. She lives in Candor now, East of Hurnscald by boat.\""; + if (@rand == 2) + mes "\"Tonori is ruled by a council of wise wizards.\""; + goto L_Close; + +L_NoWater: + mes "[Banu]"; + mes "\"You didn't get it yet? Shame on you, an old woman is depending on you.\""; + goto L_Close; + +L_NoKnife: + mes "[Banu]"; + mes "\"Where is it? Don't play tricks on an old woman! That's not nice.\""; + goto L_Close; + +L_FullInv: + mes "[Banu]"; + mes "\"Oh my dear! You're carrying so many things that you can't take my Empty Bottle.\""; + goto L_Close; + +L_Close: + set @inventorylist_count, 0; + set @EXP, 0; + set @state, 0; + set @rand, 0; + close; + +S_Update_Mask: + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(TWOBIT_5_MASK)) | (@state << TWOBIT_5_SHIFT); + return; +} diff --git a/world/map/npc/008-1/dock.txt b/world/map/npc/008-1/dock.txt index d24355bd..c4c701d3 100644 --- a/world/map/npc/008-1/dock.txt +++ b/world/map/npc/008-1/dock.txt @@ -1,25 +1,43 @@ // The ferry dock -008-1.gat,134,63,0|script|Ferry Schedule#5|397 +008-1.gat,134,69,0|script|Ferry Schedule#5|397 { callfunc "FerryManifest"; end; } -008-1.gat,147,64,0|script|Hurnscald Koga|395,8,3 +008-1.gat,147,64,0|script|Hurnscald North Koga|395,8,3 { callfunc "BoardFerry"; close; } -008-1.gat,120,44,0|script|#HurnscaldDock|127 +008-1.gat,120,44,0|script|#Hurnscald NorthDock|127 { end; OnCommandArrive: - enablenpc "Hurnscald Koga"; + enablenpc "Hurnscald North Koga"; end; OnCommandWarp: - disablenpc "Hurnscald Koga"; + disablenpc "Hurnscald North Koga"; + end; +} + +008-1.gat,147,75,0|script|Hurnscald South Koga|395,8,3 +{ + callfunc "BoardCandorFerry"; + close; +} + +008-1.gat,65,25,0|script|#Hurnscald SouthDock|127 +{ + end; +OnCommandArrive: + enablenpc "Hurnscald South Koga"; + end; + +OnCommandWarp: + disablenpc "Hurnscald South Koga"; end; } diff --git a/world/map/npc/008-1/george.txt b/world/map/npc/008-1/george.txt index af36f75f..24679b34 100644 --- a/world/map/npc/008-1/george.txt +++ b/world/map/npc/008-1/george.txt @@ -1,6 +1,6 @@ // -008-1.gat,136,36,0|script|George#pirate|138 +008-1.gat,135,62,0|script|George#pirate|138 { set @halloween_npc_id, $@halloween_npc_george; callfunc "TrickOrTreat"; @@ -9,21 +9,36 @@ if (getequipid(equip_head) == 622) goto L_Bandana; if (getequipid(equip_head) == 621) goto L_EyePatch; mes "[George the Pirate]"; - mes "\"Arrrrh! 'Tis some kind of treasure map!\""; - close; + mes "\"Yar! Do you need something, matey?\""; + goto L_Main; + +L_Main: + menu + "Can you explain the Ferry?", L_Explain, + "Nothing I guess", L_Close; L_Pirate: mes "[George the Pirate]"; mes "\"Arrrrh! Ye be wearing a pirate's hat!\""; - close; + goto L_Main; L_Bandana: mes "[George the Pirate]"; mes "\"Arrrrh! Ye remind me of my old first mate!\""; - close; + goto L_Main; L_EyePatch: mes "[George the Pirate]"; mes "\"Arrrrh! Looks like ye lost an eye there!\""; + goto L_Main; + +L_Explain: + mes "[George the Pirate]"; + mes "\"Arrr matey! I helped pioneer the trade routes between Hurnscald and the rest of the World, so now merchants and adventurers can travel to and fro without any hassle of dodging wolvern, yarr.\""; + next; + callfunc "FerryHelp"; + goto L_Main; + +L_Close: close; } diff --git a/world/map/npc/008-1/mikhail.txt b/world/map/npc/008-1/mikhail.txt new file mode 100644 index 00000000..9de0480c --- /dev/null +++ b/world/map/npc/008-1/mikhail.txt @@ -0,0 +1,76 @@ +// Variables used: nibble 0 of QUEST_SouthTulimshar + +008-1.gat,135,25,0|script|Mikhail|120 +{ + // 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_Done; + if (@state == 5) goto L_Progress; + if (@state == 4) goto L_Start; + goto L_Convince_Mikhail_First; + +L_Convince_Mikhail_First: + mes "[Mikhail]"; + mes "\"Hello... I'm supposed to be helping Bernard from the Inn but...\""; + mes "His eyes grow wide"; + mes "\"Eeekkk another one.\""; + mes ""; + mes "It seems that the boy would like to say more, but seems too terrified at the moment. Maybe you should help someone else first, so that he sees your intentions are good."; + goto L_Close; + +L_Start: + mes "[Mikhail]"; + mes "\"Bernard sent me to get five Maggot Slimes from the maggots in the fields, but they scare me so bad!\""; + next; + mes "\"You look like a nice person. Would you go get them for me?\""; + menu + "Of course, I'll go get them for you.", L_accept, + "I've got other things to do right now.", L_Close; + +L_accept: + mes "[Mikhail]"; + mes "\"Thank you so much! I'll wait for you here.\""; + set @state, 5; + callsub S_Update_Var; + close; + +L_Progress: + mes "[Mikhail]"; + mes "\"Did you bring me the five Maggot Slimes I need?\""; + next; + menu + "Yes, here they are, kiddo!", L_try, + "Not yet, but I'll be back soon.", L_Close; + +L_try: + if (countitem("MaggotSlime") >= 5) + goto L_get; + mes "[Mikhail]"; + mes "\"It doesn't look like you have them all...\""; + goto L_Close; + +L_get: + delitem "MaggotSlime", 5; + getexp 100, 0; + set @state, 6; + callsub S_Update_Var; + mes "[Mikhail]"; + mes "\"Ooh! Thank you so much! I can get back to Bernard now!\""; + goto L_Close; + +L_Done: + mes "[Mikhail]"; + mes "\"Thanks again for helping me get those Maggot Slimes!\""; + goto L_Close; + +L_Close: + set @state, 0; + close; + +S_Update_Var: + set QUEST_SouthTulimshar, (QUEST_SouthTulimshar & ~(NIBBLE_0_MASK) | (@state << NIBBLE_0_SHIFT)); + return; +} |