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/017-10 | |
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/017-10')
-rw-r--r-- | npc/017-10/_import.txt | 8 | ||||
-rw-r--r-- | npc/017-10/_warps.txt | 6 | ||||
-rw-r--r-- | npc/017-10/airship.txt | 68 | ||||
-rw-r--r-- | npc/017-10/dispatcher.txt | 411 | ||||
-rw-r--r-- | npc/017-10/kenton.txt | 204 | ||||
-rw-r--r-- | npc/017-10/politics.txt | 58 | ||||
-rw-r--r-- | npc/017-10/vault.txt | 20 |
7 files changed, 775 insertions, 0 deletions
diff --git a/npc/017-10/_import.txt b/npc/017-10/_import.txt new file mode 100644 index 0000000..a17ef5e --- /dev/null +++ b/npc/017-10/_import.txt @@ -0,0 +1,8 @@ +// Map 017-10: LoF Townhall +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/017-10/_warps.txt", +"npc/017-10/airship.txt", +"npc/017-10/dispatcher.txt", +"npc/017-10/kenton.txt", +"npc/017-10/politics.txt", +"npc/017-10/vault.txt", diff --git a/npc/017-10/_warps.txt b/npc/017-10/_warps.txt new file mode 100644 index 0000000..b4d6087 --- /dev/null +++ b/npc/017-10/_warps.txt @@ -0,0 +1,6 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 017-10: LoF Townhall warps +017-10,36,79,0 warp #017-10_36_79 0,0,017-1,171,21 +017-10,56,79,0 warp #017-10_56_79 0,0,017-1,180,21 +017-10,60,79,0 warp #017-10_60_79 0,0,017-1,182,21 +017-10,80,79,0 warp #017-10_80_79 0,0,017-1,190,21 diff --git a/npc/017-10/airship.txt b/npc/017-10/airship.txt new file mode 100644 index 0000000..48851f4 --- /dev/null +++ b/npc/017-10/airship.txt @@ -0,0 +1,68 @@ +// TMW-2 Script. +// Author: +// Jesusalva +// Notes: +// Fortress Island South (Lv 70~150 Area) + +017-10,63,22,0 script #ToFortress NPC_NO_SPRITE,1,0,{ + end; +OnTouch: + .@q=getq(General_Narrator); + if (.@q < 20) + end; + + mesc l(".:: Fortress Island ::."), 1; + mes ""; + if ($GAME_STORYLINE < 3) { + mesc l("Travel to this area is impossible, due to the hordes of Monster Armies."), 1; + mes ""; + mesc l("If only we defeated their generals and put the army in disarray... It would be possible to visit there."); + close; + } + if (BaseLevel < 70) { + mesc l("This area is only for level 70 upwards."), 1; + close; + } + mesc l("Do you want to go to Fortress Island, where the Monster King lives?!"), 1; + removespecialeffect(FX_CIRCLE, SELF, getcharid(3)); // FIXME :( + next; + mesc l("WARNING: HIGH LEVEL AREA. COME PREPARED."), 1; + mesc l("Note: This travel takes a whole minute to complete!!"); + mesc l("Note 2: If you leave this plataform, it'll reset!"); + mesc l("Note 3: All maps in Fortress Island have penalty, even towns!"); + next; + mesc l("BEGIN WARP PROCEDURES?"), 1; + if (askyesno() == ASK_YES) { + specialeffect FX_CIRCLE, SELF, getcharid(3); + addtimer2 70000, "#ToFortress::OnWarper"; + addtimer2 60000, "#ToFortress::OnNotif"; + } + close; + +OnNotif: + specialeffect FX_MAGIC, SELF, getcharid(3); + dispbottom l("WARPING IN 10 SECONDS"); + end; + +OnWarper: + removespecialeffect(FX_CIRCLE, SELF, getcharid(3)); + if (getmap() != "017-10") + end; + if (!FORT_1ST_VISIT) + FORT_1ST_VISIT = gettimetick(2); + warp "025-2", 97, 119; + specialeffect FX_SUCCESS, SELF, getcharid(3); + dispbottom l("You have arrived at Fortress Island."); + end; +} + +017-10,63,28,0 script #ToFortressAbort NPC_NO_SPRITE,5,0,{ + end; +OnTouch: + removespecialeffect(FX_CIRCLE, SELF, getcharid(3)); + atcommand("@refresh"); // FIXME :( + deltimer "#ToFortress::OnWarper"; + deltimer "#ToFortress::OnNotif"; + end; +} + diff --git a/npc/017-10/dispatcher.txt b/npc/017-10/dispatcher.txt new file mode 100644 index 0000000..b47060d --- /dev/null +++ b/npc/017-10/dispatcher.txt @@ -0,0 +1,411 @@ +// TMW2/LoF scripts. +// Authors: +// Jesusalva +// Description: +// Deploys an Homunculus in a mission during your offline time +// Variables +// HOMUN_DEPLOYDATE +// When the Homunculus is scheduled to arrive +// HOMUN_DEPLOYFIELD +// ID of the field which Homunculus was deployed + +017-10,61,34,0 script Erik NPC_JOURNALMAN,{ + function lootField; + mesn; + mesq l("Hello. My name is Erik, and I have Homunculus go out in errands in my stead."); + + // If you haven't summoned yet, or killed it... + if (!gethominfo(0)) { + mesc l("You do not own an Homunculus."), 1; + close; + } + + // Check what your homunculus is up to + switch (homstatus()) { + case 0: + mesc l("Your homunculus is ready!"), 2; + break; + case 1: + mesc l("Your homunculus is sleeping! Wake them up!"), 3; + close; + break; + case 2: + mesc l("Your homunculus is already on a mission!"), 1; + + // Homunculus should return from mission + if (gettimetick(2) > HOMUN_DEPLOYDATE) { + select + l("Recall"); + .@xp=lootField(HOMUN_DEPLOYFIELD); + recallhomunculus(); + gethomunexp(.@xp); + .@lv=gethominfo(6); + getexp 0, (.@lv*min(10000, gethominfo(3))/10000)*5; + close; + } + mesc l("It should be back in @@", FuzzyTime(HOMUN_DEPLOYDATE)), 1; + close; + break; + default: + Exception("ERROR! homstatus code "+homstatus(), RB_DEFAULT|RB_SPEECH|RB_ISFATAL); + break; + } + + // This is a bug: They are ready but shouldn't be. + if (gettimetick(2) < HOMUN_DEPLOYDATE) { + Exception("ERROR: YOU WERE BANNED FROM USING ERIK SERVICES. (might be a bug).", RB_SPEECH|RB_ISFATAL); + close; + } + +L_Main: + select + l("Deploy to Piou Fields [1h]"), + l("Deploy to Herb Fields [1h]"), + rif(gethominfo(6) >= 10, l("Deploy to Ore Mines [2h]")), + rif(gethominfo(6) >= 10, l("Deploy to Rare Mines [2h]")), + rif(gethominfo(6) >= 15, l("Deploy to Slime Nest [2h]")), + rif(gethominfo(6) >= 30, l("Deploy to Snake Pit [3h]")), + rif(gethominfo(6) >= 55 && $GAME_STORYLINE >= 3, l("Deploy to Dangerous Area [6h]")), + rif(gethominfo(6) >= 70 && $GAME_STORYLINE >= 4, l("Deploy to Monster King Basement [8h]")), + "", + l("Deploy to The Market [1h]"), + l("Don't deploy"); + mes ""; + // Common drops: At least 90% drop + // Rare drops: 5% or less drop rate + switch (@menu) { + case 1: + mesc ".:: " + l("Piou Fields") + " ::."; + mesc l("The most basic grinding camp for your homunculus."); + mesc l("Average EXP: "+200), 3; + mesc l("Common Drops: "+ + getitemlink(PiouFeathers)); + mesc l("Regular Drops: "+ + getitemlink(PiouLegs)+ + getitemlink(HalfEggshell)); + mesc l("Rare Drops: "+ + getitemlink(GoldenApple)); + next; + .@dest=HCD_PIOUFIELDS; + .@hours=1; + break; + case 2: + mesc ".:: " + l("Herb Fields") + " ::."; + mesc l("If you need more herbs, the best place to look."); + mesc l("Average EXP: "+10), 3; + mesc l("Common Drops: "+ + getitemlink(ArtichokeHerb)); + mesc l("Regular Drops: "+ + getitemlink(CobaltHerb)+ + getitemlink(GambogeHerb)+ + getitemlink(MauveHerb)+ + getitemlink(AlizarinHerb)); + mesc l("Rare Drops: "+ + getitemlink(ReedBundle)); + next; + .@dest=HCD_HERBFIELDS; + .@hours=1; + break; + case 3: + mesc ".:: " + l("Ore Mines") + " ::."; + mesc l("Send your Homunculus to mineration!"); + mesc l("Average EXP: "+24), 3; + mesc l("Common Drops: "+ + getitemlink(Coal)); + mesc l("Regular Drops: "+ + getitemlink(IronOre)+ + getitemlink(CopperOre)+ + getitemlink(SilverOre)+ + getitemlink(GoldOre)); + mesc l("Rare Drops: "+ + getitemlink(TinOre)+ + getitemlink(LeadOre)+ + getitemlink(TitaniumOre)+ + getitemlink(IridiumOre)+ + getitemlink(PlatinumOre)); + next; + .@dest=HCD_OREMINES; + .@hours=2; + break; + case 4: + mesc ".:: " + l("Rare Mines") + " ::."; + mesc l("Send your Homunculus to mineration!"); + mesc l("Average EXP: "+30), 3; + mesc l("Common Drops: "+ + getitemlink(Pearl)); + mesc l("Regular Drops: "+ + getitemlink(Diamond)+ + getitemlink(Ruby)+ + getitemlink(Emerald)+ + getitemlink(Sapphire)+ + getitemlink(Topaz)+ + getitemlink(Amethyst)); + mesc l("Rare Drops: "+ + getitemlink(LightGreenDiamond)+ + getitemlink(BlackPearl)+ + getitemlink(BlueManaPearl)); + next; + .@dest=HCD_RAREMINES; + .@hours=2; + break; + case 5: + mesc ".:: " + l("Slime Nest") + " ::."; + mesc l("Send your Homunculus to a slime nest!"); + mesc l("Average EXP: "+1600), 3; + mesc l("Common Drops: "+ + getitemlink(MaggotSlime)+ + getitemlink(Arrow)); + mesc l("Regular Drops: "+ + getitemlink(IronArrow)+ + getitemlink(TreasureKey)+ + getitemlink(CactusDrink)+ + getitemlink(CoinBag)+ + getitemlink(CasinoCoins)+ + getitemlink(Coal)+ + getitemlink(Dagger)+ + getitemlink(Candy)+ + getitemlink(ChocolateBar)); + mesc l("Rare Drops: "+ + getitemlink(Milk)+ + getitemlink(IcedBottle)); + next; + .@dest=HCD_SLIMENEST; + .@hours=2; + break; + case 6: + mesc ".:: " + l("Snake Pit") + " ::."; + mesc l("Send your Homunculus to hold off snakes!"); + mesc l("Average EXP: "+format_number(4500)), 3; + mesc l("Common Drops: "+ + getitemlink(SnakeEgg)+ + getitemlink(SnakeTongue)); + mesc l("Regular Drops: "+ + getitemlink(SnakeSkin)); + mesc l("Rare Drops: "+ + getitemlink(JeansShorts)+ + getitemlink(DivineApple)+ + getitemlink(Kanabo)); + next; + .@dest=HCD_SNAKEPIT; + .@hours=3; + break; + case 7: + mesc ".:: " + l("Dangerous Area") + " ::."; + mesc l("Send your Homunculus to loot the Impregnable Fortress!"); + mesc l("Average EXP: "+format_number(140000)), 3; + mesc l("Common Drops: None"); + mesc l("Regular Drops: "+ + getitemlink(MoubooSteak)+ + getitemlink(HastePotion)+ + getitemlink(StrengthPotion)+ + getitemlink(SmokeGrenade)+ + getitemlink(Grenade)+ + getitemlink(MercBoxA)+ + getitemlink(AncientBlueprint)+ + getitemlink(Lockpicks)+ + getitemlink(StatusResetPotion)+ + getitemlink(DungeonMap)+ + getitemlink(TreasureMap)); + mesc l("Rare Drops: "+ + getitemlink(MagicApple)); + next; + .@dest=HCD_DANGERAREA; + .@hours=6; + break; + case 8: + mesc ".:: " + l("Monster King Basement") + " ::."; + mesc l("Send your Homunculus to one of the most dangerous...!"); + mesc l("Average EXP: "+format_number(1000000)), 3; + mesc l("Common Drops: None"); + mesc l("Regular Drops: "+ + getitemlink(Curshroom)+ + getitemlink(HastePotion)+ + getitemlink(StrengthPotion)+ + getitemlink(SmokeGrenade)+ + getitemlink(Grenade)+ + getitemlink(AncientBlueprint)+ + getitemlink(DungeonMap)+ + getitemlink(TreasureMap)+ + getitemlink(CrazyRum)+ + getitemlink(MercBoxB)); + mesc l("Rare Drops: "+ + getitemlink(WhiskeyAle)+ + getitemlink(GoldenApple)+ + getitemlink(DivineApple)+ + getitemlink(MagicApple)); + next; + .@dest=HCD_MKBASEMENT; + .@hours=8; + break; + case 10: + mesc ".:: " + l("The Market") + " ::."; + mesc l("Send your Homunculus to make money!"); + mesc l("Average EXP: "+16), 3; + mesc l("Maximum Profit: @@ GP", format_number(.zenycap)), 3; + mesc l("Common Drops: "+ + getitemlink(Piberries)); + mesc l("Regular Drops: "+ + getitemlink(Bread)+ + getitemlink(Cheese)+ + getitemlink(Beer)); + mesc l("Rare Drops: "+ + getitemlink(TreasureMap)); + next; + .@dest=HCD_MARKET; + .@hours=1; + break; + default: + close; + } + + // Confirmation + mesc l("Really deploy your homunculus?"), 1; + if (askyesno() == ASK_NO) + goto L_Main; + + // Deploy Homunculus (if possible) + if (!homstatus() && gethominfo(0)) { + deployhomunculus(); + mesc l("Deployed!"), 2; + HOMUN_DEPLOYFIELD=.@dest; + HOMUN_DEPLOYDATE=gettimetick(2)+(60*60*.@hours); + } + close; + +// lootField (Field ID) +// Returns amount of Homunculus EXP to get +function lootField { + // Ensure you have free space + inventoryplace Iten, 3, NPCEyes, 9; + .@lv=gethominfo(6); + + // Base EXP is based on Homunculus level and intimacy + .@val=.@lv*min(10000, gethominfo(3))/10000; + + switch (getarg(0)) { + case HCD_PIOUFIELDS: + .@val+=200; + anyloot(PiouFeathers, .@lv, 10000, + PiouLegs, max(1, .@lv/2), 8000, + HalfEggshell, .@lv, 6000, + GoldenApple, 1, 100); + break; + case HCD_HERBFIELDS: + .@val+=10; + anyloot(ArtichokeHerb, .@lv, 10000, + CobaltHerb, max(1, .@lv/2), 6000, + GambogeHerb, max(1, .@lv/2), 6000, + MauveHerb, max(1, .@lv/2), 6000, + AlizarinHerb, max(1, .@lv/2), 6000, + ShadowHerb, max(1, .@lv/3), 4000, + ReedBundle, 2, 800); + break; + case HCD_OREMINES: + .@val+=24; + anyloot(Coal, .@lv, 9999, + IronOre, max(1, .@lv/2), 2000, + CopperOre, max(1, .@lv/2), 1000, + SilverOre, max(1, .@lv/3), 700, + GoldOre, max(1, .@lv/4), 450, + TinOre, max(1, .@lv/5), 350, + LeadOre, max(1, .@lv/6), 300, + TitaniumOre, max(1, .@lv/8), 100, + (REBIRTH ? IridiumOre : TitaniumOre), max(1, .@lv/10), 80, + (REBIRTH ? PlatinumOre : IridiumOre), 1, 20); + break; + case HCD_RAREMINES: + .@val+=30; + anyloot(Pearl, 1, 9999, + Diamond, limit(1, .@lv/2, 3), 2000, + Ruby, limit(1, .@lv/2, 3), 1700, + Emerald, limit(1, .@lv/2, 3), 1400, + Sapphire, limit(1, .@lv/2, 3), 1100, + Topaz, limit(1, .@lv/2, 3), 800, + Amethyst, limit(1, .@lv/2, 3), 500, + LightGreenDiamond, 1, 100, + BlackPearl, 1, 10, + BlueManaPearl, 1, 1); + break; + case HCD_SLIMENEST: + .@val+=1600; + anyloot(MaggotSlime, .@lv, 10000, + Arrow, .@lv, 9000, + IronArrow, .@lv, 4000, + TreasureKey, max(1, .@lv/10), 6000, + CactusDrink, limit(1, .@lv/10, 3), 4000, + CoinBag, limit(1, .@lv/8, 5), 4000, + CasinoCoins, limit(1, .@lv/6, 10), 3200, + Coal, limit(1, .@lv/10, 3), 3000, + Dagger, limit(1, .@lv/15, 3), 3000, + Candy, limit(1, .@lv/5, 6), 2000, + ChocolateBar, limit(1, .@lv/20, 3), 1000, + Milk, 1, 200, + IcedBottle, 1, 60); + break; + case HCD_SNAKEPIT: + .@val+=4500; + anyloot(SnakeEgg, limit(1, .@lv/8, 10), 9600, + SnakeTongue, limit(1, .@lv/16, 5), 9500, + SnakeSkin, limit(1, .@lv/20, 3), 7000, + JeansShorts, 1, 300, + DivineApple, 1, 10, + Kanabo, 1, 1); // Teasing Xanthem for mapping here + break; + case HCD_DANGERAREA: + .@val+=140000; + anyloot(HastePotion, limit(1, .@lv/20, 10), 4000, + StrengthPotion, limit(1, .@lv/20, 10), 4000, + SmokeGrenade, limit(1, .@lv/18, 8), 4000, + Grenade, limit(1, .@lv/28, 6), 3000, + MoubooSteak, limit(1, .@lv/28, 6), 2500, + MercBoxA, 1, 2000, + AncientBlueprint, 1, 1500, + Lockpicks, limit(1, .@lv/30, 4), 1000, + StatusResetPotion, 1, 1000, + DungeonMap, 1, 700, + TreasureMap, 1, 700, + MagicApple, 1, 40); + break; + case HCD_MKBASEMENT: + .@val+=1000000; + anyloot(HastePotion, limit(1, .@lv/20, 10), 6000, + StrengthPotion, limit(1, .@lv/20, 10), 6000, + Curshroom, limit(1, .@lv/28, 6), 4500, + SmokeGrenade, limit(1, .@lv/18, 8), 4500, + Grenade, limit(1, .@lv/28, 6), 3500, + AncientBlueprint, 1, 2500, + DungeonMap, 1, 2000, + TreasureMap, 1, 2000, + CrazyRum, 1, 1500, + MercBoxB, 1, 1000, + WhiskeyAle, 1, 400, + GoldenApple, 1, 80, + DivineApple, 1, 60, + MagicApple, 1, 45); + break; + case HCD_MARKET: + .@val+=16; + // Sending a fresh homun in market may yield no GP. + Zeny+=min(.zenycap, 1000*.@lv*min(10000, gethominfo(3))/100000); + anyloot(Piberries, .@lv, 9000, + Bread, limit(1, .@lv/3, 12), 7000, + Cheese, .@lv, 5000, + Beer, limit(1, .@lv/10, 10), 1200, + TreasureMap, 1, 420); + break; + } + // A final boost for sake of randomness + .@val+=rand2(0, 10); + return .@val; +} + +OnInit: + .sex=G_MALE; + .distance=5; + // Old Maximum Profit: 10,000 GP + // Coin Bag farming: 180 mobs, at 5% drop rate: 5,000 GP max + .zenycap=7500; + end; + +} + diff --git a/npc/017-10/kenton.txt b/npc/017-10/kenton.txt new file mode 100644 index 0000000..3ffc2fa --- /dev/null +++ b/npc/017-10/kenton.txt @@ -0,0 +1,204 @@ +// TMW2/LoF scripts. +// Authors: +// Jesusalva +// Description: +// Part of player story + +017-10,57,34,0 script Kenton NPC_KENTON,{ + .@q=getq(General_Narrator); + mesn; + mesq l("Hello! My name is Kenton, and I'm in charge of Public Affairs of Land Of Fire."); + next; + mesn; + mesq l("You see, Pihro and Pyndragon, the mayors, are really busy people. They're developing a game or something as we speak."); + next; + mesn; + mesq l("So if you have any issue which would require the Mayor to see it, you'll need me first."); + switch (.@q) { + case 0: + Exception("ERROR", RB_SPEECH|RB_ISFATAL); + case 17: + next; + mesc l("@@ raise an eyebrow as you hand him Gelid's letter.", .name$); + next; + mesn; + mesq l("That's a really strange letter from Mr. Frozenheart."); + next; + mesn; + mesq l("But also very amusing. I'm sure Pihro and Pyndragon, the town mayors, will fancy this request of yours."); + next; + mesn; + mesq l("Anyway, as you might be aware, Land Of Fire came here in an incident after the Monster King took all Mana Stones... So, we have a good magical affinity."); + next; + mesn; + mesq l("Most of our professors moved on to the Academy Island, and are with Tulimshar's and Frostia's professors working right now. But..."); + next; + mesn; + mesq l("...Lalica, the witch, is still with us. And she came to complain that a petty thief stolen a very precious item of hers."); + next; + mesn; + mesq l("I don't know what, but it is ")+b(l("small, red, round and shiny."))+l("And we know who the thief is."); + next; + mesn; + mesq l("I've dispatched Benjamin and some other city guards after her flew to Elenium Mines, but thus far, they haven't returned."); + next; + mesn; + mesq l("I need you to find her to and bring her back there, along whatever she stole. Then I'll honor your request."); + next; + mesn; + mesq l("After all, that was two nights ago, and none of them returned..."); + mesc b(l("WARNING: "))+l("Minimum advised level 72 to do this quest."), 1; + mesc b(l("WARNING: "))+l("You would do well as come prepared, as failing in the last stage will RESET current progress on the quest."), 1; + setq LoFQuest_Barbara, 1; + setq General_Narrator, 18; + break; + // Barbara Quest in progress + case 18: + .@s=getq(LoFQuest_Barbara); + .@s3=getq3(LoFQuest_Barbara); + switch (.@s) { + case 5: + // No apple - you fail + if (!.@s3) { + mesn; + mesq l("Good luck arresting the criminal!"); + mesc l("You need both the stolen item as the thief to complete the quest."), 1; + close; + } + + // Good reporting + mesn; + if (!BARBARA_STATE) + mesq l("I see you've brought Barbara here, excellent. She seems pretty beat up."); + else + mesq l("...Where's Barbara, the thief?"); + next; + mesn; + mesq l("Also, do you have the stolen item?"); + // You fail + if (!(askyesno() == ASK_YES && countitem(MagicApple))) { + mes ""; + mesn; + mesq l("Bring me the stolen item, pretty please."); + close; + } + mes ""; + mesn; + mesq l("Good, there they are."); + next; + if (BARBARA_STATE) { + mesn strcharinfo(0); + mesq l("I regret to inform Barbara was killed in battle before I could find her. I burried her in the mines."); + next; + mesn; + mesq l("Oh... What a bummer. But you've brought the item back, so we're OK."); + next; + // Barbara is alive + } else { + mesc l("Pledge for Barbara's innocence?"); + // Pledge menu + if (askyesno() == ASK_YES) { + BARBARA_STATE=3; + mesn; + mesq lg("...That's a surprise, the noble @@ defending a criminal like her.", strcharinfo(0)); + next; + mesn; + mesq l("I will let Lalica, Pihro and Pyndragon know that you find her not guilty, but..."); + next; + mesn; + mesq l("The final sentence still belongs to LoF Admins."); + next; + } else { + BARBARA_STATE=2; + } + // EOF: Pledge Menu + mesn; + mesq l("I'll have her hospitalized now."); + next; + } + mesn; + mesq l("Anyway, here is your reward."); + delitem MagicApple, 1; + setq General_Narrator, 19; + setq LoFQuest_Barbara, 0, 0, 0; + getexp 400000, 15000; // Needed: 1,148,484 + Zeny+=3300; // You get a reward in cash + getvaultexp(10); + next; + mesn; + mesq l("Please come back later to know how things are going."); + break; + // Bad reporting + case 4: + mesn; + mesq l("Good luck arresting the criminal!"); + mesc l("You need both the stolen item as the thief to complete the quest."), 1; + break; + // Cutscene not seen + case 1: + mesn; + mesq l("Good luck arresting the criminal!"); + break; + // Default message + default: + mesn; + mesq l("Benjamin reported in. Good luck arresting the criminal!"); + break; + } + break; + // Barbara Quest was complete and solution was marked in BARBARA_STATE + case 19: + next; + mesn; + mesq l("So, where we were again... Oh right, travel to world edge, look for family or whatever, right?"); + next; + mesn; + mesq l("Yes. I mean, yes, Pihro and Pyndragon will fancy you an airship."); + next; + select + l("What is an airship? O.o"), + l("Cool, an airship!"); + mes ""; + if (@menu == 1) { + mesn; + mesq l("An Airship? It is just a ship. Which flies."); + next; + } + mesn; + mesq l("Now, crafting an airship requires a lot of efforts, resources, money and specially time. Fourteen months, to be exact."); + next; + mesn; + mesq l("By the way , it is done already. You took a long time, you know? Also, we're talking about Pihro and Pyndragon."); + next; + mesn; + mesq l("Besides, the Alliance High Council had plans for an expedition on the Fortress Island, but had no personel to do it."); + next; + mesn; + mesq l("Yes, you are now personel! Doesn't it feels exciting? Please tell me it does, I have nothing else to convince you to go otherwise."); + next; + mesn; + mesq l("The Fortress Island is a terribly dangerous place, so the Alliance sent a scout party beforehand, and set up a tower in front of an... erm... Very disturbing walled place we found."); + next; + mesn; + mesq l("Now go and save the world or something like that. I mean, it is not like I really cared with the world, anyway... With luck you'll even find what you are looking for."); + setq General_Narrator, 20; + // FALLTHROUGH + case 20: + case 21: + next; + setcamnpc "#ToFortress"; + mesn; + mesq l("Just go over there and you'll be able to board the Airship. The travel takes a while so please be patient and good luck!"); + restorecam; + // TODO: Maybe investigate & report to Tulimshar Magic Council? + break; + } + close; + +OnInit: + .sex=G_MALE; + .distance=5; + end; + +} + diff --git a/npc/017-10/politics.txt b/npc/017-10/politics.txt new file mode 100644 index 0000000..8bcd243 --- /dev/null +++ b/npc/017-10/politics.txt @@ -0,0 +1,58 @@ +// TMW2 Scripts +// Author: +// Jesusalva +// Description: +// Town Administrator file, see npc/functions/politics.txt +// User variables: +// #POL_APPLYWEEK = Week of last application +// #POL_VOTEDAY = Day of last vote + +017-10,54,35,0 script Land Of Fire Office NPC_POLITICS,{ +do +{ + mesc ".:: "+l("Land Of Fire Townhall")+" ::.", 2; + mesc l("Current Town Administrator: ")+$LOF_MAYOR$, 3; + POL_TownInfo("LOF"); + mesc l("Application fee: @@ GP", .applytax); + next; + select + l("Information"), + rif(strcharinfo(0) == $LOF_MAYOR$, l("Manage Town")), + rif(#POL_APPLYWEEK != gettimeparam(GETTIME_WEEKDAY), l("Apply for the office!")), + l("View Candidate List and cast a vote"), + l("[Quit]"); + + switch (@menu) { + case 1: + POL_Information(); + break; + case 2: + POL_Manage("LOF"); + break; + case 3: + // array_push might be too sensible for getd/setd + if (Zeny < .applytax) + break; + Zeny-=.applytax; + $LOF_MONEY+=.applytax; + #POL_APPLYWEEK=gettimeparam(GETTIME_WEEKDAY); + array_push($LOF_CANDIDATE$, strcharinfo(0)); + array_push($LOF_VOTES, 0); + mesc l("Application successful!"), 3; + next; + break; + case 4: + POL_Candidate("LOF"); + break; + default: + close; + } +} while (true); +end; + +OnInit: + .applytax=100; + .distance=4; + end; +} + diff --git a/npc/017-10/vault.txt b/npc/017-10/vault.txt new file mode 100644 index 0000000..86bfeff --- /dev/null +++ b/npc/017-10/vault.txt @@ -0,0 +1,20 @@ +// TMW2/LoF Script. +// Author: +// Jesusalva +// Notes: +// Based on BenB idea. + +017-10,20,41,0 script Vault#01710 NPC_NO_SPRITE,{ + LootableVault(3, 5, "01710"); + close; + +OnInit: + .distance=3; + end; + +OnClock0202: +OnClock1419: + $VAULT_01710+=rand2(50,100); + end; +} + |