From 99385b26263c27020d8ce526afaa1811e4eceaa1 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 8 Oct 2021 20:48:01 +0000 Subject: NPC Improvements --- npc/000-0-0/sailors.txt | 31 ++++++++++++++++--------------- npc/000-0/sailors.txt | 16 +++++++++------- npc/002-1/chefgado.txt | 10 +++++----- npc/002-1/knife.txt | 1 + npc/003-0-1/professor.txt | 4 ++-- npc/003-1/aidan.txt | 6 +++--- npc/003-1/constableperry.txt | 17 ++++++++--------- npc/003-1/hasan.txt | 27 ++++++++++++++------------- npc/003-1/ishi.txt | 28 +++++++++++++++------------- npc/003-1/lieutenantdausen.txt | 30 +++++++++++++++--------------- npc/014-2/mouboo.txt | 24 ++++++++++++------------ npc/functions/captcha.txt | 22 +++++++++++----------- npc/functions/daily.txt | 18 +++++++++--------- npc/items/croconut.txt | 19 ++++++++++--------- npc/items/emptybox.txt | 4 ++-- npc/items/miscrecipes.txt | 4 ++-- npc/items/shovel.txt | 2 +- npc/items/teleporter.txt | 12 ++++++------ 18 files changed, 141 insertions(+), 134 deletions(-) (limited to 'npc') diff --git a/npc/000-0-0/sailors.txt b/npc/000-0-0/sailors.txt index d13802f85..629d58ec3 100644 --- a/npc/000-0-0/sailors.txt +++ b/npc/000-0-0/sailors.txt @@ -3,6 +3,7 @@ // Jesusalva // Description: // Tutorial +// TODO: Do not hardcode keyboard keys. The player may have changed the keyboard or even mouse bindings. 000-0-0,30,34,0 script Elmo#sailors NPC_ELMO,{ OnBegin: @@ -98,23 +99,23 @@ L_Step3: setcamnpc; showavatar NPC_ELMO; mesn "Elmo"; - mesq l("You learn fast, good job. These clothes aren't a mighty armor, but they'll help."); + mesq l("You learn fast, good job. These clothes aren't mighty armor, but they'll help."); next; mesn "Elmo"; - mesq l("Let's jump straight to action, shall we? I'll spawn a mighty @@ to fight you!", getmonsterlink(Dummy)); + mesq l("Let's jump straight to action, shall we? I'll build a mighty @@ to fight you!", getmonsterlink(Dummy)); next; mesn "Elmo"; mesq l("On a computer, you can press @@ to attack it. On mobile, that would be the big button with the number 1.", b(l("Ctrl"))); next; mesn "Elmo"; - mesq l("Another way to attack it is clicking on it. Now, there are some things you must know before fighting this dangerous creature!"); + mesq l("Another way to attack it is clicking on it. Now, there are some things you must know before fighting this truly dangerous foe!"); next; showavatar NPC_MAGIC_ARPAN; mesn l("Magic Arpan"); - mesq l("Yayaya, by pressing @@ or clicking in @@, you'll open your char status window!", b(l("F2")), b(l("STA"))); + mesq l("Yayaya, by pressing @@ or clicking in @@, you'll open your character status window!", b(l("F2")), b(l("STA"))); next; mesn l("Magic Arpan"); - mesq l("You should allocate some attributes to it. You need @@, @@ and @@, on this order of importance.", b(l("Agility")), b(l("Dexterity")), b(l("Strength"))); // b(l("")), + mesq l("You should allocate some attributes. You need @@, @@ and @@, on this order of importance.", b(l("Agility")), b(l("Dexterity")), b(l("Strength"))); // b(l("")), next; mesn l("Magic Arpan"); mesq l("Once you allocate status points, you can fight it! Good luck, @@!", strcharinfo(0)); @@ -140,24 +141,24 @@ L_Step4: percentheal 100,100; mesn "Elmo"; mesq l("Did something happen?"); - mesc l("This is a menu, click on the option and then on send. You can use arrow keys if you prefer."); + mesc l("This is a menu, click on the option and then on submit. You can use arrow keys if you prefer."); mes ""; select l(">.< \"The Dummy is a real killer!\""), l("T.T \"Someone else killed my Dummy!\""), - l("'.' \"I forgot how to allocate status!\""), + l("'.' \"I forgot how to allocate points!\""), l("-.- \"I forgot how to fight!\""), - l("._. \"What are these status useful for?\""), + l("._. \"What are these statuses useful for?\""), l("^.^ \"Nothing is wrong, don't worry!\""); mes ""; switch (@menu) { case 1: mesn "Elmo"; - mesq l("Well, you clearly don't have a weapon. So, let me explain some quick."); + mesq l("Well, you don't have a weapon. So, let me explain quickly."); next; mesn "Elmo"; - mesq l("Don't be afraid of death. Of course, in most places, dying will reduce your Experience."); + mesq l("Don't be afraid of death. Of course, in most places, dying will make you lose some Experience you gathered."); next; mesn "Elmo"; mesq l("But you don't have any experience at the moment, so what do you have to lose?"); @@ -166,7 +167,7 @@ L_Step4: mesq l("Try killing it, and if it kills you, just come back from death to continue killing it."); mes l("What I want to say is: Kill non-stop!"); next; - mesc l("Actually, the Dummy don't fight back. Are you afraid?"); + mesc l("Actually, the Dummy will not fight back. Are you afraid?"); break; case 2: .@mct=mobcount("000-0-0", "Elmo#sailors::OnStep4"); @@ -213,7 +214,7 @@ L_Step4: mes l("Your @@ determines several small things, including critical attacks and, limited to a certain extent, affect drop rates.", b(l("luck"))); next; mesn "Elmo"; - mes l("But to defeat this dummy, I would say that %s should do the trick.", b(l("assigning 5 points to str, agi, dex and luck"))); + mes l("But to defeat this dummy, I would say that %s should do the trick.", b(l("assigning 5 points each to str, agi, dex and luck"))); break; } close; @@ -256,7 +257,7 @@ L_Skip: L_Ready: #TUTORIAL_DONE=true; - //clearitem(); // The dummy don't drop anything :> + //clearitem(); // The dummy does not drop anything :> resetlvl(2); restorecam; setq General_Narrator, 0; @@ -273,12 +274,12 @@ L_Ready: // Prevent players from forgetting what they were meant to do // But if they logout, this will never trigger OnSlow: - npctalk3 l("Hey @@! You haven't clicked on me yet!", strcharinfo(0)); + npctalk3 l("Hey @@! You haven't talked to me yet!", strcharinfo(0)); addtimer(30000,"Elmo#sailors::OnSlow2"); end; OnSlow2: - npctalk3 l("@@, do you need help? Are you lost? Click me!", strcharinfo(0)); + npctalk3 l("@@, do you need help? Are you lost? Talk to me!", strcharinfo(0)); dispbottom l("Click on Elmo or Magic Arpan to continue and begin the game..."); addtimer(60000,"Elmo#sailors::OnSlow"); end; diff --git a/npc/000-0/sailors.txt b/npc/000-0/sailors.txt index 3a315b107..2e3c00821 100644 --- a/npc/000-0/sailors.txt +++ b/npc/000-0/sailors.txt @@ -28,13 +28,14 @@ OnTouch: if ($EVENT$ == "Steam") goto L_FiresOfSteam; mesn "Narrator"; - mesc l("You open your eyes. The salt water is not helping your vision."); + mesc l("You open your eyes. The remants of the salt water in your eyes is not particularly helping you see."); mesc l("(Click next button to advance dialogs)"), 3; next; mesc l("What in the world is happening?! Where in Jesusalva's name are you?!"); next; - mesc l("Actually. Who are you again? A headache which doesn't wants to pass strikes you."); - mesc l("And on the meanwhile, ships sailors are shouting at you."); + mesc l("Actually. Who are you again? A headache which doesn't want to pass strikes you."); + mesc l("You can hear creaking planks and a sail flapping in the storm. A ship?"); + mesc l("You hear shouting directed at you. Sailors from the ship?"); next; showavatar NPC_ORC_MAN; @@ -53,7 +54,7 @@ OnTouch: setcamnpc "Sailors", 144, -80; mesn l("Tritan Voice"); mesq l("We speak various languages on this world. Let's try gesturing!"); - mesq l("Hey, you on the stranded island! Can you hear us?!"); + mesq l("Hey, you on the dune! Can you hear us?!"); next; restorecam; @@ -67,13 +68,13 @@ OnTouch: next; showavatar NPC_TRITAN_MAN_SAILOR; setcamnpc "Sailors", 144, -80; - mesq lg("This girl needs help, we need to rescue her!", "This guy needs help, we need to rescue him!"); + mesq lg("This girl needs help, we need to rescue her!", "This boy needs help, we need to rescue him!"); next; mesn; mesc l("This is a menu. You can click on the desired option and press \"Send\", and double-clicking should work, too."); mes ""; select - l("I don't need a rescue. I'm enjoying myself here."), + l("I don't need to be rescued. I'm enjoying myself here."), l("Thanks... I guess..."), l("(Don't respond)"); mes ""; @@ -83,7 +84,8 @@ OnTouch: mesq l("What do you mean? Do you at least have a rowboat with you?!"); next; mesn l("Billy Bons"); - mesq l("We can't let you die from hunger! That wouldn't be cool at all! And I'm very cool!"); + // Dying of thirst will set in waaaay sooner than dying of hunger. + mesq l("We can't let you die of thirst! That wouldn't be cool at all! And I'm very cool!"); next; } else if (@menu == 2) { mes ""; // You don't need to thank us! diff --git a/npc/002-1/chefgado.txt b/npc/002-1/chefgado.txt index 4c45ea0a2..6eb08d94c 100644 --- a/npc/002-1/chefgado.txt +++ b/npc/002-1/chefgado.txt @@ -29,10 +29,10 @@ L_Knife: mesn; - mesq l("I hate sea water, it always make knifes rusty. I already have a stockpile of rusty knifes, don't even know what to do with them."); - if (TUTORIAL) mesc l("That indeed is true, you can see a pile of rusty knifes on the nearby table."); + mesq l("I hate the sea, the salty air always lets my knives rust. I already have a stockpile of rusty knives, don't even know what to do with them."); + if (TUTORIAL) mesc l("That indeed is true, you can see a pile of rusty knives on the nearby table."); if (TUTORIAL) dnext; - tutmes l("Unlike talking, when trying to pick objects or read signs, you should be at arms distance of them."), l("NOTE"), false; + tutmes l("Unlike talking, when trying to pick objects or read signs, you should be at an arms distance of them."), l("NOTE"), false; tutmes l("This is often 1, 2 or 3 tiles. For talking, usually 4 or 5 tiles. Shouting can be done from 12 up to 18 tiles; But as shouting is rude, most NPCs won't react to it."), l("TUTORIAL"), false; close; @@ -60,7 +60,7 @@ L_Ask: L_Start: mes ""; mesn; - mesq l("Great, I need 11 @@. Remember a good food makes a good crew.",getitemlink("PiouLegs")); + mesq l("Great, I need 11 @@. Only good food makes a good crew.",getitemlink("PiouLegs")); setq ShipQuests_ChefGado, 1; mes ""; menu @@ -71,7 +71,7 @@ L_Start: L_Continue: setq ShipQuests_ChefGado, 1; mesn; - mesq l("Do you have the @@/11 @@ I requested? Sailors are getting hungry because you!",countitem("PiouLegs"),getitemlink("PiouLegs")); + mesq l("Do you have the @@/11 @@ I requested? The sailors are starving because of you!",countitem("PiouLegs"),getitemlink("PiouLegs")); mes ""; menu rif(countitem("PiouLegs") >= 11, l("Yes, take them.")), L_Reward, diff --git a/npc/002-1/knife.txt b/npc/002-1/knife.txt index 5628e1650..de0e90b68 100644 --- a/npc/002-1/knife.txt +++ b/npc/002-1/knife.txt @@ -33,6 +33,7 @@ L_Give: setq ShipQuests_Knife, 1; getitem RustyKnife, 1; + // TODO: replace keys with variables since the player may have remapped them, possibly replace the messages below with tutorial messages? mesn l("Narrator"); mesc l("To open your inventory, use the F3 key or use your mouse to select it in the above menu in your client."); next; diff --git a/npc/003-0-1/professor.txt b/npc/003-0-1/professor.txt index 0fa668d56..7a736c89d 100644 --- a/npc/003-0-1/professor.txt +++ b/npc/003-0-1/professor.txt @@ -76,7 +76,7 @@ OnSpeeching: if (ANCIENTLANGUAGEBOUNCER == 1) { ANCIENTLANGUAGEBOUNCER=0; skill TMW2_ANCIENTLANGUAGES, 1, 0; - dispbottom l("It was a boring speech, but you have learned ancient languages."); + dispbottom l("It was a boring lesson, but you have mastered Mananese."); } } @@ -100,7 +100,7 @@ OnSpeeching: // were fighting instead... skill(TMW2_SPEECH, .@x, 0); AFKING+=1; - npctalk3 l("%s, you're a good student. You have a bright future if you keep listening to me.", strcharinfo(0)); + npctalk3 l("%s, you're a good student. You will have a bright future if you keep studying.", strcharinfo(0)); dispbottom l("Learning from seeing (aka. AFK-ing) skill LEVEL UP!!"); break; } diff --git a/npc/003-1/aidan.txt b/npc/003-1/aidan.txt index 47c7cf387..400529d84 100644 --- a/npc/003-1/aidan.txt +++ b/npc/003-1/aidan.txt @@ -16,7 +16,7 @@ { select rif(Zeny >= 2000, l("Register")), - rif(Zeny < 2000, l("How do I get so much money?!")), + rif(Zeny < 2000, l("Where do I get so much money?!")), l("Not at the moment"), l("Information"); @@ -77,7 +77,7 @@ if (getq(General_Hunter) == 0) goto L_Assign; mes ""; goto L_Assign; - close; // Will never be reach. + close; // Will never be reached. L_Weak: mesn; @@ -91,7 +91,7 @@ L_Register: mesq l("The alliance also have a special program, called ##BGrand Hunter Quest##b, where you kill 10,000 of a monster and get great rewards."); next; mesn; - mesq l("You can gain rares, even. Come register for this special program. It's free!"); + mesq l("You can gain rare treasures, even. Come register for this special program. It's free!"); if (askyesno() == ASK_YES) { GHQUEST=1; setarray GHMEMO, 0, 0, 0; diff --git a/npc/003-1/constableperry.txt b/npc/003-1/constableperry.txt index 9eb9b292c..610809534 100644 --- a/npc/003-1/constableperry.txt +++ b/npc/003-1/constableperry.txt @@ -15,21 +15,20 @@ L_Intro: next; mesq l("Yes, I am a mouboo. Why? Can't a mouboo be a law and order enforcer?!"); next; - mesq l("Have you ever felt struck? Lost? Didn't know about a quest, or an item is troubling you?"); - mesq l("Have no idea where in the world you are? Or what a certain mob drops, or even if you should challenge it?"); + mesq l("Have you ever felt stuck? Lost? Didn't know about a quest, or an item is troubling you?"); + mesq l("Have no idea where in the world you are? Or what a certain foe drops, or if you should even dare to challenge it?"); next; mesn; mesq l("Fear not! You can check our [@@https://wiki.moubootaurlegends.org|Wiki@@] to find that and other awesome stuff!"); - //mesq l("Fear not! You can check our [@@https://gitlab.com/TMW2/Docs/wikis/home|Wiki@@] to find that and other awesome stuff!"); mesc l("(To see the rules, use ##B@rules##b.)"); next; mesq l("You can even join the project there. Contributors are greatly appreciated! %%N"); close; L_Quest: - // Quest Requeriment of 48 hours or idle before speaking for 60 min + // Quest Requirement of 48 hours or idle before speaking for 60 min if (AFKING < 57600 && checkidle() < 3600) { - npctalkonce l("What's that? He seems to be AFK but is not?"); + npctalkonce l("What's that? They seem to be AFK but are not?"); if (.@touchevent) end; else @@ -38,10 +37,10 @@ L_Quest: // No warning given if (!@afkbotwarned) { mesn; - mesq l("Stop right there, meliant. I can see you're AFK, it is written in your hat!"); + mesq l("Stop right there, miscreant. I can see you're AFK, it is written on your hat!"); next; mesn; - mesq l("Moving while AFK is botting! I'll send you to a %s if you move while AFK! YOU HAVE BEEN WARNED!", b(l("cold, hard, iron cell"))); + mesq l("Moving while AFK is botting! I'll send you to a %s if you move while AFK! ##BYOU HAVE BEEN WARNED!##b", b(l("cold, bleak and isolated cell"))); @afkbotwarned=true; close; } @@ -52,7 +51,7 @@ L_Quest: L_NowYouHaveDoneIt: mesn; - mesq l("NOW YOU HAVE DONE IT! By the powers to me vested as a Constable and Game Master, I sentence you to HALF HOUR IN A %s!", b(strtoupper(l("cold, hard, iron cell")))); + mesq l("##BNOW YOU HAVE DONE IT!##b By the powers to me vested as a Constable and Game Master, I sentence you to HALF AN HOUR IN A %s!", b(strtoupper(l("cold, bleak and isolated cell")))); next; mesn; mesq l("Do you have any last wishes before being JAILED for your CRIMES?!"); @@ -81,7 +80,7 @@ L_NowYouHaveDoneIt: getitem Blanket, 1; setq1 FrostiaQuest_AFKCap, 3; } else { - mesq l("This is not the first time you're arrested for AFK botting, so, NO!"); + mesq l("This is not the first time you've been arrested for AFK botting, so, ##BNO!##b"); } break; case 5: diff --git a/npc/003-1/hasan.txt b/npc/003-1/hasan.txt index 11df5e8ce..08d9cacdb 100644 --- a/npc/003-1/hasan.txt +++ b/npc/003-1/hasan.txt @@ -2,20 +2,20 @@ // Author: // Jesusalva // Description: -// Hasan is the city bully and steals the player. He lost his father to a Murderer -// Scorpion. Will respect player if they kill one. His mother is Sorfina, whom -// explains this and cries that he never touched a Soul Menhir. Allowing player -// to kill scorpion on Mahoud's Basement. +// Hasan is the city bully and steals from the player. He lost his father to a Murderer +// Scorpion. Will respect player if they kill one. His mother is Sorfina, who +// explains this and cries that he never touched a Soul Menhir. Allows the player +// to kill the scorpion on Mahoud's Basement. // // Player must report theft first to Dausen, who will tell the player that's -// normal and nobody messes with Hasan, and giving player pointer that he should +// normal and nobody messes with Hasan, and giving player a pointer that they should // tell his mother, Sorfina. // -// Reward: Cotton Short, Hasan won't steal you anymore. +// Reward: Cotton Short, Hasan won't steal from you anymore. // // GETQ1 Variable Value; -// 0 - Never stolen by Hasan -// 1 - Already stolen by Hasan +// 0 - Hasan has never stolen from the player +// 1 - Hasan already stole from the player // 2 - Dausen pointed player to Sorfina // 3 - Sorfina unlocked Mahoud's Basement // 4 - Player killed Murderer Scorpion @@ -37,7 +37,7 @@ if (getq(TulimsharQuest_Hasan) == 4) goto L_Finish; if (getq(TulimsharQuest_Hasan) >= 5) goto L_Complete; mesn strcharinfo(0); - mesq l("Give me back what you've stole, thief!"); + mesq l("Give me back what you stole, thief!"); next; mesn; mesq l("I stole nothing from you. Do you have any proof?"); @@ -62,16 +62,17 @@ L_Print: mesq l("Photoshopped. Definitely. Good luck convincing somebody with that! %%a"); next; mesn; - mesq l("If you go to Lieutenant Dausen, he'll say that you used Gimp. Just give up."); + mesq l("If you go to Lieutenant Dausen, he'll say that you used GIMP. Just give up."); close; // TODO L_Finish: mesn; - mesq l("Is that... Wait... Wow. You... Killed a murderer scorpion."); + // The scorpion and not a scorpion because of dramatic buildup. + mesq l("Is that... Wait... Wow. You... Killed the murderer scorpion."); next; mesn; - mesq l("I promise I'll never steal from you again. Here, take this shorts."); + mesq l("I promise I'll never steal from you again. Here, take these shorts."); mesq l("Good job, man!"); setq TulimsharQuest_Hasan, 5; getitem CottonShorts, 1; @@ -164,7 +165,7 @@ OnTouch: end; L_Steal: - npctalkonce(l("*whistle*")); + npctalkonce(l("*whistles*")); if (getq(TulimsharQuest_Hasan) == 0) goto L_DoSteal; if (getq(TulimsharQuest_Hasan) <= 4 && rand(0,100) < 20) goto L_DoSteal; end; diff --git a/npc/003-1/ishi.txt b/npc/003-1/ishi.txt index 5f1dbb99f..797f0b424 100644 --- a/npc/003-1/ishi.txt +++ b/npc/003-1/ishi.txt @@ -3,8 +3,8 @@ // Crazyfefe // Jesusalva // -// Do not add void items to array. -// note : the rare item system suck. +// Do not add void items to the array. +// note: the rare item system sucks. 003-1,97,97,0 script Ishi NPC_PLAYER_ARGAES,{ @@ -14,8 +14,9 @@ close; } if (BaseLevel < 10) { - dispbottom l("##1Bug abuser detected! Automatically banning!!"); - atcommand "@ban 5mn "+strcharinfo(0); + // TODO: make jail stuff a function and replace this with the new function + dispbottom l("##1You abused a bug and will be jailed. If this was done in error, you have found a bug. Contact the nearest developer if this is the case."); + atcommand "@jailfor 5mn "+strcharinfo(0); end; } @@ -37,8 +38,8 @@ if (Mobpt < @mpq_cost) { mesn l("Ishi, the Rewards Master"); - mesq l("Welcome! I see you have @@ Monster Points. But that isn't enough to get items at your current level, sorry!", Mobpt); - mesc l("I need at minimum @@ Monster Points to get items at current level.",@mpq_cost); + mesq l("Welcome! I see you have %d Monster Points. But that isn't enough to get items at your current level, sorry!", Mobpt); + mesc l("I need at minimum %d Monster Points to get items at current level.",@mpq_cost); close; } @@ -99,10 +100,11 @@ } mesn l("Ishi, the Rewards Master"); - mesq l("Welcome! I see you have @@ Monster Points. Would you like to exchange some of those for items?", Mobpt); + // Highlight the amount of monster points in bold for better visibility since players will probably exchange monster points a lot + mesq l("Welcome! I see you have ##B%d Monster Points##b. Would you like to exchange some of those for items?", Mobpt); next; if (@mpq_cost > 0) - mesc l("You can get up to @@ items.", (Mobpt/@mpq_cost)); + mesc l("You can get up to %d items.", (Mobpt/@mpq_cost)); menuint rif(Mobpt >= @mpq_cost, "1"), 1, @@ -174,18 +176,18 @@ L_Items: if (.@lucked) { mes ""; mes l("Wow!"); - mes l("I can't believe."); - mes l("you got lucky and got a(n) @@!", getitemlink(.@reward)); + mes l("I can't believe it."); + mes l("You got lucky and got a(n) %s!", getitemlink(.@reward)); mes ""; } else { - mesq l("You received one @@!", getitemlink(.@reward)); + mesq l("You received one %s!", getitemlink(.@reward)); } } close; L_Continue: - mesq l("You still have @@ Monster Points! Do you want more items?", Mobpt); + mesq l("You still have ##B%d Monster Points##b! Do you want more items?", Mobpt); select l("Yes"), l("No"); @@ -205,7 +207,7 @@ L_Give_all: .@var = Mobpt / @mpq_cost; if (.@var > 50) { // limit to avoid lag server. Probably a bad idea. .@var = 50; - mes l("You have too much points. I can't allow you to take all at once right now. I'll try to give you 50, and you come back later!"); + mes l("You have too many points. I can't allow you to take all at once right now. I'll try to give you 50, and you can come back later!"); next; } diff --git a/npc/003-1/lieutenantdausen.txt b/npc/003-1/lieutenantdausen.txt index 44b410dcf..d2edf6265 100644 --- a/npc/003-1/lieutenantdausen.txt +++ b/npc/003-1/lieutenantdausen.txt @@ -42,7 +42,7 @@ next; select rif(!.@q, l("Yes sir. I will help them.")), - rif(getq(TulimsharQuest_Hasan) == 1, l("A guy named Hasan stole me!")), + rif(getq(TulimsharQuest_Hasan) == 1, l("A guy named Hasan stole from me!")), rif (strcharinfo(2) == "Monster King", l("I'm with the Monster King.")), l("What can you say about the monsters here?"), l("Good bye, sir."); @@ -60,7 +60,7 @@ // Hasan Quest case 2: setq TulimsharQuest_Hasan, 2; - speech S_FIRST_BLANK_LINE, lg("Ah, Hasan... Sorry pal, afraid I can't do anything for you. Try talking to his mother Sorfina, she is on Mahoud's house, near the Inn."); + speech S_FIRST_BLANK_LINE, lg("Ah, Hasan... Sorry pal, afraid I can't do anything for you. Try talking to his mother Sorfina, she is in Mahoud's house, near the Inn."); break; // The Monster King guild have a special menu case 3: @@ -89,11 +89,11 @@ L_Reward: next; - speech 0x0, - l("Wait a minute..."), - l("The Tulimshar guards needs an freelance employee who would help us in our work. We are searching for people as you."), - l("Take this badge, so you can get access to the guard house. You will find more work there. Bye, and good luck!"); - close; + speech 0x0, + l("Wait a minute..."), + l("The Tulimshar guards needs an freelance employee who would help us with our work. We are searching for people like you."), + l("Take this badge, so you can enter the guard house. You will find more work there. Bye, and good luck!"); + return; // Mob Tutorial Quest function DausenMobTutorial { @@ -134,10 +134,10 @@ function DausenMobTutorial { mesq l("So. Uhm. The monsters here have varying levels of strength... I think the best way is to witness that yourself."); next; mesn; - mesq l("Do you see the crocs, with their claws and such? They have high defense, this means your attacks deal less damage."); + mesq l("Do you see the crocs, with their claws and hard shell? They have high defense, this means your attacks deal less damage."); next; mesn; - mesq l("They're not too dangerous, but takes a lot to kill. So, if you kill 10 of them, I'll know you're dedicated in learning which monsters are out there."); + mesq l("They're not too dangerous, but they can take a lot of hits. So, if you kill 10 of them, I'll know you're dedicated in learning which monsters are out there."); next; mesn; mesq l("Can you do that? I'll be waiting!"); @@ -149,7 +149,7 @@ function DausenMobTutorial { // Level Requeriment (same as blubs) if (BaseLevel < 14) { mesn; - mesq l("There's some diversity, but you should keep aiming at helping people and killing small-fry. If you ever want a challenge, there's a Giant Maggot inside the town which will one-shot you."); + mesq l("There's some diversity, but you should keep aiming at helping people and killing small-fry. If you ever want a challenge, there's a Giant Maggot inside the town which can kill you in one hit."); next; mesn; mesq l("Have you found Tulimshar's Secret Beach yet? Tulimshar is full of secrets. Some NPCs which only say hi may say something else depending on your level or insistence."); @@ -158,10 +158,10 @@ function DausenMobTutorial { // Reward if (.@k >= 37) { mesn; - mesq l("Hmm, that's some progress. Nobody goes to the beach because these slimes, but it looks like this might change sometime soon."); + mesq l("Hmm, that's some progress. Nobody goes to the beach because of these slimes, but it looks like this might change sometime soon."); next; mesn; - mesq l("Also, the Inn folks said the Ducks keep bothering them, but they've noticed a small decrease lately."); + mesq l("Also, the Inn folks said the Ducks keep bothering them, but they've noticed a small decrease already."); next; mesn; mesq l("I don't know what you did, but both the Ducks and Blubs did got scared. I thank you in the name of the city guard. Please come back later."); @@ -176,13 +176,13 @@ function DausenMobTutorial { mesq l("West of here is a beach. There's a secret passage to it, underground. In there you'll find slime-like creatures called Blubs."); next; mesn; - mesq l("Some are small, others are bigger. But they all fight togheter, so be mindful when they're in groups."); + mesq l("Some are small, others are bigger. But they all fight together, so be mindful when they're in groups."); next; mesn; - mesq b(l("The big one without hat"))+" "+l("is your target. They spawn smaller versions of itself! Kill @@ of them and make the beach safe for tourists.", 37); + mesq b(l("The big one without hat"))+" "+l("is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.", 37); next; mesn; - mesq l("Or make yourself useful killing a Duck. They steal all Cherry Cake from the Inn and the staff is getting angry at me. It'll serve, too."); + mesq l("Or make yourself useful by killing some Ducks. They snatch all the Cherry Cake from the Inn and the staff is getting angry at me. It'll serve, too."); compareandsetq TulimsharQuest_MobTutorial, 2, 3; close; case 4: diff --git a/npc/014-2/mouboo.txt b/npc/014-2/mouboo.txt index 2ed7f1b83..303310551 100644 --- a/npc/014-2/mouboo.txt +++ b/npc/014-2/mouboo.txt @@ -29,7 +29,7 @@ L_Begin: .@q=getq(HurnscaldQuest_InjuriedMouboo); .@q2=getq2(HurnscaldQuest_InjuriedMouboo); - mesn l("Injuried Mouboo"); + mesn l("Injured Mouboo"); mesq l("Booo...."); mesc l("The Mouboo seems to be lying in pain."); next; @@ -42,7 +42,7 @@ L_Begin: switch (@menu) { case 3: mesc l("The Mouboo is lying down on the grass."); - mesc l("There doesn't seems to be any physical wound."); + mesc l("There doesn't seem to be any physical wound."); mesc l("A closer inspection suggests this mouboo has been... CURSED."); if (.@q == 0) setq HurnscaldQuest_InjuriedMouboo, 1, 100; @@ -134,7 +134,7 @@ L_Begin: // If ID is invalid, there's not enough items, it is bound = Cannot bury if (.@id < 1) { - mesc l("You are not using a weapon for a merciful (?) last blow."); + mesc l("You are not using a weapon for a merciful last blow."); close; } @@ -143,7 +143,7 @@ L_Begin: next; if (askyesno() == ASK_YES) { .@atk=getiteminfo(.@id, ITEMINFO_ATK); - mesn l("Injuried Mouboo"); + mesn l("Injured Mouboo"); if (.@q2 < 20) mesq l("Re-ref... Reflect."); else @@ -187,19 +187,19 @@ L_Healed: mesc l("Give a @@ to the Mouboo?", getitemlink(Coffee)); next; if (askyesno() == ASK_YES) { - mesn l("Injuried Mouboo"); - mesc l("*scream*"); + mesn l("Injured Mouboo"); + mesc l("*screams*"); mes ""; - mesc l("The Mouboo doesn't wants to drink the Coffee. Try to force him to drink anyway?"); + mesc l("The Mouboo doesn't want to drink the Coffee. Try to force it to drink anyway?"); next; if (askyesno() == ASK_YES) { delitem Coffee, 1; - mesc l("There's no change in the Mouboo condition."); + mesc l("There's no change in the condition of the poor Mouboo."); next; - mesc l("Maybe Hurnscald alchemist, Wyara, could explain why."); + mesc l("Maybe the Hurnscald alchemist, Wyara, could explain why."); } else { - mesc l("Coffee is good, why the Mouboo don't want it?"); - mesc l("Maybe someone in Hurnscald can help me?"); + mesc l("Coffee is good, why does the Mouboo refuse to drink it?"); + mesc l("Maybe someone in Hurnscald can help me."); } } } @@ -215,7 +215,7 @@ L_Uncursed: close; L_Killed: - mesc l("Did this Mouboo just blinked? No, I made sure to kill it. Must have been my imagination."); + mesc l("Did this Mouboo just blink? No, I made sure it was truly dead. Must have been my imagination."); close; OnInit: diff --git a/npc/functions/captcha.txt b/npc/functions/captcha.txt index 9b69ad422..30e8b3c7a 100644 --- a/npc/functions/captcha.txt +++ b/npc/functions/captcha.txt @@ -79,7 +79,7 @@ function script CaptchVal { function script CaptchExample { if (!CAPTCHA_TIME || getarg(0, false)) { - dispbottom("##1TO REPLY TO CAPTCHAS: @capcha ##1"); + dispbottom("##1TO REPLY TO CAPTCHAS: @captcha ##1"); dispbottom l("Example: Give the answer for the following: one+1"); dispbottom l("Reply: %s", b("@captcha 2")); dispbottom b(l("This example will not be shown again.")); @@ -105,19 +105,19 @@ OnCall: dispbottom l("CAPTCHA: An error happened, try again."); end;} // Verify answer - .@ans$ = implode(.@atcmd_parameters$, " "); + .@ans$ = implode(.@atcmd_parameters$, " "); .@ans=atoi(.@ans$); if (.@ans == CAPTCHA_ANSWER) { CAPTCHA_OK=gettimetick(2)+.cooldown; $@BOTCHECK_TARGET=0; dispbottom any( - l("captcha successful"), - l("captcha ok"), - l("correct"), - l("understood"), - l("not bad"), - l("hmpf. That'll do."), - l("a bit longer and I would have jailed you %%\\ "), + l("Captcha successful"), + l("Captcha ok"), + l("Correct"), + l("Understood"), + l("Not bad"), + l("Hmpf. That'll do."), + l("A bit longer and I would have jailed you %%\\ "), l("%%\\ that'll do."), l("%%N")); dispbottom l("Remember: Players can also help enforcing no-AFK-bot rule!"); @@ -168,7 +168,7 @@ OnTimer5000: // 2. Player must be jailed, and we continue if (CAPTCHA_TIME < CAPTCHA_OK) { atcommand("@jailfor 40mn "+strcharinfo(0)); - dispbottom l("You failed to reply captcha in time and was arrested for AFK Botting. You can use @jailtime to keep track of time left."); + dispbottom l("You failed to reply to the captcha in time and were arrested for AFK Botting. You can use @jailtime to keep track of time left."); CAPTCHA_OK=CAPTCHA_TIME; detachrid(); continue; @@ -231,7 +231,7 @@ function captchaProbe { // Timer expired? Ban hammer if (CAPTCHA_TIME+.thr > gettimetick(2) && CAPTCHA_OK <= CAPTCHA_TIME) { atcommand("@jailfor 30mn "+strcharinfo(0)); - dispbottom l("You failed to reply captcha in time and was arrested for AFK Botting. You can use @jailtime to keep track of time left."); + dispbottom l("You failed to reply to the captcha in time and were arrested for AFK Botting. You can use @jailtime to keep track of time left."); CaptchExample(true); $@BOTCHECK_TARGET=false; CAPTCHA_OK=CAPTCHA_TIME; diff --git a/npc/functions/daily.txt b/npc/functions/daily.txt index 5b75c801f..522d14a07 100644 --- a/npc/functions/daily.txt +++ b/npc/functions/daily.txt @@ -56,7 +56,7 @@ function script daily_login_bonus_handler { } else if (#LOGIN_STREAK > 27) { getitem StrangeCoin, 2; getitem CasinoCoins, 1; - dispbottom l("##2 @@ Days login bonus: ##B2x @@, 1x @@##b", #LOGIN_STREAK, getitemlink(StrangeCoin), getitemlink(CasinoCoins)); + dispbottom l("##2 %d Days login bonus: ##B2x %s, 1x %s##b", #LOGIN_STREAK, getitemlink(StrangeCoin), getitemlink(CasinoCoins)); } else if (#LOGIN_STREAK == 27) { #LOGIN_ALLTIME+=1; .@am=1; @@ -102,37 +102,37 @@ function script daily_login_bonus_handler { if (.@am) getitem .@prize, .@am; - dispbottom l("##2 27 Days login bonus: ##B1x @@##b", getitemlink(.@prize)); + dispbottom l("##2 27 Days login bonus: ##B1x %s##b", getitemlink(.@prize)); } else if (#LOGIN_STREAK == 21) { getitem BronzeGift, 1; - dispbottom l("##2 21 Days login bonus: ##B1x @@##b", getitemlink(BronzeGift)); + dispbottom l("##2 21 Days login bonus: ##B1x %s##b", getitemlink(BronzeGift)); } else if (#LOGIN_STREAK == 14) { getitem BronzeGift, 1; - dispbottom l("##2 14 Days login bonus: ##B1x @@##b", getitemlink(BronzeGift)); + dispbottom l("##2 14 Days login bonus: ##B1x %s##b", getitemlink(BronzeGift)); } else if (#LOGIN_STREAK == 7) { getitem StrangeCoin, 3; - dispbottom l("##2 7 Days login bonus: ##B3x @@##b", getitemlink(StrangeCoin)); + dispbottom l("##2 7 Days login bonus: ##B3x %s##b", getitemlink(StrangeCoin)); } else if (#LOGIN_STREAK == 3) { getitem StrangeCoin, 1; - dispbottom l("##2 3 Days login bonus: ##B1x @@##b", getitemlink(StrangeCoin)); + dispbottom l("##2 3 Days login bonus: ##B1x %s##b", getitemlink(StrangeCoin)); } else if (#LOGIN_STREAK % 3 == 0) { .@value=max(20, rand2(#LOGIN_STREAK, #LOGIN_STREAK*2)); .@value+=(BaseLevel*5/2)+rand2(JobLevel, JobLevel*7/20); .@value=.@value * 5 / 4; // Bonus 25% Zeny=Zeny+.@value; - dispbottom l("##2Daily login bonus: ##B@@ GP##b", .@value); + dispbottom l("##2Daily login bonus: ##B%d GP##b", .@value); } else if (#LOGIN_STREAK % 3 == 2) { .@value=max(5, rand2(0, (#LOGIN_STREAK/4))); .@value+=(BaseLevel**2); .@value=(.@value*3/4)+#LOGIN_STREAK; // 50% → 75% getexp .@value, 0; - dispbottom l("##2Daily login bonus: ##B@@ EXP##b", .@value); + dispbottom l("##2Daily login bonus: ##B%d EXP##b", .@value); } else { .@value=max(5, rand2(0, (#LOGIN_STREAK/4))); .@value+=(JobLevel**2); .@value=(.@value/2)+#LOGIN_STREAK; // 33% → 50% getexp 0, .@value; - dispbottom l("##2Daily login bonus: ##B@@ Job Exp.##b", .@value); + dispbottom l("##2Daily login bonus: ##B%d Job Exp.##b", .@value); } // Handle event login bonus diff --git a/npc/items/croconut.txt b/npc/items/croconut.txt index 39c420316..eececb0f7 100644 --- a/npc/items/croconut.txt +++ b/npc/items/croconut.txt @@ -4,13 +4,13 @@ // Reid // Jesusalva // Description: -// Allows to cut a Croconut in multiple parts. +// Allows to break a Croconut into multiple parts. - script Croconut NPC_HIDDEN,{ close; OnUse: - mesc l("Do you want to cut this @@?", getitemlink(Croconut)); + mesc l("Do you want to break open this %s?", getitemlink(Croconut)); select l("Yes."), @@ -40,12 +40,13 @@ L_Weapon: } L_TooWeak: + // Croconuts do not heal much. So opening them without fail should be possible at relatively low strength levels. .@q = rand2(5); - if (readparam2(bStr) > 30) + if (readparam2(bStr) > 10) .@q = .@q + 1; - if (readparam2(bStr) > 60) + if (readparam2(bStr) > 25) .@q = .@q + 1; - if (readparam2(bStr) > 90) + if (readparam2(bStr) > 35) .@q = .@q + 1; if (.@q == 0) goto L_TooWeakLost; @@ -54,23 +55,23 @@ L_TooWeak: if ( (.@q > 6) ) goto L_Good; L_TooWeakLost: - dispbottom l("Ops! You destroyed your @@.", getitemlink(Croconut)); + dispbottom l("Oops! You destroyed your %s.", getitemlink(Croconut)); close; L_TooWeakFail: - dispbottom l("Well... you did not succeed in opening this @@.", getitemlink(Croconut)); + dispbottom l("Well... you did not succeed in opening this %s.", getitemlink(Croconut)); getitem Croconut, 1; close; L_Weak: - dispbottom l("You opened the @@ in two parts, but you crushed one of them.", getitemlink(Croconut)); + dispbottom l("You broke the %s into two parts, but you crushed one of them.", getitemlink(Croconut)); getitem HalfCroconut, 1; close; L_Good: - dispbottom l("You perfectly cut your @@ into two edible parts.", getitemlink(Croconut)); + dispbottom l("You perfectly cut your %s into two edible parts.", getitemlink(Croconut)); getitem HalfCroconut, 2; close; diff --git a/npc/items/emptybox.txt b/npc/items/emptybox.txt index b49a12b6c..ec667ebdc 100644 --- a/npc/items/emptybox.txt +++ b/npc/items/emptybox.txt @@ -2,14 +2,14 @@ // Authors: // Jesusalva // Description: -// Allows to mount your own fish/plushroom/croconut box +// Allows to create your own fish/plushroom/croconut box - script Empty Box#it NPC_HIDDEN,{ close; OnUse: mesn; - mesc l("You can fill this box with the following:"); + mesc l("You can fill this box with the following items:"); mesc l("- @@ @@", 7, getitemlink(GrassCarp)); mesc l("- @@ @@", 8, getitemlink(Croconut)); mesc l("- @@ @@", 20, getitemlink(CommonCarp)); diff --git a/npc/items/miscrecipes.txt b/npc/items/miscrecipes.txt index 1dee0861f..d0df7f3aa 100644 --- a/npc/items/miscrecipes.txt +++ b/npc/items/miscrecipes.txt @@ -9,7 +9,7 @@ function script TerraniteBlueprint { // Lucky roll (0.25%) if (rand2(2500) < 1) { getitem AncientBlueprint, 1; - dispbottom l("Wait a minute... This is written in Mananese! I can't read!"); + dispbottom l("Wait a minute... This is written in Mananese! I can't read it!"); return; } @@ -49,7 +49,7 @@ function script LegendaryBlueprint { // Unlucky roll (0.25%) if (rand2(2500) < 1) { getitem AncientBlueprint, 1; - dispbottom l("Wait a minute... This is written in Mananese! I can't read!"); + dispbottom l("Wait a minute... This is written in Mananese! I can't read it!"); return; } diff --git a/npc/items/shovel.txt b/npc/items/shovel.txt index 7f5132a08..947d89eec 100644 --- a/npc/items/shovel.txt +++ b/npc/items/shovel.txt @@ -73,7 +73,7 @@ function script shovel_scatter { function Dig { - // First check: Did some player burried a TREASURE? O.o + // First check: Did some player bury some TREASURE? O.o getmapxy(.@map$, .@x, .@y, 0); for (.@i = 0; .@i < getarraysize($WorldBuriedTreasures_id); .@i++) { diff --git a/npc/items/teleporter.txt b/npc/items/teleporter.txt index d08f006c7..b7e311b85 100644 --- a/npc/items/teleporter.txt +++ b/npc/items/teleporter.txt @@ -10,8 +10,8 @@ function Cooldown { mesn; - mesc l("Successive warps cause time-space distortions and thus, are not allowed."); - mesc l("You can use it again in @@.", FuzzyTime(TELEPORTER_TIME)); + mesc l("Successive warps cause time-space distortions and are thus not allowed."); + mesc l("You can use it again in %s.", FuzzyTime(TELEPORTER_TIME)); getitem @itemid, 1; close; } @@ -26,14 +26,14 @@ OnUse: if (TELEPORTER_TIME > gettimetick(2)) Cooldown(); if (BaseLevel < 20) { - dispbottom l("This is too powerful to you. Get level 20 before attempting to use."); + dispbottom l("The might contained in this curious object is too powerful. You have to be at least level 20 to harness it."); ReturnItem(); } // TODO: Are you already at target point? - // It have at least 20% chance to break - // Chances begin at 100%, and lower in 0.01% each second - // It will never be below 15%, which happens after x seconds + // The chance to break is always at least 20% + // Begins at 100% and each second will subtract 0.01% + // It will never go below 15%, which happens after x seconds .@timet=limit(0, gettimetick(2)-TELEPORTER_TIME, 3600); .@prop=.@timet*2777/1000; // Make it range from 0~10000 .@adj_breakrate=limit(1500, .@prop, 9500 ); -- cgit v1.2.3-70-g09d2