diff options
-rw-r--r-- | db/re/item_db.conf | 19 | ||||
-rw-r--r-- | npc/012-2/door.txt | 3 | ||||
-rw-r--r-- | npc/012-2/rakinorf.txt | 169 | ||||
-rw-r--r-- | npc/012-7/airlia.txt | 28 |
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: |