summaryrefslogtreecommitdiff
path: root/npc/012-7
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-7
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-7')
-rw-r--r--npc/012-7/_import.txt7
-rw-r--r--npc/012-7/_warps.txt3
-rw-r--r--npc/012-7/airlia.txt182
-rw-r--r--npc/012-7/celestia.txt396
-rw-r--r--npc/012-7/politics.txt58
-rw-r--r--npc/012-7/slots.txt97
6 files changed, 743 insertions, 0 deletions
diff --git a/npc/012-7/_import.txt b/npc/012-7/_import.txt
new file mode 100644
index 0000000..aaf345c
--- /dev/null
+++ b/npc/012-7/_import.txt
@@ -0,0 +1,7 @@
+// Map 012-7: Town Hall
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/012-7/_warps.txt",
+"npc/012-7/airlia.txt",
+"npc/012-7/celestia.txt",
+"npc/012-7/politics.txt",
+"npc/012-7/slots.txt",
diff --git a/npc/012-7/_warps.txt b/npc/012-7/_warps.txt
new file mode 100644
index 0000000..7cc2e52
--- /dev/null
+++ b/npc/012-7/_warps.txt
@@ -0,0 +1,3 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 012-7: Town Hall warps
+012-7,35,65,0 warp #012-7_35_65 0,0,012-1,102,70
diff --git a/npc/012-7/airlia.txt b/npc/012-7/airlia.txt
new file mode 100644
index 0000000..9b0eaf5
--- /dev/null
+++ b/npc/012-7/airlia.txt
@@ -0,0 +1,182 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+// Personality Traits:
+// Bitter-sweet, resentful, lovely, cute
+// Description:
+// Former Town's Mayor Daughter.
+// Have a grudge against current mayor.
+// Her father was banished from the town after the famine and the Monster Attack (Siege)
+// TODO: Remember to use disablenpc() and enablenpc() to keep consistency with Hurns Liberation Day
+// A new mayor was elected, which was her family political enemy. She misses her father,
+// which she doesn't knows where he is because the banishment. Main storyline unlocks
+// this side quest, but the main storyline keeps going forward regardless of that.
+// NOTE: Here, 'main storyline' is character story, do not mistake with world main storyline.
+
+012-7,52,58,0 script Airlia NPC_ELF_F,{
+ .@q1=getq(HurnscaldQuest_Farmers);
+ .@n = getq(General_Narrator);
+ if (strcharinfo(0) == $MOST_HEROIC$) npctalk3 l("Ah, if it isn't @@? You're the talk of the town!", $MOST_HEROIC$);
+ if (.@q1 == 4) goto L_Letter;
+ if (.@n >= 3 && .@n < 6) goto L_Mayor;
+ if (.@n == 9) goto L_Nivalis;
+ mesn;
+ mesq l("Oh, a visitor. Welcome to the city hall. Please, enjoy your stay.");
+ close;
+
+// Hurnscald Farmers Quest
+L_Letter:
+ mesn;
+ mesq l("You're the savior of Hurnscald crops. Half from the world would die from famine, weren't for you.");
+ next;
+ mesn;
+ mesq l("We're currently the biggest exporter of food. We may be a small town, but Tulimshar and Halinarzo can barely hold themselves.");
+ next;
+ mesn;
+ mesq l("Here, take this @@. This is the proof that you've helped Hurnscald greatly. This shall open new opportunities to you.", getitemlink(CottonBoots));
+ inventoryplace CottonBoots, 1;
+ setq HurnscaldQuest_Farmers, 5;
+ getitem CottonBoots, 1;
+ getexp 0, 1000;
+ close;
+
+// Main Storyline & Airlia Quest
+L_Mayor:
+ .@q=getq2(General_Narrator);
+
+ // 3 - Quest Not Assigned
+ if (.@n == 3)
+ goto L_In1;
+
+ // 4 - Airlia doesn't wants to talk about </3
+ if (.@n == 4) {
+ if (.@q == 2) goto L_In3;
+ if (.@q == 1) goto L_In2;
+ }
+
+ // 5 - Access to Rakinorf was granted
+ if (.@n == 5)
+ goto L_In4;
+
+ mesc l("Script Error"), 1;
+ close;
+
+L_In1:
+ mesn strcharinfo(0);
+ mesq l("Hello! Could I see the Mayor?");
+ next;
+ mesn;
+ mesq l("Ah... The mayor. The current mayor. Why do you even want to talk to him, anyway?");
+ next;
+ mesn;
+ mesq l("Anyway, he is not available at the moment. Try your luck again later.");
+ setq General_Narrator, 4, 1;
+ close;
+
+L_In2:
+ mesn strcharinfo(0);
+ mesq l("Hello! Could I see the Mayor?");
+ next;
+ mesn;
+ mesq l("I already told you he is out! Why do you even want to talk to him?! Haven't I told you to... to... leave me alone!?");
+ setq2 General_Narrator, 2;
+ close;
+
+L_In3:
+ mesn strcharinfo(0);
+ mesq l("Hello! Could I see the Mayor?");
+ next;
+ mesn;
+ mes "...";
+ next;
+ mes "... ...";
+ next;
+ mes "... ... ...";
+ next;
+ mesn;
+ mesq l("Fine.");
+ next;
+ mesn;
+ mesq l("The mayor, Rakinorf, is probably on the Inn upstairs, drinking himself to death.");
+ next;
+ mesn;
+ mesq l("Usually only sponsors are allowed up there, but I'll make an exception today. Go meet the mayor.");
+ setq General_Narrator, 5, 0;
+ close;
+
+L_In4:
+ if (.@q == 5)
+ goto L_In5;
+ mesn;
+ mesq l("The mayor, Rakinorf, is probably on the Inn upstairs, drinking himself to death.");
+ next;
+ mesn;
+ mesq l("Usually only sponsors are allowed up there, but I'll make an exception today. Go meet the mayor.");
+ close;
+
+L_In5:
+ mesn;
+ mesq l("Go away.");
+ next;
+ mesn strcharinfo(0);
+ mesq l("I can't. Rakinorf told me I should bring this matter to you instead.");
+ next;
+ mesn;
+ mesq l("That lazy mayor... He can't do anything on his own!! Sure, what do you need?");
+ next;
+ mesn strcharinfo(0);
+ mesc l("You explain to Airlia about you wanting to travel to Halinarzo to find clues.");
+ next;
+ mesn;
+ mesq l("What, only that? Well, this is actually simpler than it looks.");
+ next;
+ mesn;
+ mesq l("Basically, there's no sea route to Halinarzo. You must head southeast of Tulimshar.");
+ next;
+ mesn;
+ mesq l("Halinarzo lies past the Canyon, but the @@ there are level @@.", getmonsterlink(Snake), strmobinfo(3, Snake));
+ next;
+ mesn;
+ mesq l("So, you would die a few thousands of times before ever reaching Halinarzo.");
+ next;
+ mesn;
+ mesq l("But with a @@, when you are about to die, you can warp back to Soul Menhir and bypass death penalty.", getitemlink(ReturnPotion));
+ next;
+ mesn;
+ mesq l("That's a super rare potion, and it expires after some time. Take care!");
+ setq2 General_Narrator, 6;
+ close;
+
+L_Nivalis:
+ // Supposed to send player to talk with another NPC on Nivalis about World's Edge
+ mesn;
+ mesq l("Going to World Edge? Never heard of.");
+ next;
+ mesn;
+ mesq l("My father probably knew... Well, you better ask Blue Sage then.");
+ next;
+ mesn;
+ mesq l("The Blue Sage is Nivalis Mayor and very knowledgeable on stuff. Lemme write a letter of recommendation for you and sign it in Rakinorf's stead...");
+ next;
+ mesc b(l(".:: Main Quest 4-1 ::.")), 3;
+ mesc l("* Meet the Blue Sage"), 9;
+ setq General_Narrator, 10, 0;
+ next;
+ mesn;
+ mesq l("There you go. I wish you good luck. @@", col(l("*grumpf*"), 9));
+ close;
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, Earmuffs);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, RedknightArmor);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, Boots);
+ setunitdata(.@npcId, UDT_WEAPON, CottonSkirt);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 20);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 5);
+
+ .sex = G_FEMALE;
+ .distance = 5;
+ end;
+}
+
diff --git a/npc/012-7/celestia.txt b/npc/012-7/celestia.txt
new file mode 100644
index 0000000..b49b52a
--- /dev/null
+++ b/npc/012-7/celestia.txt
@@ -0,0 +1,396 @@
+// TMW2 Scripts
+// Author:
+// gumi (TMW Org. Team)
+// Jesusalva
+// Description:
+// Celestia Yeti King's quest. Designed so if you're with 4 players, all 4 can
+// summon the Yeti King, helping you while doing the quest by themselves.
+
+
+012-7,35,49,0 script Celestia NPC_ELF_F,{
+ .@q1=getq(HurnscaldQuest_Celestia);
+ .@q2=getq(HurnscaldQuest_TeaParty);
+ mesn;
+ mesq lg("Hello, darling. I was thinking in doing a tea party.");
+ if (.@q1)
+ mesc l("You notice that even if she tries to calm down everyone and serve tea, she's pretty distressed with the Monster King herself.");
+ next;
+ mesn strcharinfo(0);
+ menu
+ l("Sorry, I'm more of a coffee person."), L_Coffee,
+ l("What an amazing crown you have! How do I get it?!"), L_Crown,
+ rif(getvaultid() && get_nibble(##01_TMWQUEST, 0) == 2, l("Actually, have you ever heard of Yeti's kidnapping little girls?")), L_VaultQuest,
+ rif(.@q2 == 0 && BaseLevel >= 35, l("Tea party! I want to participate.")), L_TeaQuest,
+ rif(.@q2 == 1, l("I have some sweeties for the Tea Party!")), L_TeaCheck,
+ rif(.@q2 >= 2, l("Tea party! I want to participate.")), L_TeaParty,
+ rif(.@q2 >= 2, l("Do you sell tea?")), L_TeaShop,
+ rif(.@q1 == 0, l("There are Monster Attacks every month, how do you have time for tea parties?!")), L_MainQuest,
+ rif(.@q1 && CINDY_PLAYER_STRUCK && getq(NivalisQuest_Well) < 2, l("I found switches which only a Yeti may flip...")), L_OtherQuest,
+ rif(.@q1 >= 6, l("I want to try convincing the Yeti King again.")), L_MainQuestCore;
+
+L_Coffee:
+ mes "";
+ mesn;
+ mesq l("Hmpf! Coffee is an heresy!");
+ // Except I love coffee ~ Jesusalva
+ close;
+
+L_Crown:
+ mes "";
+ mesn;
+ mesq l("Ooh, this nice shiny thing? It was an event.");
+ next;
+ mesn;
+ mesq l("Saulc is rich, you know. He challenged a group of thirty NPCs to defeat him, whoever won would get this @@.", getitemlink(MurdererCrown));
+ next;
+ mesn;
+ mesq l("Well, Andrei Sakar said it was a waste a time, and the other NPCs started fighting against themselves, so I won.");
+ next;
+ mesn;
+ if (BaseLevel < 100)
+ mesq l("...Besides, I have this nice @@ with me. I'm not low-level like you.", getitemlink(BansheeBow));
+ else
+ mesq l("...Besides, I have this nice @@ with me. It's a reliable bow.", getitemlink(BansheeBow));
+ close;
+
+L_MainQuest:
+ mes "";
+ mesn;
+ mesc l("Celestia eyes sparkles.");
+ mesq l("Someone who have clear priorities appeared! I'm glad!");
+ next;
+ mesn;
+ mesq l("You see, most people think that all monsters are controlled by the Monster King, but that's not quite right.");
+ next;
+ mesn;
+ mesq l("Some are just living their own lives. In special, I've spent part of my life studying the Yeti Society.");
+ next;
+ mesn;
+ mesq l("And guess what? They have a King of their own!");
+ mesq l("If we could convince them to distract the Monster King, we could have chances to do a counter-attack!");
+ next;
+ mesn;
+ mesq l("But that's not so easy... I already sent many people, and even come myself, but he refuses to help.");
+ next;
+
+L_MainQuestCore:
+ mesn;
+ mesq l("Maybe you could convince him. There's a summoning circle on Tulimshar Sewers.");
+ next;
+ mesn;
+ mesq l("Go very close to it and, speak the four four-letters magic words, pour some @@, and he'll appear to you.", getitemlink(EverburnPowder));
+ next;
+ mesn;
+ mesq l("Don't go alone, though! He would not listen to me, it is not you alone he'll pay attention. You will lose reagents!");
+ next;
+ mesc l("Accept quest?");
+ if (askyesno() == ASK_YES) {
+ setq HurnscaldQuest_Celestia, 1;
+ @YetiKing_Challenger=0;
+ mes "";
+ mesn;
+ mesq l("Good, good. The chant is ##B EMOC OTEM ITEY GNIK ##b. Good luck!");
+ }
+ close;
+
+L_TeaQuest:
+ mes "";
+ mesn;
+ mesq l("Well, the reason why I'm not doing it already is because, you see, I lack cookies.");
+ if (countitem(DeliciousCookie)) {
+ next;
+ mesn;
+ mesq l("And anyone like you probably already knows that, well... Cookies are life!");
+ }
+ next;
+ mesn;
+ mesq l("But I can still make it without cookies, as long that you bring me some other sweeties.");
+ next;
+ mesn l("Item List");
+ mes l("@@/50 @@", countitem(Acorn), getitemlink(Acorn));
+ mes l("@@/20 @@", countitem(ChocolateMouboo), getitemlink(ChocolateMouboo));
+ mes l("@@/40 @@", countitem(ChocolateBar), getitemlink(ChocolateBar));
+ mes l("@@/15 @@", countitem(Candy), getitemlink(Candy));
+ mes l("@@/15 @@", countitem(OrangeCupcake), getitemlink(OrangeCupcake));
+ mes l("@@/10 @@", countitem(CherryCake), getitemlink(CherryCake));
+ mes l("@@/5 @@", countitem(GingerBreadMan), getitemlink(GingerBreadMan));
+ mes l("@@/2 @@", countitem(ChocolateBiscuit), getitemlink(ChocolateBiscuit));
+ /* We can't ask for THAT many!
+ mes l("@@/20 @@", countitem(ApanaCake), getitemlink(ApanaCake));
+ mes l("@@/20 @@", countitem(Mashmallow), getitemlink(Mashmallow));
+ mes l("@@/20 @@", countitem(TonoriDelight), getitemlink(TonoriDelight));
+ mes l("@@/20 @@", countitem(EasterEgg), getitemlink(EasterEgg));
+ mes l("@@/20 @@", countitem(ChocolateBunny), getitemlink(ChocolateBunny));
+ mes l("@@/20 @@", countitem(FrozenYetiTear), getitemlink(FrozenYetiTear));
+ mes l("@@/20 @@", countitem(DeliciousCookie), getitemlink(DeliciousCookie));
+ */
+ setq HurnscaldQuest_TeaParty, 1;
+ close;
+
+L_TeaCheck:
+ mesn l("Item List");
+ mes l("@@/50 @@", countitem(Acorn), getitemlink(Acorn));
+ mes l("@@/20 @@", countitem(ChocolateMouboo), getitemlink(ChocolateMouboo));
+ mes l("@@/40 @@", countitem(ChocolateBar), getitemlink(ChocolateBar));
+ mes l("@@/15 @@", countitem(Candy), getitemlink(Candy));
+ mes l("@@/15 @@", countitem(OrangeCupcake), getitemlink(OrangeCupcake));
+ mes l("@@/10 @@", countitem(CherryCake), getitemlink(CherryCake));
+ mes l("@@/5 @@", countitem(GingerBreadMan), getitemlink(GingerBreadMan));
+ mes l("@@/2 @@", countitem(ChocolateBiscuit), getitemlink(ChocolateBiscuit));
+ next;
+ select
+ l("I will be back shortly."),
+ l("I have all.");
+ mes "";
+
+ if (@menu == 1) {
+ closedialog;
+ goodbye;
+ close;
+ }
+ if (countitem(Acorn) < 50 ||
+ countitem(ChocolateMouboo) < 20 ||
+ countitem(ChocolateBar) < 40 ||
+ countitem(Candy) < 15 ||
+ countitem(OrangeCupcake) < 15 ||
+ countitem(CherryCake) < 10 ||
+ countitem(GingerBreadMan) < 5 ||
+ countitem(ChocolateBiscuit) < 2)
+ goto L_Lying;
+
+ inventoryplace CelestiaTea, 3;
+
+ delitem Acorn, 50;
+ delitem ChocolateMouboo, 20;
+ delitem ChocolateBar, 40;
+ delitem Candy, 15;
+ delitem OrangeCupcake, 15;
+ delitem CherryCake, 10;
+ delitem GingerBreadMan, 5;
+ delitem ChocolateBiscuit, 2;
+
+ getexp rand(13500, 14500), 0; // level exp cap: 15,775
+ getitem CelestiaTea, 3;
+ setq HurnscaldQuest_TeaParty, 2, gettimetick(2);
+
+ mes "";
+ mesn;
+ mesq l("Many thanks! I'll arrange the table.");
+ close;
+
+L_Lying:
+ mesn;
+ mesq l("Wha- How dare you, to lie to me!");
+ // She'll try to drain all your MP. If you're not MP Full, you'll die. And will have EXP penalty, of course.
+ if (Sp == MaxSp)
+ percentheal 0, -100;
+ else
+ die();
+ close;
+
+// begin: Gumi Script
+L_TeaParty:
+ .@q2=getq2(HurnscaldQuest_TeaParty);
+ mes "";
+ mesn;
+ mesq l("Wonderful, I am happy to have you over. Lets get things started with some puerh tea.");
+ next;
+ mesc l("Celestia hands you a cup filled with some type of tea that is unlike anything you have seen before.");
+ mesc l("It has a very dark color and an unusual aroma reminiscent of a moist forest.");
+ next;
+ mesc l("For a moment you wonder if Celestia might have gotten confused and tossed in a handful of forest dirt into the teapot.");
+ mesc l("You ponder whether or not it would be wise to drink it.");
+ menu
+ l("Uh are you sure this is fit to drink?"), L_QuestionTea,
+ l("(Drink the tea, hoping for the best)"), L_DrinkTea;
+
+L_DrinkTea:
+ if (.@q2 < gettimetick(2)) {
+ percentheal 0, 100;
+ setq2 HurnscaldQuest_TeaParty, gettimetick(2)+180;
+ }
+ mesc l("To your pleasant surprise the tea is actually quite good.");
+ next;
+ mesc l("Despite its initial dubious fragrance, the tea comes off as very smooth and mellow with a bit of natural sweetness and a touch of an earthy forest like flavor, but in a very good way.");
+ next;
+ mesc l("Clearly an exotic tea, with a refined flavor fit for a refined woman such as Celestia.");
+ close;
+
+L_QuestionTea:
+ mesq l("Yes, did you really think I was some kind of monster that would try to poison you in my own house?");
+ mes l("##a(it would be way too messy anyway)##0");
+ next;
+ mesc l("Celestia then picks up the cup of tea and drinks it in front of you to demonstrate that it is not only harmless but also quite delectable.");
+ if (.@q2 < gettimetick(2)) {
+ getitem CelestiaTea, 1;
+ setq2 HurnscaldQuest_TeaParty, gettimetick(2)+(60*60*2);
+ }
+ close;
+// end: Gumi Script
+
+L_TeaShop:
+ mesn;
+ mesq l("Well, my tea is just too good.");
+ next;
+ closeclientdialog;
+ npcshopattach(.name$);
+ shop .name$;
+ close;
+
+L_OtherQuest:
+ mesn strcharinfo(0);
+ mesq l("Basically, I need to find a friendly Yeti. Do they exist?");
+ next;
+ mesn;
+ mesq l("Of course. The adviser of the Yeti King, for instance, is very friendly.");
+ next;
+ mesn;
+ mesq l("But he have lots of enemies... It would not surprise me to find him struck somewhere.");
+ next;
+ mesn;
+ mesq l("He usually guards a central position on the caves... He could help you, if he is there.");
+ next;
+ mesn;
+ mesq l("Otherwise, his enemies might have bested him, but I doubt any Yeti would dare to kill him.");
+ next;
+ mesn;
+ mesq l("Wasn't there something on the Holy Bible? About a young boy trapped by his brothers somewhere because envy?");
+ mesc l("If you don't want to look at the Bible, you can try to solve the following riddle:");
+ mesc l("\"When you're thirsty, you may look for me. I'm often in desert areas, but this time, the winter has come.\""), 3;
+ CINDY_PLAYER_STRUCK=false;
+ next;
+ clear;
+ mesn l("Quest Tip");
+ mesc l("\"When you're thristy, you may look for me. I'm often in desert areas, but this time, the winter has come.\""), 3;
+ close;
+
+// Mirror Lake
+L_VaultQuest:
+ if (##02_MLWORLD & MLP_TMW_CELESTIA) {
+ mesn;
+ mesq l("Yes, try to summon the Yeti King in Tulimshar Sewers. Make sure you have someone else with you to help.");
+ close;
+ }
+ mesn;
+ mesq l("While I don't think the Yeti King would ever do or endorse that, yes, I've heard this happens.");
+ next;
+ select
+ l("Wait, Yeti's have a king?"),
+ l("I thought they ate little girls."),
+ l("Haha, as if I believe you.");
+ mes "";
+ if (@menu == 3) close;
+ if (@menu == 2) {
+ mesn;
+ mesq l("What? Don't be ridiculous. Not even the Monster King does that! I think.");
+ next;
+ mesn;
+ mesq l("In other words, I never heard of a Yeti eating a kid before. They prefer %s.", getitemlink(MoubooSteak));
+ next;
+ } if (@menu == 1) {
+ // Player already know that ¬.¬
+ if (getq(HurnscaldQuest_Celestia) != 0) {
+ mesn;
+ mesq l("Are you trying to provoke me?");
+ close;
+ }
+ mesn;
+ mesq l("You see, most people think that all monsters are controlled by the Monster King, but that's not quite right.");
+ next;
+ mesn;
+ mesq l("Some are just living their own lives. In special, I've spent part of my life studying the Yeti Society.");
+ next;
+ mesn;
+ mesq l("And guess what? They have a King of their own!");
+ next;
+ }
+ mesn;
+ mesq l("Anyway, why do you ask? Surely not to waste my time.");
+ next;
+ select
+ l("[Explain the situation]"),
+ l("[Make up a lie]");
+ mes "";
+ mesn;
+ mesq l("...Okay, I asked you to explain, and you ended up wasting my time instead. %%n");
+ next;
+ mesn;
+ mesq l("Listen, I was trying to get the Yeti King to help me to fight the Monster King. If you want to go there and do it, be my guest; Maybe they'll even help you with whatever your problem is.");
+ if (countitem(MirrorLakeArmor))
+ mesc l("PS. This char will be reset on logout.");
+ next;
+ select
+ l("Sure, I'll help."),
+ l("No way!");
+ if (@menu == 2) close;
+ mes "";
+ mesn;
+ mesq l("Alright. Listen, you'll need %s to summon it, and you cannot be alone. I only have so much of that to share, so be careful to don't use all.", getitemlink(EverburnPowder));
+ next;
+ if (countitem(MirrorLakeArmor)) {
+ mesn;
+ mesq l("Your weird robes; They seem like they'll deny your damage, so you definitely want to summon multiple people to help. Try the #world tab.");
+ next;
+ }
+ mesn;
+ mesq l("There's a summoning circle on Tulimshar Sewers. You can reach either by boat, if you have the money - I'll lend you some; Or by the long way.");
+ next;
+ mesn;
+ mesq l("Go very close to it and, speak the four four-letters magic words, pour some @@, and he'll appear to you.", getitemlink(EverburnPowder));
+ next;
+ mesn;
+ mesq l("Don't go alone, though! He would not listen to me, it is not you alone he'll pay attention. You will lose reagents!");
+ next;
+ ##02_MLWORLD=##02_MLWORLD|MLP_TMW_CELESTIA;
+ Zeny+=410;
+ getitembound(EverburnPowder, 5, 4);
+ setq HurnscaldQuest_Celestia, 1;
+ @YetiKing_Challenger=0;
+ mesq l("The chant is ##B EMOC OTEM ITEY GNIK ##b. Good luck!");
+ close;
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, MurdererCrown);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, ValentineDress);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 19);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 10);
+
+ npcsit;
+
+ .sex = G_FEMALE;
+ .distance = 5;
+
+ tradertype(NST_MARKET);
+ sellitem CelestiaTea, -1, 1;
+ sellitem YerbaMate, -1, 2;
+ sellitem JasmineTea, -1, 3;
+ sellitem OolongTea, -1, 4;
+ sellitem SpearmintTea, -1, 5;
+ sellitem ChamomileTea, -1, 10;
+ end;
+
+OnClock0002:
+ restoreshopitem CelestiaTea, 1;
+ restoreshopitem YerbaMate, 2;
+ restoreshopitem JasmineTea, 3;
+ restoreshopitem OolongTea, 4;
+ restoreshopitem SpearmintTea, 5;
+ restoreshopitem ChamomileTea, 10;
+ end;
+
+
+// Pay your taxes!
+OnBuyItem:
+ debugmes("Purchase confirmed");
+ PurchaseTaxes();
+ end;
+
+OnSellItem:
+ debugmes("Sale confirmed");
+ SaleTaxes();
+ end;
+
+}
diff --git a/npc/012-7/politics.txt b/npc/012-7/politics.txt
new file mode 100644
index 0000000..7d9a0bb
--- /dev/null
+++ b/npc/012-7/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
+
+012-7,51,60,0 script Hurnscald Office NPC_POLITICS,{
+do
+{
+ mesc ".:: "+l("Hurnscald Townhall")+" ::.", 2;
+ mesc l("Current Town Administrator: ")+$HURNS_MAYOR$, 3;
+ POL_TownInfo("HURNS");
+ mesc l("Application fee: @@ GP", .applytax);
+ next;
+ select
+ l("Information"),
+ rif(strcharinfo(0) == $HURNS_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("HURNS");
+ break;
+ case 3:
+ // array_push might be too sensible for getd/setd
+ if (Zeny < .applytax)
+ break;
+ Zeny-=.applytax;
+ $HURNS_MONEY+=.applytax;
+ #POL_APPLYWEEK=gettimeparam(GETTIME_WEEKDAY);
+ array_push($HURNS_CANDIDATE$, strcharinfo(0));
+ array_push($HURNS_VOTES, 0);
+ mesc l("Application successful!"), 3;
+ next;
+ break;
+ case 4:
+ POL_Candidate("HURNS");
+ break;
+ default:
+ close;
+ }
+} while (true);
+end;
+
+OnInit:
+ .applytax=100;
+ .distance=4;
+ end;
+}
+
diff --git a/npc/012-7/slots.txt b/npc/012-7/slots.txt
new file mode 100644
index 0000000..3a37c0a
--- /dev/null
+++ b/npc/012-7/slots.txt
@@ -0,0 +1,97 @@
+// TMW2 Scripts
+// Author:
+// Jesusalva, Saulc
+// Description:
+// Slot Machine for bets in Hurnscald
+// Rare Reward: Paper Bag
+
+012-7,53,31,0 script Slot Machine#012-7a NPC_SLOTMACHINE,{
+ function symbol {
+ switch (getarg(0)) {
+ case 1:
+ mesn "%%A";
+ break;
+ case 2:
+ mesn "%%B";
+ break;
+ case 3:
+ mesn "%%C";
+ break;
+ case 4:
+ mesn "%%D";
+ break;
+ case 5:
+ mesn "%%E";
+ break;
+ case 6:
+ mesn "%%F";
+ break;
+ case 7:
+ mesn "7";
+ break;
+ case 8:
+ mesn "%%8";
+ break;
+ default:
+ mesn "%%@";
+ break;
+ }
+ return;
+ }
+
+L_Menu:
+ mesn;
+ mesc l("Spin three symbols, and jackpot great rewards!");
+ mesc l("Just one coin for spin.");
+ next;
+ menu
+ rif(countitem(CasinoCoins) >= 1, l("Spin!")), L_Spin,
+ l("Prizes"), L_Info,
+ l("Leave"), -;
+ close;
+
+L_Info:
+ mes "";
+ mesc l("Prizes:");
+ mes l("##9 777: @@.", getitemlink(PaperBag));
+ mesc l("Three equal: @@.", "20 casino coins");
+ mesc l("Two equal: 1 casino coin.");
+ next;
+ goto L_Menu;
+
+
+L_Spin:
+ mesc l("Spinning...");
+ next;
+ delitem CasinoCoins, 1;
+ .@a=rand2(1,8);
+ .@b=rand2(1,8);
+ .@c=rand2(1,8);
+ symbol(.@a);
+ symbol(.@b);
+ symbol(.@c);
+ next;
+ mesn;
+ if (.@a == .@b && .@a == .@c && .@a == 7) {
+ getitem PaperBag, 1;
+ mesc l("Jackpot! You got the Paper Bag!"), 3;
+ } else if (.@a == .@b && .@a == .@c) {
+ getitem CasinoCoins, 20;
+ mesc l("Congrats! A pity it was not 777..."), 3;
+ } else if (.@a == .@b || .@a == .@c || .@b == .@c) {
+ getitem CasinoCoins, 1;
+ mesc l("Lucky! You got the coin back!"), 3;
+ } else {
+ mesc l("It wasn't this time..."), 3;
+ }
+ next;
+ goto L_Menu;
+
+OnInit:
+ .sex = G_OTHER;
+ .distance = 4;
+ end;
+
+
+}
+