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/009-2 | |
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/009-2')
-rw-r--r-- | npc/009-2/_import.txt | 7 | ||||
-rw-r--r-- | npc/009-2/_warps.txt | 4 | ||||
-rw-r--r-- | npc/009-2/librarian.txt | 200 | ||||
-rw-r--r-- | npc/009-2/politics.txt | 58 | ||||
-rw-r--r-- | npc/009-2/ryan.txt | 172 | ||||
-rw-r--r-- | npc/009-2/scholar.txt | 89 |
6 files changed, 530 insertions, 0 deletions
diff --git a/npc/009-2/_import.txt b/npc/009-2/_import.txt new file mode 100644 index 0000000..2d0238f --- /dev/null +++ b/npc/009-2/_import.txt @@ -0,0 +1,7 @@ +// Map 009-2: Halinarzo Library & Bar +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/009-2/_warps.txt", +"npc/009-2/librarian.txt", +"npc/009-2/politics.txt", +"npc/009-2/ryan.txt", +"npc/009-2/scholar.txt", diff --git a/npc/009-2/_warps.txt b/npc/009-2/_warps.txt new file mode 100644 index 0000000..df08e8b --- /dev/null +++ b/npc/009-2/_warps.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 009-2: Halinarzo Library & Bar warps +009-2,28,66,0 warp #009-2_28_66 0,0,009-1,73,64 +009-2,62,67,0 warp #009-2_62_67 0,0,009-1,84,64 diff --git a/npc/009-2/librarian.txt b/npc/009-2/librarian.txt new file mode 100644 index 0000000..b08a71e --- /dev/null +++ b/npc/009-2/librarian.txt @@ -0,0 +1,200 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Main Storyline +// NPC_SAMANTHA + +009-2,67,60,2 script Book Keeper NPC_FEMALE,{ + .@n = getq(General_Narrator); + if (.@n == 9) mesn; + if (.@n == 9) mesc l("Anyway, I think you should go to Hurnscald Townhall again, and speak with the mayor."); + if (.@n == 9) next; + if (.@n >= 9) goto L_Complete; + if (.@n == 8) goto L_Report; + if (.@n == 6 || .@n == 7) goto L_Advance; + if (.@n < 6 && .@n >= 2) goto L_Horses; + mesn; + mesq l("Hello. I am the book keeper, responsible for keeping Halinarzo History."); + // TODO: Import data from BR-002-5 (Royal Library) and make available story about TMW-BR + close; + +L_Horses: + mesn; + mesq l("Hello. I am the book keeper, responsible for keeping Halinarzo History."); + next; + select + l("Cool, thank you."), + l("I was born here but I had amnesia."); + mes ""; + if (@menu == 1) + close; + mesn; + mesq l("Please prove your statement."); + next; + mesc l("You realize that you have no means to prove your statement."); + mesc l("Saying that you were sent here would prove nothing."); + mesc l("How do you even prove amnesia, anyway?"); + next; + mesn; + mesq l("You are just a random stranger trying to steal adventurer data, aren't you?? %%e"); + next; + mesn; + mesq l("I bet you'll now ask for %s's password, and scam all their money!!", strcharinfo(0)); + next; + mesn; + mesq l("Get out of here! Before I call the city guard!!"); + close; + +L_Advance: + .@nt = getq2(General_Narrator); + // Initial Value is 0. + // .@nt tracks future value + if (!.@nt || .@n == 6) + goto L_Prologue; + + // If you wait 7 - instead of 2 - hours, you are abusing. + // So now, you must wait an extra hour. + if (.@nt > santime()+(60*60*7)) { + setq2 General_Narrator, santime()+(60*60); + .@nt=santime()+(60*60); + } + + // You got magic, so, why waiting so long. Chop half hour. + // Should be plenty to instantly finish. + if (MAGIC_LVL && !@halinskip) { + .@nt-=1800; + setq2 General_Narrator, .@nt; + @halinskip=true; + } + + // Wait time is over! + if (.@nt <= santime()) + goto L_Complete; + + mesn; + mesq l("Have you found out magic already? It should not be possible, but the girl reading the book says it is. I don't know in what to believe."); + next; + mesn; + mesq l("Anyway, I still need @@. You have plenty of time to do things at your own pace.", FuzzyTime(.@nt)); + tutmes l("Maybe you should go to the depleted mines in the small cave inside the town. Who knows what you may find inside."); + // Rule #99999999: Never tell players to grind for 3 hours you lazy dev + //mesq l("Please help us with the bandits on the Canyon, and meanwhile, I'll seek the records for you. Just @@ more.", FuzzyTime(.@nt)); + close; + +L_Prologue: + mesn strcharinfo(0); + mesq l("Hi! Apparently, I came from here and moved at the age of 4, but I had amnesia and can't remember!"); + next; + mesn strcharinfo(0); + mesq l("It would be very kind of you, if you could seek who I am!"); + next; + mesn; + mesq l("What are you talking about? You are who you are right now. There's no other you."); + mesc l("Unless, of course, if Saulc cloned you. But then we must blame Saulc!"); + next; + mesn; + mesq l("Ah... I see. You are a lost soul, without parents, lost on the world with only some basic stuff."); + next; + mesn; + mesq l("Alright, I'll look in the archives. I'll have an answer for you in @@. Meanwhile, why don't you suppress the bandits on the cliff?", l("45 minutes")); + // Please wait 45 minutes + setq General_Narrator, 7, santime()+(60*45); + next; + mesn; + mesq l("Also, Halinarzo is famous for the depleted mana mines in the town. You probably won't find a mana stone there, but it might be cool to look."); + next; + mesn; + mesq l("Thinking a bit... Yes, you definitely should go to the mines. They have been infested by slimes and people sometimes worry they'll leave and attack the town, but you should be capable of suppressing them."); + close; + +L_Complete: + mesn; + mesq l("So, I looked the records. There was nothing really useful."); + mesq lg("Like, I know you are female.", "Like, I know you are male."); + next; + mesn; + mesq l("But, I found something really interesting! Ah... I hope you like history?"); + next; + mesn l("HISTORY BOOK"); + mesc l("In these dark times, countless souls moved away from Halinarzo. All hope seemed lost."); + mesc l("But then, Andrei Sakar appeared. Hope was not lost. We could still defend it."); + next; + mesn l("HISTORY BOOK"); + mesc l("Many sacrifices were done, but it was lost."); + mesc l("Even the mighty Andrei Sakar could only barely escape alive. The Monster King was too strong."); + mesc l("All hope was lost. We failed to protect it. We lost everyone who challenged the Monster King. Killed without mercy."); + next; + mesn l("HISTORY BOOK"); + mesc l("The Monster King was so powerful! It is impossible to recover the artifact now, and everyone will die!"); + mesc l("A few families, also known as the Ancient Families of the Soul Menhir (for whatever reasons that may be), departed."); + next; + mesn l("HISTORY BOOK"); + mesc l("They promised to travel to the ##BWorld Edge##b to fetch a Mana Fragment. The wisest of them said it was the only chance."); + mesc l("They were never again seen. None of them. We burnt all records about everyone here, and blamed the Monster King."); + mesc l("They must never know we had it. Their sacrifices must be forgotten. For the sake of all."); + compareandsetq General_Narrator, 7, 8; + close; + +L_Report: + mesn; + mesq l("Do you want to read the story again? Or should we get to the most obvious point?"); + next; + select + l("I want to know what you found out again"), + l("I want to know why you shown me that."); + if (@menu == 1) + goto L_Complete; + mesn; + mesq l("We have three vanishing sort of people on the story."); + next; + mesn; + mes l("1- The coward families, who ran away when outlook was bad."); + mes l("2- The defenders of the artifact, who lost their lives and left people behind."); + mes l("3- The ancient families."); + next; + mesn; + mesq l("You probably was only 4 when all that happened. And opposed to official story, the Monster King never enter this building."); + next; + mesn; + mesq l("In other words: If Lua couldn't find your record, your parents were part of this story! But, on which of these three groups were them?"); + next; + mesn; + mes l("Well, if you were from the defenders, you would have been adopted by a family which left Halinarzo."); + mesq l("And if your family, real or adoptive, was coward, there would be no lead at all."); + next; + mesn; + mesq l("So, let's work with the last proposal, that you're from an ancient family. We can backtrace what they did."); + next; + mesn; + mesq l("Their first stop was Hurnscald, so please go to Hurnscald Townhall, and speak with the mayor, he can help you getting there. You can't reach there normally, after all."); + next; + inventoryplace ScholarshipBadge, 1; + mesn; + mesq l("Good luck, @@!", strcharinfo(0)); + mesc l("@@ hands you an @@.", .name$, getitemlink(ScholarshipBadge)); + next; + getexp BaseLevel*750, JobLevel*50;// Reference Levels: (40, 15) + getitem ScholarshipBadge, 1; + mesc b(l(".:: Main Quest 4-1 ::.")), 3; + mesc l("* Talk to Librarian in Halinarzo"), 2; + mesc l("* Return to Hurnscald Townhall"), 9; + setq General_Narrator, 9; + getvaultexp(10); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, FancyHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, CreasedShirt); + //setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes); + setunitdata(.@npcId, UDT_WEAPON, JeansShorts); + setunitdata(.@npcId, UDT_HAIRSTYLE, any(8,11,20)); + setunitdata(.@npcId, UDT_HAIRCOLOR, 5); + npcsit; + + .sex=G_FEMALE; + .distance=5; + end; +} + diff --git a/npc/009-2/politics.txt b/npc/009-2/politics.txt new file mode 100644 index 0000000..490de70 --- /dev/null +++ b/npc/009-2/politics.txt @@ -0,0 +1,58 @@ +// TMW2 Scripts +// Author: +// Jesusalva +// Description: +// Town Administrator file, see npc/functions/politics.txt +// User variables: +// #POL_APPLYWEEK = Week of last application +// #POL_VOTEDAY = Day of last vote + +009-2,66,63,0 script Halinarzo Office NPC_POLITICS,{ +do +{ + mesc ".:: "+l("Halinarzo Townhall")+" ::.", 2; + mesc l("Current Town Administrator: ")+$HALIN_MAYOR$, 3; + POL_TownInfo("HALIN"); + mesc l("Application fee: @@ GP", .applytax); + next; + select + l("Information"), + rif(strcharinfo(0) == $HALIN_MAYOR$, l("Manage Town")), + rif(#POL_APPLYWEEK != gettimeparam(GETTIME_WEEKDAY), l("Apply for the office!")), + l("View Candidate List and cast a vote"), + l("[Quit]"); + + switch (@menu) { + case 1: + POL_Information(); + break; + case 2: + POL_Manage("HALIN"); + break; + case 3: + // array_push might be too sensible for getd/setd + if (Zeny < .applytax) + break; + Zeny-=.applytax; + $HALIN_MONEY+=.applytax; + #POL_APPLYWEEK=gettimeparam(GETTIME_WEEKDAY); + array_push($HALIN_CANDIDATE$, strcharinfo(0)); + array_push($HALIN_VOTES, 0); + mesc l("Application successful!"), 3; + next; + break; + case 4: + POL_Candidate("HALIN"); + break; + default: + close; + } +} while (true); +end; + +OnInit: + .applytax=100; + .distance=4; + end; +} + diff --git a/npc/009-2/ryan.txt b/npc/009-2/ryan.txt new file mode 100644 index 0000000..db5c196 --- /dev/null +++ b/npc/009-2/ryan.txt @@ -0,0 +1,172 @@ +// TMW-2 Script. +// Author: +// Saulc +// Jesusalva +// Notes: +// Buys Tonori Delight + +009-2,29,57,0 script Ryan NPC_PLAYER,{ + if (BaseLevel < 17) goto L_Weak; + if (!getq(HalinarzoQuest_LifeDelight)) goto L_Prologue; + .@q=getq2(HalinarzoQuest_LifeDelight); + if (.@q < 25) + .@a=(.@q**2)+18; + else if (.@q < 40) + .@a=625+18*(.@q-24); + else if (.@q < 50) + .@a=895+10*(.@q-39); + else + .@a=1000+(.@q*(.@q < 75 ? 1 : 2)); + + if (.@q > 100) goto L_Complete; + mesn; + mesq l("Ah, I just wanted @@... Yummy, lovely @@...", getitemlink(TonoriDelight), getitemlink(TonoriDelight)); + next; + mesn; + mesq l("If you bring me @@ @@, I'll give you a reward!", .@a, getitemlink(TonoriDelight)); + next; + select + rif(countitem(TonoriDelight) >= .@a, l("I have everything!")), + l("Ah, not now..."); + mes ""; + if (@menu == 2) + close; + + inventoryplace ChefHat, 1; + inventoryplace PlatinumIngot, 1, IridiumIngot, 2; + + // Generic rewards: XP Boost (.@l) and GP boost (.p) + .@l=BaseLevel+JobLevel; + + // Main reward + delitem TonoriDelight, .@a; + getexp rand(.@a, .@a*2)+.@q*rand(10,30), .@l; + Zeny=Zeny+.@a*.p; + setq2 HalinarzoQuest_LifeDelight, .@q+1; + mesn; + mesq l("Hmmm... Yummy!"); + + // Landmark rewards + // Chef hat last stage: 120 Delights - 583 in total + .@r=getq(HalinarzoQuest_LifeDelight); + .@q=getq2(HalinarzoQuest_LifeDelight); + if (.@r < 2 && .@q >= 11) { + setq1 HalinarzoQuest_LifeDelight, 2; + getitem ChefHat, 1; + getexp 13500, 10; + next; + mesn; + mesq l("Ah, you really deserve this @@. Good job!", getitemlink(ChefHat)); + } + + // Bonus stage + if (.@q == 20) + getitem Coffee, 1; + + if (.@q >= 21) { + Zeny+=rand2(1,.@a)*.p; + getexp rand2(1,.@q)*.@l, rand2(1, .@q); + Mobpt+=.@q; // From now on, Monster Points will be generated + } + + // Bonus stage + if (.@q == 30) + getitem Manapple, 1; + + // Bonus stage + if (.@q == 40) + getitem LoFWarpCrystal, 1; + + // Elixir Of Life last stage: ~995 Delights - 26,385 in total + if (.@r < 3 && .@q >= 51) { + setq1 HalinarzoQuest_LifeDelight, 3; + getitem ElixirOfLife, 1; + getitem MylarinDust, 1; + getexp 30000, 5000; + next; + mesn; + mesq l("Hey, take this @@. It heals fully but who cares, I have Tonori Delight!", getitemlink(ElixirOfLife)); + } + + if (.@q >= 51) { + Zeny+=rand2(.@q,.@a)*.p; + getexp rand2(1,.@a)*.@l, rand2(1, .@q); + } + + // Bonus stage + if (.@q == 60) + getitem SacredLifePotion, 1; + + // Bonus stage + if (.@q == 70) + getitem MercBoxDD, 1; + + // Bonus stage + if (.@q == 80) + getitem DivineApple, 1; + + // Bonus stage + if (.@q == 90) + getitem MysteriousFruit, 1; + + if (.@q >= 91) { + Zeny+=rand2(.@a, .@a+.@q)*.p; + getexp rand2(.@q,.@a)*.@l, rand2(1, .@q); + } + // Platinum + Iridium last stage: ~1290 Delights - 86,885 in total + if (.@r < 4 && .@q == 100) { + setq1 HalinarzoQuest_LifeDelight, 4; + getitem SunnyCrystal, 1; + getitem PlatinumIngot, 1; + getitem IridiumIngot, 2; + getitem EquipmentBlueprintE, 2; + getitem AlchemyBlueprintE, 2; + Mobpt+=1000000; // 1 Million Monster Points + getexp 500000, 50000; // Reference: Lv 74 / Lv 38 + next; + mesn; + mesq l("Ah, I have enough @@ for a life! Take this EXTREMELY RARE @@. Good job!", getitemlink(TonoriDelight), getitemlink(SunnyCrystal)); + mesc l("Got Master Blueprints!"); + mesc l("Got 1,000,000 Monster Points!"); + } + + close; + +L_Complete: + mesn; + mesq l("Thanks for the help! Yummy!"); + close; + +L_Weak: + mesn; + mesq l("How did you even got here? There are dangerous swamps north, and dangerous deserts south..."); + close; + +L_Prologue: + setq HalinarzoQuest_LifeDelight, 1, 0; + mesn; + mesq l("Ah, I just wanted @@... Yummy, lovely @@...", getitemlink(TonoriDelight), getitemlink(TonoriDelight)); + next; + mesn; + mesq l("There's a big prize in the end... Could you bring me some later?"); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, ChefHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, SilkRobe); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonTrousers); + setunitdata(.@npcId, UDT_WEAPON, Boots); + setunitdata(.@npcId, UDT_HAIRSTYLE, 26); + setunitdata(.@npcId, UDT_HAIRCOLOR, 2); + + .sex = G_MALE; + .distance = 4; + .p=97; // Price in GP of each Tonori Delight. + // real price is 556 in ingredients (this gets a x2 sell price) + // + 120 GP of taxes + // Total: 676 GP per batch (5~9 units). We consider the average batch (7). + // NO EXTRA PROFIT IS REQUIRED/ALLOWED. + end; +} + diff --git a/npc/009-2/scholar.txt b/npc/009-2/scholar.txt new file mode 100644 index 0000000..c1d9a82 --- /dev/null +++ b/npc/009-2/scholar.txt @@ -0,0 +1,89 @@ +// TMW2/LoF scripts. +// Authors: +// TMW-LoF Team +// Jesusalva +// Description: +// Encourages players to get magic and keep the game interesting +// HalinarzoQuest_MageEquipment +// 0 - Haven't started +// 1 - Listened to intro about mage equipments. +// 2 - NYI: A quest to obtain more powerful magic equipment. + +009-2,51,54,0 script Bella, the Scholar NPC_BELLA,{ + .@q=getq(HalinarzoQuest_MageEquipment); + mesn; + mesq l("I am Bella, the Scholar."); + if (!mstone(MAGIC_LVL)) goto L_NotEnough; + mesq l("Out of my experience, you are ready to learn magic."); + next; + mesn; + mesq l("A pity that without being born with magic, you need a Mana Stone... And there are none left..."); + mesc l("*sigh*"); + if (.@q < 1) + goto L_Intro; + if (.@q && getq(General_Narrator) == 7) + goto L_NeedHelp; + close; + +L_NotEnough: + if (BaseLevel < $MANA_BLVL+MAGIC_LVL*rand(15,17)) { + mesq l("Out of my experience, your level may not be enough."); + } + if (JobLevel < $MANA_JLVL+MAGIC_LVL*rand(10,12)) { + mesq l("Out of my experience, your job may not be enough."); + } + if (readparam2(bInt) < $MANA_BINT+MAGIC_LVL*rand(10,13)) { + mesq l("Out of my experience, your base intelligence may not be enough."); + if (!.@q) + mesc l("You should reset your stats and allocate some points at intelligence."); + } + if (.@q < 1) + goto L_Intro; + close; + +L_Intro: + next; + mesn; + mesq l("I'll only say you this once. Mages can, of course, go to battlefield in heavy armor and stuff."); + next; + mesn; + mesq l("But if a mage wants to be a warrior, they won't be able to use their full magic skills."); + next; + mesn; + mesq l("Mages should use equipment designed for them. Those may be lacking on defense, but will raise MP and Magic Attack."); + mesq l("I must, however, remember that the most powerful magical equipment ##B may require intelligence ##b to use."); + next; + mesn; + mesq l("Without magic attack, using a fireball at an enemy will be like throwing a stone."); + mesq l("And without proper MP-raising equipment, you'll be exausthed after your first fireball."); + next; + mesn; + mesq l("Mage equipment also raises MP recovery. So yes, a mage can use a sword and heavy armor, but..."); + mesq l("...If they decide to do so, they'll have to deal with weak magical attacks, and with quick mana depletion."); + next; + inventoryplace TrainingWand, 1; + mesn; + mesq l("Thanks for listening to my rambles. I'll gift you a @@. Of course, having a wand won't give you magic...", getitemlink(TrainingWand)); + mesq l("...You need to learn magic before this equipment being useful to you in any way."); + setq HalinarzoQuest_MageEquipment, 1; + getitem TrainingWand, 1; + close; + +L_NeedHelp: + next; + mesn; + mesq l("Did you knew some crazy adventurers insists there is a Mana Stone on the dangerous caves inside the town?"); + next; + mesn; + mesq l("I mean, that's absurd! If there was one, it would have been taken already. Unless if grew some sentience or something."); + next; + mesn; + mesq l("Anyway, if you ever feel bored and wanna see what I mean by yourself, just leave the building and head west, then north. There's a small entrance there."); + tutmes col(l("WARNING: "),1)+l("Magic is necessary for warriors and archers to learn skills. Skills can be learned in Tulimshar."), l("Magic, Warriors and Archers"); + close; + +OnInit: + .sex=G_FEMALE; + .distance=5; + end; +} |