diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-04-09 11:00:49 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-04-09 11:00:49 -0300 |
commit | 8a4bf716002a017de77fe7df301ef8e4aaf00a2e (patch) | |
tree | 4947d0b015baad639fa07133369e9a09c8a468bc /npc/001-3-2/henry.txt | |
download | serverdata-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.txt | 374 |
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; +} + |