diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/024-1 | |
download | serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2 serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip |
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/024-1')
-rw-r--r-- | npc/024-1/_import.txt | 14 | ||||
-rw-r--r-- | npc/024-1/_mobs.txt | 6 | ||||
-rw-r--r-- | npc/024-1/_warps.txt | 23 | ||||
-rw-r--r-- | npc/024-1/erlan.txt | 118 | ||||
-rw-r--r-- | npc/024-1/guard.txt | 116 | ||||
-rw-r--r-- | npc/024-1/john.txt | 321 | ||||
-rw-r--r-- | npc/024-1/mapflags.txt | 17 | ||||
-rw-r--r-- | npc/024-1/meriel.txt | 113 | ||||
-rw-r--r-- | npc/024-1/rydel.txt | 115 | ||||
-rw-r--r-- | npc/024-1/soul-menhir.txt | 20 | ||||
-rw-r--r-- | npc/024-1/taenya.txt | 123 | ||||
-rw-r--r-- | npc/024-1/teleporter.txt | 23 | ||||
-rw-r--r-- | npc/024-1/town.txt | 12 |
13 files changed, 1021 insertions, 0 deletions
diff --git a/npc/024-1/_import.txt b/npc/024-1/_import.txt new file mode 100644 index 0000000..8b4f2df --- /dev/null +++ b/npc/024-1/_import.txt @@ -0,0 +1,14 @@ +// Map 024-1: Frostia +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/024-1/_mobs.txt", +"npc/024-1/_warps.txt", +"npc/024-1/erlan.txt", +"npc/024-1/guard.txt", +"npc/024-1/john.txt", +"npc/024-1/mapflags.txt", +"npc/024-1/meriel.txt", +"npc/024-1/rydel.txt", +"npc/024-1/soul-menhir.txt", +"npc/024-1/taenya.txt", +"npc/024-1/teleporter.txt", +"npc/024-1/town.txt", diff --git a/npc/024-1/_mobs.txt b/npc/024-1/_mobs.txt new file mode 100644 index 0000000..07c198b --- /dev/null +++ b/npc/024-1/_mobs.txt @@ -0,0 +1,6 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 024-1: Frostia mobs +024-1,98,43,76,22 monster Pollet 1219,16,90000,30000 +024-1,96,77,78,21 monster Iced Fluffy 1041,7,60000,30000 +024-1,89,120,21,22 monster Azul Slime 1095,3,30000,30000 +024-1,145,70,25,36 monster Rudolph Slime 1086,2,30000,30000 diff --git a/npc/024-1/_warps.txt b/npc/024-1/_warps.txt new file mode 100644 index 0000000..6732a87 --- /dev/null +++ b/npc/024-1/_warps.txt @@ -0,0 +1,23 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 024-1: Frostia warps +024-1,75,134,0 warp #024-1_75_134 0,0,023-1,42,32 +024-1,94,70,0 script #024-1_94_70 NPC_HIDDEN,3,0,{ + end; +OnTouch: + slide 93,72; end; +} +024-1,32,54,0 warp #024-1_32_54 0,0,024-2,41,29 +024-1,126,28,0 warp #024-1_126_28 0,0,024-3,35,34 +024-1,154,40,0 warp #024-1_154_40 0,0,024-4,28,28 +024-1,160,40,0 warp #024-1_160_40 0,0,024-4,39,28 +024-1,155,55,0 warp #024-1_155_55 0,0,024-5,34,28 +024-1,143,40,0 warp #024-1_143_40 0,0,024-6,34,27 +024-1,160,49,0 warp #024-1_160_49 0,0,024-7,40,28 +024-1,136,28,0 warp #024-1_136_28 0,0,024-8,71,31 +024-1,134,48,0 warp #024-1_134_48 0,0,024-9,41,37 +024-1,77,59,0 warp #024-1_77_59 0,0,024-10,24,36 +024-1,83,59,0 warp #024-1_83_59 0,0,024-10,34,36 +024-1,105,34,0 warp #024-1_105_34 0,0,024-11,24,34 +024-1,76,45,0 warp #024-1_76_45 0,0,024-12,31,34 +024-1,50,54,0 warp #024-1_50_54 0,0,024-13,30,36 +024-1,64,30,0 warp #024-1_64_30 0,0,024-15,25,38 diff --git a/npc/024-1/erlan.txt b/npc/024-1/erlan.txt new file mode 100644 index 0000000..b6cc4dd --- /dev/null +++ b/npc/024-1/erlan.txt @@ -0,0 +1,118 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-1,73,48,0 script Erlan NPC_ELF,{ + .@q = getq(FrostiaQuest_Erlan); + if (BaseLevel < 40) { + mesc l("The elf seems busy. He ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq lg("Hey gal, could you do me a little favor?", "Hey pal, could you do me a little favor?"); + next; + mesn; + mesq l("You see, I am Erlan, a researcher. I'm currently developing strong poison to rival with the legendary %s. For that end, I need raw, untreated sewerage, but there is no such thing here. Could you bring me %d %s? Thanks!", getitemlink(NymphPoison), 7, getitemlink(BottleOfSewerWater)); + setq FrostiaQuest_Erlan, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got the %d %s I've asked?", 7, getitemlink(BottleOfSewerWater)); + next; + if (askyesno() == ASK_YES) { + if (countitem(BottleOfSewerWater) < 7) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + delitem BottleOfSewerWater, 7; + getexp 10000, 0; + Zeny+=5700; + setq FrostiaQuest_Erlan, 2; + mesn; + mesq lg("Thanks, my friend. Here's some money."); + } + close; + +L_Done_F: + mesn; + mesq l("Thanks for the help earlier. Unfortunately, I had no luck yet."); + next; + mesn; + mesq l("There are rumors about a sacred elf land, where our antecessors lived in peacefully somewhere close to here, but the path was lost. That's why we now live with dwarves."); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("Uh, a %s? How odd.", get_race()); + next; + mesn; + mesq l("You see, I am Erlan, a researcher. I'm currently developing strong poison to rival with the legendary %s. For that end, I need raw, untreated sewerage, but there is no such thing in a civilized town like ours.", getitemlink(NymphPoison)); + next; + mesn; + mesq l("But you seem to have come from more savage and barbaric towns, so if you could bring me %d %s, that would be truly helpful.", 7, getitemlink(BottleOfSewerWater)); + setq FrostiaQuest_Erlan, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got the %d %s I've asked?", 7, getitemlink(BottleOfSewerWater)); + next; + if (askyesno() == ASK_YES) { + if (countitem(BottleOfSewerWater) < 7) { + mesn; + mesq l("You think you can fool me and lie? I'll teach you a lesson you won't forget!"); + mesc l("%s slaps you!", .name$); + percentheal -30, 0; + close; + } + delitem BottleOfSewerWater, 7; + getexp 10000, 0; + Zeny+=5700; + setq FrostiaQuest_Erlan, 2; + mesn; + mesq l("Heh, thanks %s. Here's some money.", get_race()); + } + close; + +L_Done_U: + mesn; + mesq l("No, I don't have any poison for your sampling yet."); + next; + mesn; + mesq l("Our antecessors used to live peacefully in a sanctuary somewhere close to here, but the path was lost. That's why we now live with dwarves."); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADTOP, Beard); + setunitdata(.@npcId, UDT_HAIRSTYLE, 6); + setunitdata(.@npcId, UDT_HAIRCOLOR, 20); + npcsit; + + .sex = G_MALE; + .distance = 5; + end; +} + diff --git a/npc/024-1/guard.txt b/npc/024-1/guard.txt new file mode 100644 index 0000000..cefc16a --- /dev/null +++ b/npc/024-1/guard.txt @@ -0,0 +1,116 @@ +// TMW2 Script +// Author: +// Jesusalva +// Description: +// Controls access to Frostia. + +024-1,93,73,0 script Frostia Guard NPC_ELF,{ + // Main Quest Have Precedence + if (getq(General_Narrator) == 11) + goto L_MainQuest; + if (getq(General_Narrator) == 12) + goto L_MainQuest2; + +L_MainLogic: + if (BaseLevel < 40) + goto L_Unallowed; + if (Class == Elven) + { + slide 93, 69; + npctalk3 l("Elves are always allowed inside."); + end; + } + // You have a house inside + if (ESTATE_RENTTIME >= gettimetick(2)) { + slide 93, 69; + npctalk3 l("I don't trust @@s.", get_race()); + end; + } + + //.@tax=1001-min(1000, reputation("Frostia")*10); + .@tax=501-min(500, reputation("Frostia")*5); + mesn; + mesc l("The guard eyes you with suspcion."); + mesq l("You should not be here. Get moving."); + if (Zeny < .@tax) + close; + next; + mesc l("Bribe the guard for @@ GP?", .@tax); + if (askyesno() == ASK_YES) { + Zeny-=.@tax; + closeclientdialog; + slide 93, 69; + npctalk3 l("Behave yourself."); + } + close; + +L_Unallowed: + mesn; + mesq l("You're not welcome here. Get moving."); + close; + + +L_MainQuest: + mesc b(l(".:: Main Quest 6-1 ::.")), 3; + msObjective(BaseLevel >= 40, l("* @@/@@ Base Level", BaseLevel, 40)); + mesc l("* Deliver Nikolai's Letter to Frostia Mayor"), 9; + if (BaseLevel < 40) + close; + next; + mesn strcharinfo(0); + select + l("I have a letter for the Mayor."); + mes ""; + mesn; + mesq l("We don't have a mayor. The independent city-state of Frostia is ruled by a King."); + next; + mesn; + mesq l("King Gelid Frozenheart II rules over all elves and dwarves who live here peacefully, and he also presides the city council."); + next; + mesn; + mesq l("I hate foreigners. They know nothing about us and want to impose their \"ideals\" about democracy and whatever."); + next; + mesn; + mesq l("Anyway, you had a letter to our @@, you meant? Sure thing, I'll let him know at once.", b(l("king"))); + setq General_Narrator, 12; + close; + +L_MainQuest2: + mesn; + mesq l("King Gelid Frozenheart II will have you."); + next; + mesn; + mesq l("His policy is to never read a letter without the sender being present. Of course we checked for poison and traps."); + next; + mesn; + mesq l("Behave yourself, or you'll be executed in the town square mercilessly. You have been warned."); + next; + closeclientdialog; + // Maybe an instance instead? + warp "024-16", 30, 52; + end; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet); + setunitdata(.@npcId, UDT_HEADMIDDLE, WarlordPlate); + setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes); + setunitdata(.@npcId, UDT_WEAPON, JeansChaps); + setunitdata(.@npcId, UDT_HAIRSTYLE, 2); + setunitdata(.@npcId, UDT_HAIRCOLOR, 4); + + .sex = G_MALE; + .distance = 5; + end; +} + +// This small script controls if you can visit King Gelid II or not +024-1,97,20,0 script #FrostiaCastle NPC_HIDDEN,1,0,{ +end; +OnTouch: + if (getq(General_Narrator) >= 12) + warp "024-16", 30, 52; + end; +} + + diff --git a/npc/024-1/john.txt b/npc/024-1/john.txt new file mode 100644 index 0000000..e1662d1 --- /dev/null +++ b/npc/024-1/john.txt @@ -0,0 +1,321 @@ +// TMW2 scripts. +// Author: +// Jesusalva +// Description: +// John H + +024-1,154,45,0 script Jhon Henryfield NPC_PLAYER,{ + if (BaseLevel < 42) { + asleep(); + end; + } + .@q=getq(FrostiaQuest_JhonH); + + // Quest failed + if (.@q == 8) { + mesn; + mesq l("Go away creep, I HATE YOU!"); + close; + } + + if (!.@q) { + mesn; + mesc l("ZZZzzzz..."); + mesc l("%s seems to be asleep... Maybe we can wake him up somehow?", .name$); + next; + do + { + select + l("Poke him"), + l("Attack him"), + l("Give him an item"); + mes ""; + if (@menu == 1) { + mesc l("No reply. We should try something else."); + next; + } else if (@menu == 2) { + mesn; + mesc l("*Opening eyes in a shock*"); + mesq l("AAAAaaahhhhh!!!"); + setq FrostiaQuest_JhonH, 8; // Quest failed + close; + } else { + mes "##B" + l("Drag and drop an item from your inventory.") + "##b"; + + .@give = requestitem(); + if (.@give < 1) continue; + if (!countitem(.@give)) continue; + if (checkbound(.@give)) continue; + if (getiteminfo(.@give, ITEMINFO_TYPE) != IT_HEALING && + getiteminfo(.@give, ITEMINFO_TYPE) != IT_USABLE) continue; + mesc l("Really give a %s to Jhon?", getitemlink(.@give)); + mesc l("The item will be lost forever."), 1; + next; + if (askyesno() == ASK_NO) continue; + mes ""; + delitem .@give, 1; + if (.@give == Coffee) { + setq FrostiaQuest_JhonH, 1; + .@q = 1; + getexp 250, 25; + mesn; + mesq l("Coffee! I'm awake now!"); + next; + break; + } else { + mesc l("...No reaction..."); + next; + } + } + } while (true); + } + /////////////////////////// + if (!.@q) close; + do + { + mesn; + mesq l("How can I help you, my friend?"); + next; + select + l("Who are you?"), + rif(.@q >= 2 && countitem(Coffee), l("Do you want more coffee?")), + l("Nothing, thanks anyway."); + mes ""; + switch (@menu) { + case 1: + mesn; + mesq l("Name is Jhon, and that's not a typo! I am an absolute coffee lover, and I travel to exotic places in search of the perfect brew."); + next; + mesn; + mesq l("Unfortunately, elves doesn't like to share coffee, so I thought in leaving but fell asleep. Oops!"); + next; + mesn; + mesq l("If you have some coffee to me, I'll buy it of your hands."); + compareandsetq FrostiaQuest_JhonH, 1, 2; + .@q = max(.@q, 2); + next; + break; + case 2: + mesc l("How much coffee you'll give Jhon?"); + input .@c, 0, countitem(Coffee); + mes ""; + .@c = min(.@c, countitem(Coffee)); + if (.@c < 1) break; + delitem Coffee, .@c; + .@q2 = getq2(FrostiaQuest_JhonH) + rand2(.@c); + .@q3 = getq3(FrostiaQuest_JhonH); + setq2 FrostiaQuest_JhonH, .@q2; + .@xp = 250 + rand2(getiteminfo(Coffee, ITEMINFO_SELLPRICE) / 3); + .@gp = getiteminfo(Coffee, ITEMINFO_SELLPRICE) * 2 / 3; // 67% GP + Zeny += .@c * .@gp; + getexp .@c * .@xp, .@c * 25; // ~33% EXP + bonus + mesn; + mesq lg("Thanks, gal!", "Thanks, pal!"); + next; + switch (.@q3) { + case 0: + if (.@q2 >= 1) { + inventoryplace Potatoz, 1; + getitem Potatoz, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 1: + if (.@q2 >= 5) { + inventoryplace IcedBottle, 1; + getitem IcedBottle, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 2: + if (.@q2 >= 10) { + inventoryplace ScrollBattlePlansA, 1; + getitem ScrollBattlePlansA, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 3: + if (.@q2 >= 15) { + inventoryplace ScrollDefenseBlessA, 1; + getitem ScrollDefenseBlessA, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 4: + if (.@q2 >= 20) { + inventoryplace ScrollSYeti, 1; + getitem ScrollSYeti, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 5: + if (.@q2 >= 25) { + inventoryplace AlchemyBlueprintA, 1; + getitem AlchemyBlueprintA, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 6: + if (.@q2 >= 30) { + inventoryplace AlchemyBlueprintB, 1; + getitem AlchemyBlueprintB, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 7: + if (.@q2 >= 40) { + .@i = any(LukPotionA, DexPotionA, IntPotionA, VitPotionA, AgiPotionA); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 8: + if (.@q2 >= 50) { + inventoryplace AlchemyBlueprintC, 1; + getitem AlchemyBlueprintC, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 9: + if (.@q2 >= 60) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 10: + if (.@q2 >= 75) { + inventoryplace AlchemyBlueprintD, 1; + getitem AlchemyBlueprintD, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 11: + if (.@q2 >= 90) { + inventoryplace AncientBlueprint, 1; + getitem AncientBlueprint, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 12: + if (.@q2 >= 100) { + .@i = any(LukPotionB, DexPotionB, IntPotionB, VitPotionB, AgiPotionB, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 13: + if (.@q2 >= 120) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 14: + if (.@q2 >= 140) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, Manapple); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 15: + if (.@q2 >= 150) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 16: + if (.@q2 >= 175) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 17: + if (.@q2 >= 200) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 18: + if (.@q2 >= 250) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 19: + if (.@q2 >= 300) { + .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern, GoldenApple); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 20: + if (.@q2 >= 400) { + .@i = any(SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern, PirateTreasureMap, TimeFlask); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 21: + if (.@q2 >= 450) { + .@i = any(ScrollCriticalFortuneB, ScrollBattlePlansB, ScrollDefenseBlessB, ScrollMagnusHealB, ScrollSDragon, GoldenApple); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + } + break; + case 22: + if (.@q2 >= 500) { + .@i = any(ScrollCriticalFortuneB, ScrollBattlePlansB, ScrollDefenseBlessB, ScrollMagnusHealB, ScrollSDragon, DivineApple); + inventoryplace .@i, 1; + getitem .@i, 1; + setq3 FrostiaQuest_JhonH, .@q3 + 1; + mesc l("You have reached the current reward limit for Jhon."), 1; + mesc l("Futurely, Mylarin Dust and a Sunny Crystal will also be available."); // And a Mysterious Fruit + Platinum, just like Ryan + } + break; + } + // Item acquired? + if (getq3(FrostiaQuest_JhonH) != .@q3) { + mesn; + mesq l("Here, you can have this, token of my appreciation."); + next; + } + break; + default: + .@q = 12; break; + } + } while (.@q < 8); + + closeclientdialog; + goodbye; + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, AFKCap); + setunitdata(.@npcId, UDT_HEADMIDDLE, SilkRobe); // TODO + setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); + setunitdata(.@npcId, UDT_HAIRSTYLE, 22); + setunitdata(.@npcId, UDT_HAIRCOLOR, 5); + npcsit; + + .sex = G_MALE; + .distance = 4; + end; +} diff --git a/npc/024-1/mapflags.txt b/npc/024-1/mapflags.txt new file mode 100644 index 0000000..a58d5d8 --- /dev/null +++ b/npc/024-1/mapflags.txt @@ -0,0 +1,17 @@ +024-1 mapflag town +024-1 mapflag nopenalty +024-2 mapflag zone indoors +024-3 mapflag zone indoors +024-4 mapflag zone indoors +024-5 mapflag zone indoors +024-6 mapflag zone indoors +024-7 mapflag zone indoors +024-8 mapflag zone indoors +024-9 mapflag zone indoors +024-10 mapflag zone indoors +024-11 mapflag zone indoors +024-12 mapflag zone indoors +024-13 mapflag zone indoors +024-14 mapflag zone indoors +024-15 mapflag zone indoors +024-16 mapflag zone indoors diff --git a/npc/024-1/meriel.txt b/npc/024-1/meriel.txt new file mode 100644 index 0000000..109131e --- /dev/null +++ b/npc/024-1/meriel.txt @@ -0,0 +1,113 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-1,114,45,0 script Meriel NPC_ELF_F,{ + .@q = getq(FrostiaQuest_Meriel); + if (BaseLevel < 42) { + mesc l("The elf seems busy. She ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq lg("Hey gal, could you do me a little favor?", "Hey pal, could you do me a little favor?"); + next; + mesn; + mesc l("*blushes*"); + mesq l("Bring me %d %s. I cannot tell you what for, though!", 18, getitemlink(PurpleBlobime)); + setq FrostiaQuest_Meriel, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got the %d %s I've asked?", 18, getitemlink(PurpleBlobime)); + next; + if (askyesno() == ASK_YES) { + if (countitem(PurpleBlobime) < 18) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + inventoryplace EquipmentBlueprintC, 1; + delitem PurpleBlobime, 18; + getitem EquipmentBlueprintC, 1; + getexp 4210, 0; + setq FrostiaQuest_Meriel, 2; + mesn; + mesq l("Ahh, he'll be so happy! Thanks! You can keep this."); + } + close; + +L_Done_F: + mesn; + mesq l("I've heard some elves, when they abandoned our original town, founded Aethyr somewhere up northwest. But all contact with it has since been lost."); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("Hey, can you spare me a moment?"); + next; + mesn; + mesc l("*blushes*"); + mesq l("I want %d %s! Don't worry, I can pay.", 18, getitemlink(PurpleBlobime)); + setq FrostiaQuest_Meriel, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got the %d %s I've asked?", 18, getitemlink(PurpleBlobime)); + next; + if (askyesno() == ASK_YES) { + if (countitem(PurpleBlobime) < 18) { + mesn; + mesq l("You liar, I'll show you to respect woman!"); + mesc l("%s slaps you!", .name$); + percentheal -30, 0; + close; + } + inventoryplace EquipmentBlueprintC, 1; + delitem PurpleBlobime, 18; + getitem EquipmentBlueprintC, 1; + getexp 4210, 0; + setq FrostiaQuest_Meriel, 2; + mesn; + mesq l("Hihihi... Thanks! Here, you can keep this."); + } + close; + +L_Done_U: + mesn; + mesq l("I've heard some elves, when they abandoned our original town, founded Aethyr somewhere up northwest. But all contact with it has since been lost."); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonSkirt); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADTOP, TrapperHat); + setunitdata(.@npcId, UDT_HAIRSTYLE, 8); + setunitdata(.@npcId, UDT_HAIRCOLOR, 11); + npcsit; + + .sex = G_FEMALE; + .distance = 5; + end; +} + diff --git a/npc/024-1/rydel.txt b/npc/024-1/rydel.txt new file mode 100644 index 0000000..1c1648d --- /dev/null +++ b/npc/024-1/rydel.txt @@ -0,0 +1,115 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-1,32,26,0 script Rydel NPC_ELF,{ + .@q = getq(FrostiaQuest_Rydel); + if (BaseLevel < 50) { + mesc l("The elf seems busy. He ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq lg("Hey gal, could you do me a little favor?", "Hey pal, could you do me a little favor?"); + next; + mesn; + mesq l("Bring me %d %s so I may study its properties and improve our town water quality!", 3, getitemlink(BottleOfDivineWater)); + setq FrostiaQuest_Rydel, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got the %d %s I've asked?", 3, getitemlink(BottleOfDivineWater)); + next; + if (askyesno() == ASK_YES) { + if (countitem(BottleOfDivineWater) < 3) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + delitem BottleOfDivineWater, 3; + getexp 24000, 0; + setq FrostiaQuest_Rydel, 2; + mesn; + mesq lg("Thanks to you, my friend, we will soon have good water to drink."); + } + close; + +L_Done_F: + mesn; + mesq l("I am not done purifying the water yet. This may take years, but it'll be worth it."); + next; + mesn; + mesq l("By the way, I've heard that the name of the wizard of Aethyr is the key to open its gates. But I don't know neither where the gates are, nor who is the \"wizard of Aethyr\"."); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("Hey silly %s, I need a favor from you.", get_race()); + next; + mesn; + mesq l("I am not content with our water supply. It gives us common water, but we of the superior race deserve better water."); + next; + mesn; + mesq l("So! Bring me %d %s so I may study its properties and make a purifier or enhancer for our well.", 3, getitemlink(BottleOfDivineWater)); + setq FrostiaQuest_Rydel, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got the %d %s I've asked?", 3, getitemlink(BottleOfDivineWater)); + next; + if (askyesno() == ASK_YES) { + if (countitem(BottleOfDivineWater) < 3) { + mesn; + mesq l("You liar, I'll teach you a lesson you won't forget!"); + mesc l("%s slaps you!", .name$); + percentheal -30, 0; + close; + } + delitem BottleOfDivineWater, 3; + getexp 24000, 0; + setq FrostiaQuest_Rydel, 2; + mesn; + mesq l("Thanks to you, lowly %s, we will soon have water we deserve!", get_race()); + } + close; + +L_Done_U: + mesn; + mesq l("I won't share our water with you!"); + next; + mesn; + mesq l("The name of the wizard of Aethyr is the key to open its gates. I've heard it'll open for a lowly %s as you, as long that you know both. But I don't think anyone here would share that with you!", get_race()); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADTOP, Beard); + setunitdata(.@npcId, UDT_HAIRSTYLE, 4); + setunitdata(.@npcId, UDT_HAIRCOLOR, 1); + + .sex = G_MALE; + .distance = 5; + end; +} + diff --git a/npc/024-1/soul-menhir.txt b/npc/024-1/soul-menhir.txt new file mode 100644 index 0000000..2820399 --- /dev/null +++ b/npc/024-1/soul-menhir.txt @@ -0,0 +1,20 @@ +// TMW2 scripts. +// Author: +// Jesusalva +// Description: +// Soul Menhir + +024-1,94,41,0 script Soul Menhir#frost NPC_SOUL_SNOW,{ + @map$ = "024-1"; + setarray @Xs, 93, 94, 95, 93, 95, 93, 94, 95; + setarray @Ys, 40, 40, 40, 41, 41, 42, 42, 42; + @x = 0; + @y = 0; + callfunc "SoulMenhir"; + @map$ = ""; + cleararray @Xs[0], 0, getarraysize(@Xs); + cleararray @Ys[0], 0, getarraysize(@Ys); + @x = 0; + @y = 0; + close; +} diff --git a/npc/024-1/taenya.txt b/npc/024-1/taenya.txt new file mode 100644 index 0000000..fcf9c23 --- /dev/null +++ b/npc/024-1/taenya.txt @@ -0,0 +1,123 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 (F = Favorable) + +024-1,58,28,0 script Taenya NPC_ELF_F,{ + .@q = getq(FrostiaQuest_Taenya); + if (BaseLevel < 52) { + mesc l("The elf seems busy. She ignores you."); + close; + } + if (.@q == 0) { + if (frally()) goto L_Start_F; + else goto L_Start_U; + } + else if (.@q == 1) { + if (frally()) goto L_Submit_F; + else goto L_Submit_U; + } + else if (.@q == 2) { + if (frally()) goto L_Done_F; + else goto L_Done_U; + } + Exception("Invalid quest state - "+str(.@q)); + end; + +L_Start_F: + mesn; + mesq lg("Hey friend, could you do me a little favor?"); + next; + mesn; + mesq l("I always wanted to taste a %s! But they don't grow anywhere, and I've heard the only way to obtain one is from %s. Unfortunately, I do not favor violence, so... Could you get one for me?", getitemlink(Manapple), getitemlink(BronzeBossGift)); + next; + mesn; + mesq l("Thanks, I owe you one!"); + setq FrostiaQuest_Taenya, 1; + close; + +L_Submit_F: + mesn; + mesq l("Did you got the %d %s I've asked?", 1, getitemlink(Manapple)); + next; + if (askyesno() == ASK_YES) { + if (countitem(Manapple) < 1) { + mesn; + mesq l("You've been spending too much time with humans. You are picking up bad habits from them like lying. Be careful."); + close; + } + inventoryplace EquipmentBlueprintC, 1; + delitem Manapple, 1; + getitem EquipmentBlueprintC, 1; + getexp 12000, 0; + setq FrostiaQuest_Taenya, 2; + mesn; + mesq l("Yay! Many thanks! I'll enjoy it! Here, you can keep this."); + } + close; + +L_Done_F: + mesn; + mesq l("Hey, the %s you gave me was quite tasty, thanks!", getitemlink(Manapple)); + next; + mesn; + mesq l("%s is known as the Wizard of Aethyr. They say the elves which lived in Aethyr have became fairies, but contact has been lost long ago... I've heard it was a very pretty town north of here, though.", b("Tametomo")); + close; +///////////////////////////////////////////////////////////////////////////////// +L_Start_U: + mesn; + mesq l("Hey %s, could you do me a little favor?", get_race()); + next; + mesn; + mesq l("I always wanted to taste a %s! But they don't grow anywhere, and I've heard the only way to obtain one is from %s. Unfortunately, I do not favor violence, so... Could you get one for me?", getitemlink(Manapple), getitemlink(BronzeBossGift)); + next; + mesn; + mesq l("I'll be waiting!"); + setq FrostiaQuest_Taenya, 1; + close; + +L_Submit_U: + mesn; + mesq l("Did you got the %d %s I've asked?", 1, getitemlink(Manapple)); + next; + if (askyesno() == ASK_YES) { + if (countitem(Manapple) < 1) { + mesn; + mesq l("You liar, I'll teach you a lesson you won't forget!"); + mesc l("%s stabs you with a dagger!", .name$); + percentheal -55, 0; + close; + } + inventoryplace EquipmentBlueprintC, 1; + delitem Manapple, 1; + getitem EquipmentBlueprintC, 1; + getexp 12000, 0; + setq FrostiaQuest_Taenya, 2; + mesn; + mesq l("Thanks! I'll enjoy it! Here, you can keep this."); + } + close; + +L_Done_U: + mesn; + mesq l("Sorry, but I already ate the %s you gave me!", getitemlink(Manapple)); + next; + mesn; + mesq l("%s is known as the Wizard of Aethyr. They say the elves which lived in Aethyr have became fairies, but contact has been lost long ago... I've heard it was a very pretty town north of here, though.", b("Tametomo")); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonSkirt); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADTOP, TrapperHat); + setunitdata(.@npcId, UDT_HAIRSTYLE, 9); + setunitdata(.@npcId, UDT_HAIRCOLOR, 18); + npcsit; + + .sex = G_FEMALE; + .distance = 5; + end; +} + diff --git a/npc/024-1/teleporter.txt b/npc/024-1/teleporter.txt new file mode 100644 index 0000000..2bed0ae --- /dev/null +++ b/npc/024-1/teleporter.txt @@ -0,0 +1,23 @@ +// TMW2 Script +// Authors: +// Jesusalva +// Description: +// Link portals to soul menhirs like the teleporters from old +// The price is temporary. This feature got in because no ship in Nivalis Port +// PS. Anise => “Aisen” Anagram + + +024-1,155,80,0 script #WarpGateFrost NPC_NO_SPRITE,1,0,{ + end; + +OnTouch: + TeleporterGate(TP_FROST); + close; + + +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} + diff --git a/npc/024-1/town.txt b/npc/024-1/town.txt new file mode 100644 index 0000000..3e21e4f --- /dev/null +++ b/npc/024-1/town.txt @@ -0,0 +1,12 @@ +// TMW-2 Script +// Author: +// Jesusalva +// Description: +// Reset LOCATION$ when entering a town + +024-1,93,69,0 script #LocFrostia NPC_HIDDEN,2,0,{ +OnTouch: + EnterTown("Frostia"); + end; +} + |