summaryrefslogtreecommitdiff
path: root/npc/012-4
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/012-4
downloadserverdata-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.txt5
-rw-r--r--npc/012-4/_warps.txt3
-rw-r--r--npc/012-4/craft.txt54
-rw-r--r--npc/012-4/wyara.txt310
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;
+}