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/012-4 | |
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/012-4')
-rw-r--r-- | npc/012-4/_import.txt | 5 | ||||
-rw-r--r-- | npc/012-4/_warps.txt | 3 | ||||
-rw-r--r-- | npc/012-4/craft.txt | 54 | ||||
-rw-r--r-- | npc/012-4/wyara.txt | 310 |
4 files changed, 372 insertions, 0 deletions
diff --git a/npc/012-4/_import.txt b/npc/012-4/_import.txt new file mode 100644 index 0000000..cb639cb --- /dev/null +++ b/npc/012-4/_import.txt @@ -0,0 +1,5 @@ +// Map 012-4: Alchemy Shop +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/012-4/_warps.txt", +"npc/012-4/craft.txt", +"npc/012-4/wyara.txt", diff --git a/npc/012-4/_warps.txt b/npc/012-4/_warps.txt new file mode 100644 index 0000000..fb88327 --- /dev/null +++ b/npc/012-4/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 012-4: Alchemy Shop warps +012-4,35,31,0 warp #012-4_35_31 0,0,012-1,101,56 diff --git a/npc/012-4/craft.txt b/npc/012-4/craft.txt new file mode 100644 index 0000000..be788e9 --- /dev/null +++ b/npc/012-4/craft.txt @@ -0,0 +1,54 @@ +// TMW2: Moubootaur Legends scripts. +// Author: +// Jesusalva +// Description: +// Rentable Alchemy Bench + +012-4,27,31,0 script Alchemy Cauldron NPC_NO_SPRITE,{ + mesc l("What will you brew today?"); + mesc l("It costs %d GP to use.", .price), 1; + mesc l("This tax must be paid now, and you can brew as much as you wish after payment."), 1; + if (Zeny < .price) + close; + next; + select + l("Pay"), + l("Don't pay."); + mes ""; + if (@menu == 2) { closeclientdialog; close; } + clear; + if (Zeny < .price) { + mesc l("WARNING, you have been detected cheating and thus, violating Tulimshar Anti-Theft Policy."), 1; + mesc l("You were jailed and now need a GM to get you out of there."), 1; + logmes "WARNING, "+strcharinfo(0)+" found out cheating, only had "+Zeny+"/300 GP for alchemy table. Jailed.", LOGMES_ATCOMMAND; + consoleinfo("%s jailed - no money when brewing.", strcharinfo(0)); + atcommand("@jail "+strcharinfo(0)); + // Apply a more realistic penalty + Zeny=0; + CRAFTSYS_CURRENT=0; + close; + } + Zeny-=.price; + + do { + mesc l("What will you brew today?"); + mes ""; + + if (AlchemySystem(CRAFT_PLAYER)) { + mesc l("Success!"), 3; + } else { + mesc l("That didn't work!"), 1; + } + next; + mesc l("Try again?"); + } while (askyesno() == ASK_YES); + + close; + +OnInit: + .distance=3; + .price=1500; + end; +} + + diff --git a/npc/012-4/wyara.txt b/npc/012-4/wyara.txt new file mode 100644 index 0000000..cac765c --- /dev/null +++ b/npc/012-4/wyara.txt @@ -0,0 +1,310 @@ +// TMW2 Script +// Author: +// Saulc +// Vasily_Makarov (original from Evol) +// Jesusalva +// Description: +// Hurnscald Potion Shopkeeper +// Notes: +// Reset must be turned in function + +012-4,29,28,0 script Wyara NPC_FEMALE,{ + + speech S_LAST_NEXT, + l("I am @@, an alchemist specialized in reset potions.", .name$); + +L_Menu: + .@n=getq(General_Narrator); + .@s=getq(HurnscaldQuest_Sagratha); + .@s3=getq3(HurnscaldQuest_Sagratha); + + select + l("Can you reset my stats please?"), + rif($ARKIM_ST >= 1200,l("I want Piberries Infusion!")), + rif(getq(HurnscaldQuest_InjuriedMouboo) == 2,l("Do you know how to break curses?")), + rif(.@s == 1 && .@s3,l("Sagratha was not home.")), + rif(.@s == 2,l("About Sagratha...")), + rif(SAGRATHA_SCORE < 0 && .@s >= 6, l("Sagratha hates my guts.")), + rif(.@n >= 6,l("I am in dire need of Return Potions!")), + lg("You are weird, I have to go sorry."); + + mes ""; + switch (@menu) { + case 1: + goto L_ResetStats; + case 2: + goto L_Piberries; + case 3: + goto L_Uncurse; + case 4: + goto L_SaggyHome; + case 5: + goto L_SaggyMain; + case 6: + goto L_SaggyHelp; + case 7: + goto L_ReturnPot; + case 8: + goto L_Quit; + } + +L_ResetStats: + mesn; + mesq l("Status point reset can't be undone. Do you really want this?"); + +L_ConfirmReset: + ConfirmStatusReset(); + goto L_Quit; + +L_Piberries: + mesn; + mesq l("For (another) one @@, I'll need 3~4 @@ and 50 GP.", getitemlink(PiberriesInfusion), getitemlink(Piberries)); + next; + select + rif(Zeny >= 50 && countitem(Piberries) >= 4, l("Do it!")), + l("Not now, sorry."); + if (@menu == 2) + goto L_Quit; + + mes ""; + inventoryplace PiberriesInfusion, 1; + + Zeny=Zeny-50; + delitem Piberries, rand2(3,4); + getitem PiberriesInfusion, 1; + getexp 10, 0; + goto L_Piberries; + +L_Uncurse: + mesn; + mesq l("Well, it depends on the curse. Some are easy to break, and others are... well..."); + next; + select + l("It's a simple curse."), + l("It's a complex curse."), + l("It's a cursed mouboo."); + mes ""; + mesn; + switch (@menu) { + case 1: + mesq l("Then you should look in buying Caffeinne. Curse is a status ailment which reduces your attack, nullifies your luck and makes you a snail. Simple Curses can be cured with time, too."); + break; + case 2: + mesq l("Oh, then you should seek the help of an specialist. These curses have an specific condition to break, like leveling up or being killed. Force-breaking them can be difficult."); + break; + case 3: + mesq l("A... Mouboo? Well, I know who can handle curses on cute Mouboos."); + next; + mesn; + mesq l("Go talk to Sagratha, she is usually in a hut in northen forest. The door have a magic barrier, so you'll need to have minimal magic skills to get close enough to open it."); + next; + mesn; + mesq l("She doesn't likes @@s, only cute animals. She doesn't likes Ghosts, Undeads, and Shadow monsters either.", get_race()); + next; + mesn; + mesq l("So, when you get on the door, knock it, and say this: \"@@\". She will open the door for you.", b(l("Mouboos are cute"))); + compareandsetq HurnscaldQuest_Sagratha, 0, 1; + break; + } + close; + +L_ReturnPot: + .@price=7000-(reputation("Hurns")*20); + .@craft=2001-(reputation("Hurns")*20); + .@ammon=5+(reputation("Hurns")/30); + mesn; + mesq l("I understand. Rakinorf told me to stuff you with them if needed."); + next; + mesn; + mesq l("Be aware I can only bake batches of @@ potions.", .@ammon); + next; + mesn; + mesq l("So, it is @@ GP each one up-front. Or I can brew with your materials:", .@price); + mes ""; + mesn l("Craft Recipe"); + mesc l("- @@/@@ @@", countitem(MauveHerb), 80, getitemlink(MauveHerb)); + mesc l("- @@/@@ @@", countitem(MushroomSpores), 15, getitemlink(MushroomSpores)); + mesc l("- @@/@@ @@", countitem(Potatoz), 7, getitemlink(Potatoz)); + mesc l("- @@/@@ @@", countitem(Coral), 5, getitemlink(Coral)); + mesc l("- @@/@@ @@", countitem(EverburnPowder), 1, getitemlink(EverburnPowder)); + mesc l("- @@/@@ GP", format_number(.@craft), format_number(Zeny)); + next; + select + l("Too expensive %%n"), + rif(Zeny >= .@price, l("I want to pay the full price.")), + l("I want you to brew some for me."); + mes ""; + switch (@menu) { + case 1: + close; + case 2: + mesc l("How many? Max. @@", (Zeny/.@price)); + input .@c, 0, (Zeny/.@price); + .@payment=.@price*.@c; + if (Zeny >= .@payment) { + inventoryplace ReturnPotion, .@c*.@ammon; + Zeny-=.@payment; + getitem ReturnPotion, .@c*.@ammon; + mesn; + mesq l("There you go!"); + } else { + Exception("Illegal input.", RB_DEFAULT | RB_SPEECH); + } + break; + case 3: + mesc l("How many?"); + input .@c, 0, 100; + inventoryplace ReturnPotion, .@c*.@ammon; + if ( + countitem(MauveHerb) < 80*.@c || + countitem(MushroomSpores) < 15*.@c || + countitem(Potatoz) < 7*.@c || + countitem(Coral) < 5*.@c || + countitem(EverburnPowder) < 1*.@c || + Zeny < .@craft*.@c + ) Exception("You don't have that much material.", RB_ISFATAL|RB_SPEECH); + delitem MauveHerb, 80*.@c; + delitem MushroomSpores, 15*.@c; + delitem Potatoz, 7*.@c; + delitem Coral, 5*.@c; + delitem EverburnPowder, 1*.@c; + Zeny-=.@craft*.@c; + getitem ReturnPotion, .@c*.@ammon; + mesn; + mesq l("There you go!"); + break; + } + close; + +L_SaggyHome: + mesn; + mesq l("She probably just went out for a walk. Nothing to worry, I hope."); + next; + if (.@n < 11) { + mesn; + mesq l("It's impossible to know when she'll be back, so you should prioritize something else for now."); + close; + } + select + l("Yeah, she might be back soon."), + l("I don't think so. There have been... Incidents."); + if (@menu == 1) + close; + mes ""; + mesn; + mesq l("...Incidents?"); + next; + mesn strcharinfo(0); + mesc l("You tell her about the incident at the Blue Sage's residence and how they were aiming at sages."); + next; + mesn; + mesq l("Well, this is very disturbing, indeed. I hope my good friend Sagratha is fine."); + next; + mesn; + mesq l("Can you, perhaps, do me a favor? Please... Check her house for any signs of battle."); + next; + mesn; + mesq l("She should be safe as she is a strong woman, but... You never know."); + setq1 HurnscaldQuest_Sagratha, 2; + setq3 HurnscaldQuest_Sagratha, 0; + close; + +L_SaggyMain: + mesn; + mesq l("Yes? Have you looked her house for signs of battle?"); + next; + select + l("Yes, and there was no signs of a fight."), + l("...Not yet."); + if (@menu == 2) + close; + mes ""; + mesn; + mesq l("Are you sure? Like, really really sure?"); + next; + if (!.@s3) { + mesn strcharinfo(0); + mesq l("Hmm... Thinking well..."); + next; + mesn; + mesq l("THEN DON'T WASTE MY TIME! My friend could be in danger!"); + next; + mesn; + mesq l("Go do what I told you to do and examine the house thoroughly!"); + close; + } + mesn strcharinfo(0); + mesq l("Yes, I did. There was only an unlocked secret window."); + next; + mesn; + mesq l("Good, this must mean that Sagratha managed to flee in time."); + next; + mesn; + mesq l("Eh, I don't think you'll be brave enough to go after her. If even she decided to flee, I doubt you wouldn't do the same."); + next; + select + l("Yeah you're right, I'm a noob anyway, and Sagratha is a skilled mage. She should be fine on her own."), + l("Two still fight better than one. I have the courage of a dustman in me!"); + mes ""; + if (@menu == 1) + close; + mesn; + mesq l("Heh. Foolish. That's what adventurers are, I guess..."); + next; + mesn; + mesq l("If you leave by the secret window, you'll notice a small cave entrance. Enter it."); + next; + mesn; + mesq l("It seems to be the ruins of some sort of Mouboo Temple or whatever, from a millenia ago. There may be traps, so be careful."); + next; + inventoryplace MercCard_Jesusalva, 1; + mesn; + mesq l("I'll give you a @@. It should aid you out there.", getitemlink(MercCard_Jesusalva)); + next; + mesn; + mesq l("...Good luck, @@. And be careful. If Sagratha decided to flee... It might be too strong for you.", strcharinfo(0)); + setq1 HurnscaldQuest_Sagratha, 3; + setq3 HurnscaldQuest_Sagratha, 0; + getitem MercCard_Jesusalva, 1; + close; + +L_SaggyHelp: + mesn; + mesq l("Well, you probably deserve it."); + next; + mesn; + mesq l("Have you been harming the forest? Specially Mouboos. Are you killing them?"); + next; + mesn; + mesq l("If yes, of course she will hate you. With reason! You're murdering her family and friends!"); + next; + mesn; + mesq l("Listen, she decided to live away from civilization. She choose the forest as her home and the animals as her family."); + next; + mesn; + mesq l("You have no right to take that away from her!"); + next; + mesn; + mesq l("You could try to get on her good side by killing what destroys the forest, or by planting trees."); + next; + mesn; + mesq l("But if you keep harming the forest, this will be for naught. Was I clear?"); + close; + +L_Quit: + goodbye; + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, FancyHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, SailorShirt); + setunitdata(.@npcId, UDT_HEADBOTTOM, BromenalPants); + setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins); // Boots + setunitdata(.@npcId, UDT_HAIRSTYLE, 8); + setunitdata(.@npcId, UDT_HAIRCOLOR, 18); + + .sex = G_FEMALE; + .distance = 4; + end; +} |