summaryrefslogtreecommitdiff
path: root/npc/001-3-2/henry.txt
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-04-09 11:00:49 -0300
committerJesusaves <cpntb1@ymail.com>2021-04-09 11:00:49 -0300
commit8a4bf716002a017de77fe7df301ef8e4aaf00a2e (patch)
tree4947d0b015baad639fa07133369e9a09c8a468bc /npc/001-3-2/henry.txt
downloadserverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.gz
serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.bz2
serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.xz
serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.zip
Initial commit
Diffstat (limited to 'npc/001-3-2/henry.txt')
-rw-r--r--npc/001-3-2/henry.txt374
1 files changed, 374 insertions, 0 deletions
diff --git a/npc/001-3-2/henry.txt b/npc/001-3-2/henry.txt
new file mode 100644
index 00000000..cfff8b56
--- /dev/null
+++ b/npc/001-3-2/henry.txt
@@ -0,0 +1,374 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Jesusalva
+// Description:
+// Henry, a Thief Faction member managing the Hideout in Artis.
+// Pretends to be a nice pirate.
+
+001-3-2,24,51,0 script Henry#001-3-2 NPC_HENRY,{
+ function proposeFirstQuest;
+ function reportFirstQuest;
+ function proposeSecondQuest;
+ function reportSecondQuest;
+ function proposeThirdQuest;
+ function reportThirdQuest;
+ function completedHenry;
+
+ .@q=getq(ThiefQuests_Artis);
+ switch (.@q) {
+ case 0:
+ proposeFirstQuest();
+ break;
+ case 1:
+ case 2:
+ reportFirstQuest();
+ break;
+ case 3:
+ proposeSecondQuest();
+ break;
+ case 4:
+ case 5:
+ reportSecondQuest();
+ break;
+ case 6:
+ proposeThirdQuest();
+ break;
+ case 7:
+ case 8:
+ reportThirdQuest();
+ break;
+ default:
+ completedHenry();
+ break;
+ }
+ close;
+
+///////////////////////////////////////////////////////
+function proposeFirstQuest {
+ speech
+ l("Stop! Who's there?"),
+ l("Ah, its you. Sophialla already informed me. I can help you to go to Woodland, but you also could do me a favor."),
+ l("The Legion has been on my tail for a while. They're a bit annoying, you know."),
+ l("I mean, what's wrong with smuggling goods?! The town markets would have way less stuff otherwise. You can understand me, right? Don't answer."),
+ l("Anyway, you want to get on our pirate ship, right? So you better help me out!"),
+ b(l("In Artis Townhall Archives,"))+" "+l("there is an entry about me."),
+ l("If they somehow catch me again, they'll use this entry as evidence to get me on a harsher punishment..."),
+ l("So please find my file on the archives and, I don't know, deal with it?"),
+ l("I am smart, I'll know if you lie. Anyway, just don't get caught inside the archives.");
+ //l("After messing with the Major and the Legion here, I can teach you lockpicking. Ah, and you may try to find my friend Nunia in Woodland, once you go there. She seems to be disappeared."),
+ //l("Call for Micksha and Jesusalva to implement all this, please.");
+ next;
+ mesc l("Accept this quest?"), 3;
+ if (askyesno() == ASK_YES) {
+ mesn;
+ mesq l("Great! Then I'll be counting on you!");
+ setq ThiefQuests_Artis, 1, 0, 2**rand2(17);
+ }
+ return;
+}
+
+function reportFirstQuest {
+ .@q=getq(ThiefQuests_Artis);
+ mesn;
+ mesq l("Have you already did what I asked you to?");
+ select
+ l("Not yet, but I'll be back."),
+ l("What was I supposed to do, again?"),
+ l("Yes, the file has been dealt with.");
+ mes "";
+ switch (@menu) {
+ case 1:
+ mesn;
+ mesq l("I'm not in hurry if you're not in hurry...");
+ break;
+ case 2:
+ speech
+ l("You should invade the townhall archives - I don't care how."),
+ l("There'll be a file about an... incident... with me. Deal with the file - I also don't care how."),
+ l("Try to don't get too much attention, or they'll arrest you as well.");
+ break;
+ case 3:
+ mesn;
+ mesq l("Hm... Then tell me, what was I wearing on the file picture?");
+ next;
+ select
+ l("A fancy hat."),
+ l("A shemagh or a shawl."),
+ l("Sunglasses."),
+ l("A santa hat."),
+ l("A top hat."),
+ l("A legion armor."),
+ l("An eye patch."),
+ l("A bandit hood."),
+ rif(.@q == 2, l("There was no picture on the file."));
+ mes "";
+ if (@menu != 9) {
+ mesc l("%s lunges at you!", strnpcinfo(1));
+ mesc l("You've been stabbed!"), 1;
+ mes "";
+ mesn;
+ mesq l("Now I know you're lying; Go find my file and deal with it!");
+ percentheal -15, 0;
+ close;
+ } else {
+ // WUT How did this even happen?!
+ if (.@q != 2)
+ atcommand("@kick "+strcharinfo(0));
+
+ // TODO: Reward
+ mesn;
+ mesq l("Heh... I hope you disposed of the file.");
+ next;
+ mesn;
+ mesq l("I'll keep my end of the bargain. The Hand- I mean, we pirates will bring you to the Argaes region.");
+ next;
+ mesn;
+ mesq l("Can't bring you directly to the town because some... misunderstandings, but don't worry.");
+ next;
+ mesn;
+ mesq l("Anyway, here's some gold. I might have another task for you if you want.");
+ // Reward Reference: Lv 10
+ quest_xp(.maxLevel_1, 30, BaseLevel);
+ quest_jxp(.maxLevel_1, 30);
+ Zeny+=300;
+ setq ThiefQuests_Artis, 3;
+ // Previous state already wiped this:
+ //setq2 ThiefQuests_Artis, false; // Restart wheels
+ }
+
+ }
+ return;
+}
+
+///////////////////////////////////////////////////////
+function proposeSecondQuest {
+ speech
+ l("Ah, its you again. Welcome back."),
+ l("So, if you want to go to Hurnscald, just talk to the pirate down there."),
+ l("Anyway, I still could use your help! You see, I would like to play tricks on the legion members during the night."),
+ l("For this, I would like you to to repair the secret passage to the Legion Building."),
+ l("Don't use the passage, you're not skilled enough and will be busted! Just repair it, it'll be enough.");
+ mesc l("You suspect that he is withholding information. Do he really only wants to do pranks? But then, do you care with what he wants to do inside?");
+ next;
+ mesc l("Accept this quest?"), 3;
+ select
+ l("Actually, I wanted to ask you something."),
+ l("Yes"),
+ l("No");
+ mes "";
+ if (@menu == 2) {
+ mesn;
+ mesq l("Great! Then I'll be counting on you!");
+ setq1 ThiefQuests_Artis, 4;
+ close;
+ } else if (@menu == 1) {
+ mesn;
+ mesq l("Shush - No questions.");
+ next;
+ mesn;
+ mesq l("Thie-- *ahem* pirates do not reply to questions.");
+ next;
+ mesn;
+ mesq l("...What? I'm totally a pirate. Arr harr! See? Pirate.");
+ }
+ return;
+}
+
+function reportSecondQuest {
+ mesn;
+ mesq l("Have you already did what I asked you to?");
+ next;
+ select
+ l("Not yet, but I'll get to it."),
+ l("What was I supposed to do, again?"),
+ l("Yes, the deed is done.");
+ mes "";
+ switch (@menu) {
+ case 1:
+ break;
+ case 2:
+ speech
+ l("In the sewers, there is a passage to the Legion basement."),
+ l("I want to get in there, so please do me a favor, and repair the gate. Don't try to go inside yourself, you'll be caught."),
+ l("Also - don't ask me why I want this. Thieves doesn't make questions. You better remember this!");
+ break;
+ case 3:
+ mesn;
+ mesq l("Great! I'll send a scout to check. I hope you didn't blew up everything by going there, you're not very discrete.");
+ next;
+ mes "...";
+ next;
+ .@q2=getq2(ThiefQuests_Artis);
+ if (.@q2 != 2) {
+ mesn;
+ mesq l("Nope, it is still sealed tight. Go do your job if you want a reward.");
+ break;
+ }
+ mesn;
+ mesq l("Alright - This will be... good. Anyway, I should give you a reward.");
+ next;
+ mesn;
+ mesq l("Take this %s. There is something good on it; Just use a %s.",
+ getitemlink(TreasureMap), getitemlink(IronShovel));
+
+ // Obtain the map, quest is done
+ inventoryplace TreasureMap, 1;
+ getitem TreasureMap, 1;
+ quest_jxp(.maxLevel_2, 100);
+ setq1 ThiefQuests_Artis, 6;
+
+ // Override the treasure location, if already existing
+ .@m$="001-1";
+ .@x=any(199, 200);
+ .@y=any(61,62);
+
+ shovel_addquest(.@m$, .@x, .@y, "shovel_randomtreasure");
+ ShovelQuests_AssignedMAP$=shovel_getcity(.@m$);
+ ShovelQuests_AssignedX=.@x;
+ ShovelQuests_AssignedY=.@y;
+
+ // TODO: If we add a daily legion quest, it must be "redemption"~ish
+ // That is, destroy points from all other three factions
+ // ...Also, is *this* specific code a good idea at all?
+ .@t$=faction_addrep("Legion", -15);
+ mesc .@t$;
+ .@t$=faction_addrep("Thief", 15);
+ mesc .@t$;
+ next;
+ mesn;
+ mesq l("I don't know how to get a shovel, though.");
+ next;
+ mesn;
+ mesq l("Remember: \"Use\" the map, and use the debugger (F10) or \"/where\" in chat to check your coordinates!");
+ }
+ return;
+}
+
+///////////////////////////////////////////////////////
+function proposeThirdQuest {
+ speech
+ l("Thanks for the help the other day."),
+ l("I have a beloved friend called Nunia, who handles the Thieves' Guild branch in Hurnscald."),
+ l("Bet you thought we were simple pirates, right? No smart remarks, please."),
+ l("Anyway, I haven't heard about her from quite a while, which is concerning."),
+ l("Could you please go there see if she is well?"),
+ l("I'll give you something... useful... If you want to pursue in being a thief. I'll even put a good word about you... If you manage to find our headquarters somewhere in the world, that is!");
+ next;
+ mesc l("Accept this quest?"), 3;
+ if (askyesno() == ASK_YES) {
+ mesn;
+ mesq l("Great! Then I'll be counting on you!");
+ setq1 ThiefQuests_Artis, 7;
+ close;
+ }
+ return;
+}
+
+function reportThirdQuest {
+ mesn;
+ mesq l("Have you already did what I asked you to?");
+ next;
+ select
+ l("Not yet, but I'll get to it."),
+ l("What was I supposed to do, again?"),
+ l("Yes, the deed is done.");
+ mes "";
+ switch (@menu) {
+ case 2:
+ speech
+ l("My beloved friend Nunia in Hurnscald went missing."),
+ l("I mean, I do not receive any letter from her for a while, so I got worried."),
+ l("I would like you to check how she is doing. You know, the Brotherhood could have got her and she is in need of rescue, or something else.");
+ break;
+ case 3:
+ .@q=getq(ThiefQuests_Artis);
+ mesn;
+ mesq l("Before you go on any further, I wanna see the proof that you talked with her.");
+ next;
+ if (.@q != 8) {
+ mesc l("You don't know what sort of proof he is looking for.");
+ break;
+ }
+
+ select
+ l("She has white hair, blue eyes, and always carry a big sack."),
+ l("She told me a passphrase.");
+ mes "";
+ if (@menu == 2) {
+ mesn;
+ mesq l("Liar; Nunia is not creative enough to come up with a passphrase of her own!");
+ next;
+ mesn;
+ mesq l("Besides, if she could give you a passphrase, then I wouldn't have sent ya.");
+ break;
+ }
+
+ mesn;
+ mesq l("That's Nunia alright. So how she is doing?");
+ next;
+ mesc l("You describe to him how Nunia is supposed to lay low for a while.");
+ next;
+ mesn;
+ mesq l("Of course. I'm glad she is safe. You know, we don't really care with this Legion versus Brotherhood stifle.");
+ next;
+ mesn;
+ mesq l("The brotherhood spies here are... friendly, but mostly because our interests coincide. But in Hurnscald, where their main base is, we're enemies.");
+ next;
+ inventoryplace Lockpicks, 5;
+ mesn;
+ mesq l("Anyway, thanks for the report. I'll give you some %s.", getitemlink(Lockpicks));
+ next;
+ mesn;
+ mesq l("Whenever you find a vault, a door, or anything of interest, you can use it to pry it open.");
+ next;
+ mesn;
+ mesq l("Lockpicks are not keys, they can break quite easily. Also, you don't want anyone watching you.");
+ next;
+ mesn;
+ mesq l("If you are caught while lockpicking, you'll be arrested. So be careful.");
+ // TODO: Add a lock here where player can train without being arrested.
+ next;
+ mesn;
+ mesq l("I have other matters to attend do, so you'll have to excuse me.");
+ quest_item(.maxLevel_3, Lockpicks, 5);
+ setq1 ThiefQuests_Artis, 9;
+ break;
+ }
+ return;
+}
+
+///////////////////////////////////////////////////////
+function completedHenry {
+ mesc l("He seems to ignore you.");
+ mesc l("Probably better not disturb him.");
+ return;
+}
+
+
+///////////////////////////////////////////////////////
+OnInit:
+ .distance = 3;
+ .maxLevel_1 = 15;
+ .maxLevel_2 = 25;
+ .maxLevel_3 = 35;
+ end;
+
+OnGiantMaggot:
+ .@q=getq(ThiefQuests_Artis);
+ .@q2=getq2(ThiefQuests_Artis);
+ .@max=(.@q == 1 ? true : (.@q == 4 ? true : false));
+
+ // To drop, or not to drop...?
+ if (!.@q2 && .@max) {
+ if (rand2(10000) < 1800) {
+ getitem Gearwheel, 1;
+ setq2 ThiefQuests_Artis, true;
+ }
+ }
+
+ // Eh, whatever, continue with what you were doing, script.
+ fix_mobkill(GiantMaggot);
+ end;
+}
+