summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/item_db.conf19
-rw-r--r--npc/012-2/door.txt3
-rw-r--r--npc/012-2/rakinorf.txt169
-rw-r--r--npc/012-7/airlia.txt28
4 files changed, 211 insertions, 8 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 0b694e8dd..2fe63227b 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -2677,6 +2677,25 @@ item_db: (
getitem BoneArrow, rand(190, 210);
">
},
+{
+ Id: 640
+ AegisName: "ReturnPotion"
+ Name: "Return Potion"
+ Type: "IT_DELAYCONSUME"
+ Buy: 1800
+ Sell: 400
+ Weight: 430
+ Refine: false
+ ViewSprite: 640
+ Delay: 1000
+ UseEffect: 310
+ Script: <"
+ if (@returnpotion_expiredate > gettimetick(2))
+ warp "Save", 0, 0;
+ else
+ dispbottom l("The potion expired!");
+ ">
+},
// Mounts (690 to 699, probably there will be extra IDs)
{
diff --git a/npc/012-2/door.txt b/npc/012-2/door.txt
index cc424a65f..0e0a0c1db 100644
--- a/npc/012-2/door.txt
+++ b/npc/012-2/door.txt
@@ -17,7 +17,8 @@ OnTouch:
L_Unauthorized:
// Per r8.0 Apane Invasion, there's a moment on main storyline you'll be allowed in
- if (getq(General_Narrator) == 5)
+ .@n=getq(General_Narrator);
+ if (.@n == 5 || .@n == 6)
slide 59, 82;
if (@sp_notrespass > 0)
diff --git a/npc/012-2/rakinorf.txt b/npc/012-2/rakinorf.txt
index cc326dd7a..570e10245 100644
--- a/npc/012-2/rakinorf.txt
+++ b/npc/012-2/rakinorf.txt
@@ -20,7 +20,7 @@
mesn;
mesq l("Ah... I need more beer to keep going... This is so awful...");
// Handle main storyline
- if (.@n >= 5 && .@n < 6)
+ if (.@n >= 5 && .@n <= 6)
goto L_MainStory;
// Handle main storyline
@@ -71,10 +71,16 @@ L_MainStory:
// 6 - Airlia told you what she knew, must talk to Rakinorf
// 7 - Need to get levels (standard quest)
// 6 - Must visit Halinarzo Library
+ // Note: Expires on logout: @returnpotion_expiredate
// 8 - TODO
.@n2=getq2(General_Narrator);
+ if (.@n == 5) {
+ mesn;
+ mesq l("You should talk to Airlia again to understand what Lua wants me to do.");
+ mes "";
+ }
select
rif(getgmlevel(), l("Maybe I could give you more beer?")),
@@ -83,8 +89,9 @@ L_MainStory:
rif(.@n2 == 2, l("I know how many bat teeth and wings Arkim collected.")),
rif(.@n2 == 3, l("I know it may sound silly, but I need your help to find out who I am.")),
rif(.@n2 == 4, l("Where can I find the previous mayor?")),
- rif(.@n2 == 6, l("Airlia told me XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")),
+ rif(.@n2 == 6, l("Airlia told me you should lend me a Return Potion.")),
rif(.@n2 == 7, l("I think I'm ready.")),
+ rif(.@n == 6 && (!countitem(ReturnPotion)||@returnpotion_expiredate<gettimetick(2)), l("I need more return potions.")),
l("Ok, thanks.");
mes "";
@@ -93,19 +100,19 @@ L_MainStory:
goto L_Menu; break;
case 2:
mesn;
- mesq l("Not now... *hic* I need @@... *hic* Bring me seven if you *hic* can...", getitemlink(Beer));
+ mesq l("Not now... *hic* I need @@... *hic* Bring me @@ if you *hic* can...", getitemlink(Beer), l("four"));
setq2 General_Narrator, 1;
break;
case 3:
- if (countitem(Beer) < 7) {
+ if (countitem(Beer) < 4) {
mesn;
mesq l("That's not *hic*... That's not what I asked you for...");
next;
mesn;
- mesq l("Please bring me *hic*... Bring me 7 @@!", getitemlink(Beer));
+ mesq l("Please bring me *hic*... Bring me @@ @@!", 4, getitemlink(Beer));
close;
}
- delitem Beer, 7;
+ delitem Beer, 4;
getexp BaseLevel*10, JobLevel*3;
setq2 General_Narrator, 2;
mesn;
@@ -133,9 +140,141 @@ L_MainStory:
break;
case 5:
mesn;
- mesq l("Maybe later.");
+ mesq lg("Aaaaaaah, gal... Just let me drink in peace.", "Aaaaaaah, boy... Just let me drink in peace.");
+ next;
+ mesn strcharinfo(0);
+ mes l("T.T \"Why I think you are withdrawing information all along?\"");
+ next;
+ mesn;
+ mesq l("Sure, sure... Why are you even *hic* asking me this, anyway? Do I look like your... *hic* your father or something?!");
+ next;
+ select
+ l("Maybe you do, your jerk! Stop drinking! Lua told me that you could help me! DO YOUR JOB!!"),
+ l("Sorry, Mister Rakinorf, but it was Lua that said you could help me.");
+ next;
+ if (@menu == 1)
+ Karma=Karma-1;
+ else
+ Karma=Karma+1;
+ setq2 General_Narrator, 4;
+ mesn strcharinfo(0);
+ mesq l("All she told me was that I needed to visit Halinarzo, but was too weak, and should look for you instead.");
+ next;
+ // Rakinorf gets somber after that
+ mesn;
+ mesq l("Ah, Halinarzo... Dangerous place. Tulimshar route is plagued with snakes, Hurnscald route is more often than not flooded.");
+ next;
+ mesn;
+ mes l(">.> \"Sorry pal, I have no idea what she meant by that.\"");
+ next;
+ mesn;
+ mesq l("You see, just @@ ago, Hurnscald was liberated from a massive monster attack.", FuzzyTime($HURNS_LIBDATE));
+ mesq l("Dragonstar and Aisen did their best along many others, and managed to liberate Hurnscald, though!");
+ next;
+ mesn;
+ mesq l("Well, problem is, after that, there was demand for an election. The previous mayor lost. I won.");
+ next;
+ mesn;
+ mesq l("That's basically how democracy works. You are warranted to stay on the office until something goes gravely wrong.");
+ mesq l("Now I just drink down my worries and hope for the best.");
+ next;
+ mesn;
+ mesq l("The previous mayor was an amazing mayor, but even so, he lost the office after the Monster King attacked.");
+ mesq l("His daughter, Airlia, is not air-headed as her mother Lia. Try asking her instead.");
+ next;
+ mesn;
+ mesq l("I'm afraid I can't be of any help to you.");
+ next;
+ mesn;
+ mesq l("And now... Somber time is over! Time to get back to drinking! Yaaaay!!");
+ break;
+ case 6:
+ mesn;
+ mesq l("Whaaaaaaat *hic* is she *hic* have she gotten crazy? *hic*");
+ next;
+ mesn;
+ mesq l("That's a *hic* precious item, and you're *hic* not nearly *hic* strong or worth enough to use it!");
+ next;
+ mesn;
+ mesq l("You will need to *hic* prove yourself to *hic* me and the town first...");
+ next;
+ mesc b(l(".:: Main Quest 2-2 ::.")), 3;
+ if (BaseLevel >= 40)
+ mesc l("* @@/@@ Base Level", BaseLevel, 40), 2;
+ else
+ mesc l("* @@/@@ Base Level", BaseLevel, 40), 9;
+
+ if (JobLevel >= 15)
+ mesc l("* @@/@@ Job Level", JobLevel, 15), 2;
+ else
+ mesc l("* @@/@@ Job Level", JobLevel, 15), 9;
+
+ if (countitem(Scythe))
+ mesc l("* @@/@@ @@", countitem(Scythe), 1, getitemlink(Scythe)), 2;
+ else
+ mesc l("* @@/@@ @@", countitem(Scythe), 1, getitemlink(Scythe)), 9;
+
+ if (getq(HurnscaldQuest_BloodDonor))
+ mesc l("* Donate blood at least once."), 2;
+ else
+ mesc l("* Donate blood at least once."), 9;
+
+ next;
+ mesn;
+ if (!countitem(Scythe))
+ mes l("- Help the farmers. We rely a lot on agriculture.");
+ if (!getq(HurnscaldQuest_BloodDonor))
+ mes l("- To donate blood, go to the hospital and ask about it.");
+ if (JobLevel < 15)
+ mes l("- Boss give more Job experience, but as long that you keep killing, you'll keep gaining.");
+ break;
+
+ case 7:
+ mesc b(l(".:: Main Quest 2-2 ::.")), 3;
+ if (BaseLevel >= 40)
+ mesc l("* @@/@@ Base Level", BaseLevel, 40), 2;
+ else
+ mesc l("* @@/@@ Base Level", BaseLevel, 40), 9;
+
+ if (JobLevel >= 15)
+ mesc l("* @@/@@ Job Level", JobLevel, 15), 2;
+ else
+ mesc l("* @@/@@ Job Level", JobLevel, 15), 9;
+
+ if (countitem(Scythe))
+ mesc l("* @@/@@ @@", countitem(Scythe), 1, getitemlink(Scythe)), 2;
+ else
+ mesc l("* @@/@@ @@", countitem(Scythe), 1, getitemlink(Scythe)), 9;
+
+ if (getq(HurnscaldQuest_BloodDonor))
+ mesc l("* Donate blood at least once."), 2;
+ else
+ mesc l("* Donate blood at least once."), 9;
+
+ next;
+ if (BaseLevel >= 40 &&
+ JobLevel >= 15 &&
+ countitem(Scythe) &&
+ getq(HurnscaldQuest_BloodDonor))
+ goto L_Complete;
+ mesn;
+ if (!countitem(Scythe))
+ mes l("- Help the farmers. We rely a lot on agriculture.");
+ if (!getq(HurnscaldQuest_BloodDonor))
+ mes l("- To donate blood, go to the hospital and ask about it.");
+ if (JobLevel < 15)
+ mes l("- Boss give more Job experience, but as long that you keep killing, you'll keep gaining.");
break;
+ case 8:
+ if (countitem(ReturnPotion))
+ delitem ReturnPotion, countitem(ReturnPotion);
+ inventoryplace ReturnPotion, 5;
+ getitem ReturnPotion, 5;
+ @returnpotion_expiredate=gettimetick(2)+1200+rand(300,1200); // 20 minutes + 5~20 minutes == last 25~40 minutes
+ mesn;
+ mesq l("There... *hic* They will expire *hic* in just @@... Or on logout.", FuzzyTime(@returnpotion_expiredate));
+ break;
}
close;
@@ -152,6 +291,22 @@ L_Fail:
// No penalty? Really??
close;
+L_Complete:
+ inventoryplace ReturnPotion, 10;
+ setq General_Narrator, 6, 0;
+ getitem ReturnPotion, 10;
+ @returnpotion_expiredate=gettimetick(2)+1200+rand(600,1800); // 20 minutes + 10~30 minutes == last 30~60 minutes
+ getexp BaseLevel*750, JobLevel*50;// Reference Levels: (40, 15)
+ mesn;
+ mesq l("Good, you *hic* proved your *hic* worth. I'll give you them.");
+ next;
+ mesn;
+ mesq l("They will expire *hic* in just @@... Or on logout.", FuzzyTime(@returnpotion_expiredate));
+ next;
+ mesn;
+ mesq l("What are you *hic* doing here? They are expiring! GO NOW!");
+ close;
+
OnInit:
.questID=4;
.itemID=Beer;
diff --git a/npc/012-7/airlia.txt b/npc/012-7/airlia.txt
index 21f408833..424ba4e18 100644
--- a/npc/012-7/airlia.txt
+++ b/npc/012-7/airlia.txt
@@ -116,6 +116,34 @@ L_In4:
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;
OnInit: