diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/020-4 | |
download | serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2 serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip |
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/020-4')
-rw-r--r-- | npc/020-4/_import.txt | 6 | ||||
-rw-r--r-- | npc/020-4/_warps.txt | 3 | ||||
-rw-r--r-- | npc/020-4/baktar.txt | 183 | ||||
-rw-r--r-- | npc/020-4/gambler.txt | 153 | ||||
-rw-r--r-- | npc/020-4/henry.txt | 159 |
5 files changed, 504 insertions, 0 deletions
diff --git a/npc/020-4/_import.txt b/npc/020-4/_import.txt new file mode 100644 index 0000000..aef7c44 --- /dev/null +++ b/npc/020-4/_import.txt @@ -0,0 +1,6 @@ +// Map 020-4: Nivalis Indoors +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/020-4/_warps.txt", +"npc/020-4/baktar.txt", +"npc/020-4/gambler.txt", +"npc/020-4/henry.txt", diff --git a/npc/020-4/_warps.txt b/npc/020-4/_warps.txt new file mode 100644 index 0000000..b0326b0 --- /dev/null +++ b/npc/020-4/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 020-4: Nivalis Indoors warps +020-4,64,54,0 warp #020-4_64_54 2,0,020-1,64,83 diff --git a/npc/020-4/baktar.txt b/npc/020-4/baktar.txt new file mode 100644 index 0000000..4472c53 --- /dev/null +++ b/npc/020-4/baktar.txt @@ -0,0 +1,183 @@ +// TMW2 Script. +// Author: +// Jesusalva +// Description: +// Baktar +// Quests: +// NivalisQuest_Baktar +// .@q1 = Controls Braknar Shield +// (0= Not met, 1= Khafar, 2= Baktar, 3= Complete) +// .@q2 = bitmask with Tulimshar items given + +020-4,64,39,6 script Baktar NPC_RAIJIN,{ + .@q=getq(NivalisQuest_Baktar); + if (!.@q) + goto L_Start; + if (.@q == 2) + goto L_Braknar; + goto L_Collector; + +L_Start: + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("Hello, did you come from Tulimshar? Because you have a nice tan."); + next; + select + l("Yes, I'm coming from Tulimshar."), + l("Well, I just like sunbathing."), + l("Good bye."); + mes ""; + switch (@menu) { + case 2: + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("Bah! Don't try to fool me! The sun can't burn in Nivalis."); + // Don't stop now + case 3: + if (rand2(1,5) == 4) + mesc l("*cough cough*"); + close; + break; + } + + setq NivalisQuest_Baktar, 1, 0; + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("All my parents, grandparents, until the world was born, are from Tulimshar."); + next; + mesn; + mesc l("*cough cough*"); + mesq l("Thus, I like to collect small memetos from Tulimshar."); + next; + mesn; + mesq l("The doctor told me to move here after I got tuberculosis... But I like Tulimshar so much! Please bring me Tulimshar souvenirs, I'll pay you well!"); + close; + + +L_Collector: + .@q2=getq2(NivalisQuest_Baktar); + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("Did you brought me an souvenir from Tulimshar?"); + mes ""; + mes "##B" + l("Drag and drop an item from your inventory.") + "##b"; + + .@id = requestitem(); + + if (.@id < 1) close; + if (countitem(.@id) < 1 || checkbound(.@id)) + close; + + // Special exception + if (.@id == Croconut || .@id == HalfCroconut) { + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("Ooh, this definitely is a Tulimshar item! But I would prefer a box full of these, please."); + close; + } + + // No item + .@m = htget(.TULIMITEM, str(.@id), 0); + if (!.@m) { + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("What crap is that?! This is not from Tulimshar!"); + next; + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("I won't accept stuff from Halinarzo!"); + mesc l("Baktar can be picky with Tulimshar stuff, too."); + close; + } + // Already given + if (.@q2 & .@m) { + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("I already have that..."); + close; + } + + // Gives 4.5× more + .@sp=getiteminfo(.@id, ITEMINFO_SELLPRICE); + mesc l("Really give your @@ to Baktar?", getitemlink(.@id)), 1; + mesc l("The item will be lost forever."); + next; + if (askyesno() == ASK_YES) { + delitem .@id, 1; + Zeny+=(.@sp*45/10); + getexp (BaseLevel/4)*.@sp, .@sp; + setq2 NivalisQuest_Baktar, .@q2|.@m; + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("Thanks."); + } + + close; + +L_Braknar: + .@q2=getq2(NivalisQuest_Baktar); + mesn; + if (rand2(1,5) == 4) + mesc l("*cough cough*"); + mesq l("Welcome back."); + select + l("I brought a souvenir for you."), + l("Do you know someone called Braknar?"), + l("Er, uhm, hi!"); + mes ""; + switch (@menu) { + case 1: goto L_Collector; + case 2: + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("Yeah, it was my grand-grand-grandfather."); + next; + mesn strcharinfo(0); + mes l("'-' \"Could you give me his shield? Pretty please? I need it to survive and bring Tulimshar goodies!\""); + next; + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + mesq l("No, it is a family heirloom. But I do have the shield blueprints. A skilled craftsman could forge one."); + next; + mesn strcharinfo(0); + mes l("*-* \"Could you share those blueprints with me? Please?\""); + next; + mesn; + if (rand2(1,5) == 4) mesc l("*cough cough*"); + if (bitmask_count(.@q2) < 2) { + mesq l("Why should I? Go away. %%n"); + close; + } + mesq l("Sure. Here, take it."); + setq1 NivalisQuest_Baktar, 3; + RECIPES_EQUIPMENT[CraftBraknarShield]=true; + break; + case 3: close; + } + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, KnitHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADBOTTOM, CottonShorts); + setunitdata(.@npcId, UDT_WEAPON, LousyMoccasins); + setunitdata(.@npcId, UDT_HAIRSTYLE, 24); + setunitdata(.@npcId, UDT_HAIRCOLOR, 1); + + .sex = G_MALE; + .distance = 5; + npcsit; + + // Constants + .TULIMITEM = htnew; + htput(.TULIMITEM, str(DesertHat), 1); + htput(.TULIMITEM, str(SerfHat), 2); + htput(.TULIMITEM, str(IronShovel), 4); + htput(.TULIMITEM, str(SilkRobe), 8); + htput(.TULIMITEM, str(FishBox), 16); + htput(.TULIMITEM, str(CroconutBox), 32); + htput(.TULIMITEM, str(PlushroomBox), 64); + end; +} + diff --git a/npc/020-4/gambler.txt b/npc/020-4/gambler.txt new file mode 100644 index 0000000..1384aa5 --- /dev/null +++ b/npc/020-4/gambler.txt @@ -0,0 +1,153 @@ +// TMW2 Scripts +// Author: +// Jesusalva +// Description: +// Gambler: Will next card be better or worse? +// $XAN_BETS: How many victories all players already had (for propaganda :3) + +020-4,69,35,0 script Gambler#020-4 NPC_FLOPPED_NOBLEMAN,{ + function cardname{ + switch (getarg(0)) { + case 0: + return "A"; break; + case 10: + return "J"; break; + case 11: + return "Q"; break; + case 12: + return "K"; break; + case 13: + return l("Joker"); break; + default: + return getarg(0)+1; + } + } + + goto L_Menu; + +L_Menu: + showavatar; + mesn; + mesc l("Hey, I am flopped. Do you want to gamble?"); + mesc l("You need a @@. I'll flip one card, and you'll need to decide if next draw will be HIGHER or LOWER.", getitemlink(CasinoCoins)); + mesc l("If a tie happens, I'll give your coin back."); + next; + menu + rif(countitem(CasinoCoins) >= 1, l("Let's play!")), L_Spin, + l("Information"), L_Info, + l("Leave"), L_Quit; + +L_Info: + mes ""; + mesc l("Rules:"); + mesc l("A card will be flipped, you'll need to decide if next flip will be HIGHER or LOWER."); + mesc l("Cards are ranked on this priority: A - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - J - Q - K - Joker"); + next; + mesc l("Prizes:"); + mesc l("If you're right, you'll get at least 80 GP!"); + mesc l("You'll also get half of the GP as Monster Points!"); + mesc l("If a tie happens, you'll get your coin back."); + mesc l("If you're wrong, your winning streak is reset."); + mesc l("Winning Streak is also reset on logout or when you leave the Inn."); + next; + mesc l("Winning Strike Prizes:"); + mesc l("Every seven successive right guesses, you'll get a %s!", getitemlink(BronzeGift)); // 7.14% + mesc l("Every fifteen successive right guesses, you'll get a @@!", getitemlink(SilverGift)); // 3.33% + mesc l("Every fifty successive right guesses, you'll get a @@!", getitemlink(GoldenGift)); // 1.00% + mesc l("Every 101 successive right guesses, you'll get a @@!", getitemlink(PrismGift)); // 0.50% + next; + goto L_Menu; + + +L_Spin: + showavatar AVATAR_CARD_COVER; + mesc l("I'll draw a card now!"); + next; + delitem CasinoCoins, 1; + // First card will never be an edge card (Ace or Joker), so you can ALWAYS guess wrong. + .@card1=rand(1, 12); + showavatar 1000+.@card1; + mesn; + mesc l("It's a @@!", cardname(.@card1)); + mesc l("Will next draw be HIGHER or LOWER?!"); + next; + mesc l("Cards are ranked on this priority: A - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - J - Q - K - Joker"); + select + l("HIGHER!"), + l("LOWER!"); + mes ""; + + // Flip Flop! + .@card2=rand(0, 13); + showavatar 1000+.@card2; + mesn; + mesc l("It's a @@!", cardname(.@card2)); + + if (.@card1 == .@card2) { + mesc l("It's a tie!"); + getitem CasinoCoins, 1; + .@bypass=1; + } else if (.@card2 < .@card1 && @menu == 2) { + mesc l("It's lower! That's right!"); + Zeny=Zeny+80; + @gambler_winstreak=@gambler_winstreak+1; + } else if (.@card2 > .@card1 && @menu == 1) { + mesc l("It's higher! That's right!"); + Zeny=Zeny+80; + @gambler_winstreak=@gambler_winstreak+1; + } else { + mesc l("You were wrong!"); + @gambler_winstreak=0; + } + + // Winning Streak + if (!.@bypass && @gambler_winstreak) { + if (@gambler_winstreak % 7 == 0) + getitem BronzeGift, 1; + if (@gambler_winstreak % 15 == 0) + getitem SilverGift, 1; + if (@gambler_winstreak % 50 == 0) + getitem GoldenGift, 1; + if (@gambler_winstreak % 101 == 0) + getitem PrismGift, 1; + mesc l("Your current win streak is @@!", @gambler_winstreak); + $XAN_BETS=$XAN_BETS+1; + Zeny+=min((@gambler_winstreak*2), 40); + Mobpt+=40+min(@gambler_winstreak, 20); + } else { + .@bypass=0; + } + next; + goto L_Menu; + +L_Quit: + close; + +OnInit: + .sex = G_MALE; + .distance = 4; + end; + +} + + +// Random NPC +020-4,70,36,4 script Gambling Xan NPC_PLAYER,{ + mesn; + mesq l("Argh... I can never get it right! If only he drew an Ace or a Joker on the first draw... But he never does that!"); + next; + mesn; + mesq l("That rat... I already spent @@ @@ with him!!", $XAN_BETS, getitemlink(CasinoCoins)); + mes l("If I weren't tempted to try again everytime someone gets it right..."); + close; + +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADMIDDLE, CreasedShirt); + setunitdata(.@npcId, UDT_HEADBOTTOM, JeansShorts); + + .sex = G_MALE; + .distance = 4; + npcsit; + end; +} diff --git a/npc/020-4/henry.txt b/npc/020-4/henry.txt new file mode 100644 index 0000000..a88a12a --- /dev/null +++ b/npc/020-4/henry.txt @@ -0,0 +1,159 @@ +// TMW2 Script. +// Author: +// Jesusalva +// Description: +// Questmaker Handbook 14.0 + +020-4,24,38,0 script Henry NPC_HENRY,{ + function newQuest; + function checkQuest; + + // The EPISODE + if (getq(LoFQuest_EPISODE) == 8 && + countitem(DeathPotion)) { + mesc l("Should we give this shady looking 'fella a %s?", getitemlink(DeathPotion)); + select + l("No, who knows what they might do with it!"), + l("Sure, what could go wrong?"); + mes ""; + if (@menu != 2) { + clear; + mesc l("*whistles*"); + } else { + mesn strcharinfo(0); + mesq l("The Shadow Tortuga won the race against the Panthom Lord."); + next; + mesn; + mesq l("Oooh, I see, I see! So you're working with ##Bthem##b... This is most appreciated."); + next; + mesn; + mesq l("So, you have fulfilled this part of the misssion. Bring %d %s and a %s to Pachua in the Desert Canyon, and say the same thing to him so he knows you're with us.", 10, getitemlink(Honey), getitemlink(ElixirOfLife)); + next; + mesn; + mesq l("Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission."); + delitem DeathPotion, 1; + getexp 35000, 0; + setq LoFQuest_EPISODE, 9, 0; + close; + } + } + // Also part of The EPISODE + if (getq(LoFQuest_EPISODE) == 10) { + mesn strcharinfo(0); + mesq l("The crow took off to his last flight."); + next; + mesn; + mesq "..."; + next; + if (BaseLevel < 55) { + mesn; + mesq l("Alright. Now to give your quest. But not now, you're still weak. Come back later, will you."); + close; // Next quest is Level 70 so. + } else { + mesn; + mesq l("West of here, north of here, is a cabin. Investigate. That's all."); + next; + mesn; + mesq l("...Oh, right! We locked it. Uhm, we'll open it for you. Be careful."); + setq LoFQuest_EPISODE, 11; + close; + } + } + // Also part of The EPISODE + if (getq(LoFQuest_EPISODE) == 12) { + if (BaseLevel < 57) { + mesn; + mesq l("Before you give me your report, acquire level %d.", 57); + close; // Next quest is Level 70 so. + } else { + mesn; + mesq l("Hm, thanks for your report. This is most useful. Here, drink this."); + next; + mesc l("You start feeling dizzy."); + mesn; + mesq l("%s? You don't look so well. You should see a doctor immediately!", strcharinfo(0)); + setq LoFQuest_EPISODE, 13, 0, 0; + SC_Bonus(86400, SC_POISON, 1); + close; + } + } + + // Level requeriment + if (BaseLevel < 70) { + npctalk3 l("*whistles*"); + close; + } + + // Main Quest + .@q=getq(NivalisQuest_Henry); + switch (.@q) { + case 0: + newQuest(); break; + case 1: + checkQuest(); break; + default: + npctalk3 l("*whistles*"); + } + close; + +function newQuest { + mesn; + mesq l("Hey, psst! Come over here!"); + next; + mesn; + mesq l("I need a favor! For certain... reasons... I ran out of poison! And For certain... reasons... I am in dire need of them!"); + next; + mesn; + mesq l("So if you bring me %d %s, I'll pay you awesomely! Whaddaya say?!", 24, getitemlink(NymphPoison)); + next; + select + l("Sure, I'll be right back."), + l("Erm, for certain... reasons... I cannot help you right now!"); + mes ""; + if (@menu == 2) { + closeclientdialog; + return; + } + mesn; + mesq l("Thanks, I knew I could count on you!"); + setq NivalisQuest_Henry, 1; + return; +} + +function checkQuest { + mesn; + mesq l("Did you brought me the %d/%d %s?", countitem(NymphPoison), 24, getitemlink(NymphPoison)); + select + l("Yes, here!"), + l("Sorry, I'll be back."); + mes ""; + if (@menu == 2) { + closeclientdialog; + return; + } + if (countitem(NymphPoison) < 24) { + mesn; + mesq l("Ooh, many thanks! Lemme just grab something for you..."); + next; + mesc l("%s stabs you to the chest!", l("Henry")), 1; + mesn; + mesq l("Foolish kid, thinking they can fool me, Henry S., from all the people...!"); + die(); + return; + } + delitem NymphPoison, 24; + Mobpt+=10000; + getexp 100000, 0; + setq NivalisQuest_Henry, 2; + mesn; + mesq l("Hehehe... Thanks. Here, take these %s Monster Points... This exchange has never happened.", fnum(10000)); + return; +} + + +OnInit: + .sex = G_MALE; + .distance = 5; + end; +} + |