diff options
Diffstat (limited to 'npc/007-1')
-rw-r--r-- | npc/007-1/_import.txt | 2 | ||||
-rw-r--r-- | npc/007-1/_mobs.txt | 20 | ||||
-rw-r--r-- | npc/007-1/_warps.txt | 4 | ||||
-rw-r--r-- | npc/007-1/caelum.txt | 154 | ||||
-rw-r--r-- | npc/007-1/dracoula.txt | 153 | ||||
-rw-r--r-- | npc/007-1/pylon.txt | 145 | ||||
-rw-r--r-- | npc/007-1/torches.txt | 153 | ||||
-rw-r--r-- | npc/007-1/zarkor.txt | 228 |
8 files changed, 847 insertions, 12 deletions
diff --git a/npc/007-1/_import.txt b/npc/007-1/_import.txt index d9dd3f9bb..79c6fdd2e 100644 --- a/npc/007-1/_import.txt +++ b/npc/007-1/_import.txt @@ -2,4 +2,4 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/007-1/_mobs.txt", "npc/007-1/_warps.txt", -"npc/007-1/tycoon.txt",
\ No newline at end of file +"npc/007-1/tycoon.txt", diff --git a/npc/007-1/_mobs.txt b/npc/007-1/_mobs.txt index a3e403378..2477c31f0 100644 --- a/npc/007-1/_mobs.txt +++ b/npc/007-1/_mobs.txt @@ -1,11 +1,13 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 007-1: Tulimshar Mining Camp mobs -007-1,135,101,43,90 monster Cave Maggot 1027,35,35000,300000 -007-1,120,43,10,7 monster Black Scorpion 1074,3,35000,300000 -007-1,65,60,19,15 monster Ratto 1005,3,35000,300000 -007-1,59,50,19,23 monster Piou 1002,3,35000,300000 -007-1,113,140,57,52 monster Cave Snake 1035,25,35000,300000 -007-1,52,156,37,29 monster Red Scorpion 1072,10,35000,300000 -007-1,34,125,7,6 monster Cave Maggot 1027,4,35000,300000 -007-1,84,72,75,57 monster Cave Bat 1039,6,35000,300000 -007-1,99,99,99,99 monster Ruby Bif 1099,8,35000,300000 +007-1,140,101,43,90 monster Cave Maggot 1027,38,35000,300000,Tycoon::OnKillCaveMaggot +007-1,129,45,14,9 monster Black Scorpion 1074,4,35000,220000,Tycoon::OnKillBlackScorpion +007-1,70,60,19,15 monster Ratto 1005,3,35000,300000,Tycoon::OnKillRatto +007-1,64,50,19,23 monster Piou 1002,3,35000,300000 +007-1,118,140,57,52 monster Cave Snake 1035,25,35000,300000,Tycoon::OnKillCaveSnake +007-1,57,156,37,29 monster Red Scorpion 1072,10,35000,300000,Tycoon::OnKillRedScorpion +007-1,39,125,7,6 monster Cave Maggot 1027,5,35000,300000,Tycoon::OnKillCaveMaggot +007-1,89,72,75,57 monster Cave Bat 1039,7,35000,300000 +007-1,104,99,99,99 monster Ruby Bif 1099,9,35000,300000 +007-1,117,94,10,7 monster Black Scorpion 1074,1,35000,300000,Tycoon::OnKillBlackScorpion +007-1,93,110,9,9 monster Cave Maggot 1027,8,35000,300000,Tycoon::OnKillCaveMaggot diff --git a/npc/007-1/_warps.txt b/npc/007-1/_warps.txt index 64f5e9e5a..ff417a276 100644 --- a/npc/007-1/_warps.txt +++ b/npc/007-1/_warps.txt @@ -1,4 +1,4 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 007-1: Tulimshar Mining Camp warps -007-1,51,37,0 warp #007-1_51_37 0,0,004-1,33,110 -007-1,85,52,0 warp #007-1_85_52 0,0,004-1,92,115 +007-1,56,37,0 warp #007-1_56_37 0,0,004-1,33,110 +007-1,90,52,0 warp #007-1_90_52 0,0,004-1,92,115 diff --git a/npc/007-1/caelum.txt b/npc/007-1/caelum.txt new file mode 100644 index 000000000..6aaa2aa0a --- /dev/null +++ b/npc/007-1/caelum.txt @@ -0,0 +1,154 @@ +// TMW2 Script +// Author: +// SkyDragon +// Saulc +// Reviewer: +// Jesusalva +// Description: +// Caelum Miner, main author Skydragon Caelum mean Sky in Latin. +// id:193 MineQuests_Caelum + +007-1,143,49,0 script Caelum NPC_PLAYER,{ + .@Miner = getq(MineQuest_Caelum); + if (BaseLevel < 28) goto L_TooWeak; + if (.@Miner == 1) goto L_Check; + if (.@Miner == 2) goto L_Complete; + +L_GiveTask: + mesn; + mesq lg("Hello, wanderer!"); + next; + mesq l("How did you end up here?"); + next; + + menu + l("To be honest, I don't know. I was only walking, seeking for adventure!"), L_Quest, + l("It's none of your business."), L_Quit; + + +L_Quest: + mes ""; + mesn; + mesq l("You perchance said in adventure? Good, because I just hurt my arm while mining!"); + next; + mesn; + mesq l("If you bring me some items to I do a bandage and heal myself, I'll give you my gloves!"); + next; + + menu + l("Really? What do you need?"), L_Start, + l("Better do this some other time..."), L_Quit; + + +L_Start: + setq MineQuest_Caelum, 1; + mes ""; + mesn; + mesq l("Ok, what I need is:"); + goto L_List; + +L_Quit: + mes ""; + mesn; + mesq l("Alright."); + close; + +L_List: + mes ""; + mesn; + mes l("Here's what I need:"); + mes l("@@/1 @@", countitem(Lifestone), getitemlink(Lifestone)); + mes l("@@/1 @@", countitem(CottonCloth), getitemlink(CottonCloth)); + mes l("@@/2 @@", countitem(BlackScorpionStinger), getitemlink(BlackScorpionStinger)); + mes l("@@/5 @@", countitem(ScorpionClaw), getitemlink(ScorpionClaw)); + mes l("@@/10 @@", countitem(BatTeeth), getitemlink(BatTeeth)); + mes l("@@/10 @@", countitem(CactusDrink), getitemlink(CactusDrink)); + mes l("@@/20 @@", countitem(MaggotSlime), getitemlink(MaggotSlime)); + mes l("@@/8 @@, just because I'm hungry as a bear.", countitem(BugLeg), getitemlink(BugLeg)); + close; + +L_Check: + mesn; + mesq l("Did you brought me everything I asked for?"); + next; + menu + l("Yes!"), L_Give, + l("I forgot what you need!"), L_List, + l("No!"), L_Quit; + +L_Give: + if ( + countitem(Lifestone) < 1 || + countitem(CottonCloth) < 1 || + countitem(BlackScorpionStinger) < 2 || + countitem(BugLeg) < 8 || + countitem(BatTeeth) < 10 || + countitem(CactusDrink) < 10 || + countitem(MaggotSlime) < 20 || + countitem(ScorpionClaw) < 5 + ) goto L_Lying; + + inventoryplace MinerGloves, 1; + + delitem(Lifestone, 1); + delitem(CottonCloth, 1); + delitem(BlackScorpionStinger, 2); + delitem(BugLeg, 8); + delitem(BatTeeth, 10); + delitem(CactusDrink, 10); + delitem(MaggotSlime, 20); + delitem(ScorpionClaw, 5); + + getitem(MinerGloves, 1); + getexp(855, 3); + setq(MineQuest_Caelum, 2); + + mes ""; + mesn; + mesq l("Here, all yours. I can't use them like I am now. Thank you."); + close; + +L_Complete: + mesn; + mesq l("Wandering too much? Take care to don't get lost."); + close; + +// Funnier to write than to read, but the player lied. :angel: +L_Lying: + mesn; + mesq l("No no no, that's wrong."); + next; + mesc l("The miner goes to count your stuff again."); + next; + mesc l("And again."); + next; + mesc l("And again, and again."); + next; + mesc l("And again, and again, again."); + next; + mesc l("You wonder, maybe he entered on an infinite loop? Hellooo, anybody home?"); + next; + mesn; + mesq l("No no no, you don't have everything I've asked for!"); + next; + goto L_List; + +L_TooWeak: + mesn; + mesq l("Wanderer, here is dangerous! Go back!"); + close; + +OnInit: + .@npcId = getnpcid(0, .name$); + setunitdata(.@npcId, UDT_HEADTOP, MinerHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, LeatherShirt); + setunitdata(.@npcId, UDT_HEADBOTTOM, BromenalPants); + setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); + setunitdata(.@npcId, UDT_HAIRSTYLE, 4); + setunitdata(.@npcId, UDT_HAIRCOLOR, 3); + + .sex = G_MALE; + .distance = 4; + + end; +} diff --git a/npc/007-1/dracoula.txt b/npc/007-1/dracoula.txt new file mode 100644 index 000000000..1c9f99c4c --- /dev/null +++ b/npc/007-1/dracoula.txt @@ -0,0 +1,153 @@ +// TMW2 Script +// Author: +// Saulc +// Jesusalva +// Description: +// Dracoula is daily npc, ask for bat teeth every 23 h +// Variable: +// MineQuest_Dracoula + +007-1,170,99,0 script Dracoula NPC_UKAR_F,{ + mesn; + mesq lg("Hello adventurer! Are you lost?"); + next; + mesq l("This is not a place for non-experimented people!"); + next; + mesq l("Mine exit is top left!"); + mes ""; + if (BaseLevel >= 15) goto L_Menu; + close; + +L_Menu: + mesn; + mesq l("But as you're here now, could you do me a favour?"); + mes ""; + menu + l("Hum, Which type of favor?"),L_Quest, + l("Can I find a mana source here?"),L_Mana, + l("Can I become a miner?"),L_Miner, + l("No, thanks. I gonna leave this place."),L_Close; + +L_Quest: + mes ""; + .@q=getq(MineQuest_Dracoula); + if (!.@q) { + mesn; + mesq l("Nice! First let me introduce myself. I am Dracoula, a miner!"); + next; + mesn; + mesq l("I mine here since a while. My favorite activity it's to scare others miners!"); + next; + } + if (.@q == 0) goto L_Continue; + .@q2=getq2(MineQuest_Dracoula) + 60 * 60 * 23; + if (santime() >= .@q2) goto L_Repeat; + mesn; + mesq l("But come back in a few hours, I didn't lost all @@!", getitemlink(BatTeeth)); + close; + +L_Continue: + mesq l("I love seeing their terrorize face."); + mes ""; + menu + l("Ok. Cool life!"), L_Close, + l("Haha, Nice, but how do you do that?"), L_Next; + +L_Next: + mes ""; + mesq l("I disguise myself into a giant mutated bat, but every time I break or lose my fake teeth."); + next; + mesq l("I usually ask adventurers for 11 @@, but new miners should be arriving soon. I need to make them cry!", getitemlink(BatTeeth)); + next; + mesq l("So it could be nice, if you could bring me 20 @@,", getitemlink(BatTeeth)); + mes ""; + menu + rif(countitem(BatTeeth) >= 20, l("Hey! I already got them!")), L_Finish, + l("I'll get to it."), L_Close; + close; // double sure + +L_Repeat: + mesn; + if (getequipid(EQI_HEAD_TOP) > 0) + mesq l("Oh it's you @@, I did not recognize you with your hat!", strcharinfo(0)); + else + mesq l("Oh it's you @@, I did not recognize you without a hat!", strcharinfo(0)); + next; + mesq l("Do you have an extra of 11 @@ for me?", getitemlink(BatTeeth)); + mes ""; + menu + rif(countitem(BatTeeth) >= 11, l("Yep, I bring them for you!")), L_Finish2, + l("Actually not."), L_Close; + close; + +// First Time Only +L_Finish: + delitem BatTeeth, 20; + getexp 666, 5; // 20 / 18% = 111 kills * 15 xp = 1665 xp gained from killing. (40% bonus) + Zeny = (Zeny + 240); // 3*20 = 60 base (400% bonus) + setq MineQuest_Dracoula, 1, santime(); + mes ""; + mesn; + mesq l("WAW thank you! Come back later to bring me extra @@!", getitemlink(BatTeeth)); + close; + +// Repeat +L_Finish2: + delitem BatTeeth, 11; + getexp 275, 1; // 11 / 18% = 61 kills * 15 xp = 915 xp gained from killing. (30% bonus) + Zeny = (Zeny + 120); // 3*11 = 33 base (x% bonus) + setq MineQuest_Dracoula, 1, santime(); + mes ""; + mesn; + mesq l("So COOL, thanks! Come back later to bring me extra @@!", getitemlink(BatTeeth)); + close; + +L_Mana: + mes ""; + mesn; + mesq l("Ah! Actually nobody found one."); + next; + mesn; + mesq l("But it's ultimate goal of miners there."); + next; + mesn; + mesq l("If one of us found a Mana stone. They would become rich!"); + next; + mesn; + mesq l("Twelve times more if it is an elusive Mana Fragment no one knows where they are!"); + next; + mesn; + mesq l("That is."); + next; + goto L_Menu; + +L_Miner: + mes ""; + mesn; + mesq l("You should ask Tycoon."); + next; + mesn; + mesq l("He is the Miners leader."); + next; + goto L_Menu; + +L_Close: + closedialog; + goodbye; + close; + +OnInit: + .@npcId = getnpcid(0, .name$); + setunitdata(.@npcId, UDT_HEADTOP, MinerHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, ArtisTankTop); + setunitdata(.@npcId, UDT_HEADBOTTOM, JeansShorts); + setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); + setunitdata(.@npcId, UDT_HAIRSTYLE, 7); + setunitdata(.@npcId, UDT_HAIRCOLOR, 8); + + .sex = G_FEMALE; + .distance = 4; + + end; +} + diff --git a/npc/007-1/pylon.txt b/npc/007-1/pylon.txt new file mode 100644 index 000000000..c68e3763a --- /dev/null +++ b/npc/007-1/pylon.txt @@ -0,0 +1,145 @@ +// TMW2 scripts. +// TMW2 Authors: +// Saulc +// Jesusalva +// Description: +// Miner Pylon transforme gems into gem powder, he ask for 100gp + 1 gem and give 100 EXp (each time) + 1 to 3 gem powder's. +// Variable: +// dont need variable +// Reference: +// https://fr.wikipedia.org/wiki/Pilon#Objets not Epiphysis ! + +007-1,47,44,0 script Pylon NPC_PLAYER,{ + + mesn; + mesq l("Hello, I'm Pylon!"); + next; + mesq l("I work in this mine since 3 years, I'm an expert on gems: Ruby, Topaz, Sapphire, You know!"); + next; + mesq l("If you have some gems, I can transform them into powder."); + next; + mesq l("I only take a tax of 100 gp per gem."); + if (Zeny < 100) + close; + next; + mesq lg("Then, would you like me to transform one of your gems?"); + next; + goto L_Menu; + +L_Menu: + mesn strcharinfo(0); + // We could add a drag zone, and allow players to drag their gems, but... Meh. + select + l("Hum, how many gem powders can I get from one gem?"), + rif(countitem(Diamond) >= 1 && Zeny >= 100, l("Yeah sure, take my Diamond!")), + rif(countitem(Ruby) >= 1 && Zeny >= 100, l("Yeah sure, take my Ruby!")), + rif(countitem(Emerald) >= 1 && Zeny >= 100, l("Yeah sure, take my Emerald!")), + rif(countitem(Sapphire) >= 1 && Zeny >= 100, l("Yeah sure, take my Sapphire!")), + rif(countitem(Topaz) >= 1 && Zeny >= 100, l("Yeah sure, take my Topaz!")), + rif(countitem(Amethyst) >= 1 && Zeny >= 100, l("Yeah sure, take my Amethyst!")), + rif(countitem(IronOre) >= 1 && Zeny >= 100, l("And what's about Iron Ore?")), + l("No, thanks, I will keep my gems."); + + mes ""; + + switch (@menu) { + case 1: + goto L_Question; + break; + case 8: + goto L_Ore; + break; + case 9: + close; + break; + default: + goto L_Powder; + break; + } + +L_Question: + mesn; + mesq lg("That depends on your luck!"); + next; + mesq l("With one gem you can expect to get 1 to 3 powders!"); + next; + mesc l("We must blame Saulc!"); + next; + mesq lg("By the way would you like to transform your gem?"); + next; + goto L_Menu; + +L_Ore: + mesn; + mesq l("Hum... I'm not really good at it."); + next; + mesn; + mesq l("But I can try my best for you!"); + next; + mesn; + mesq l("If you want it?"); + next; + goto L_MenuOre; + +L_MenuOre: + menu + rif(countitem(IronOre) >= 1 && Zeny >= 100, l("Make me an Iron Powder.")), L_OreOk, + l("Nah, thank you."), L_Close; + +L_OreOk: + // Amount iron ore + .@amo=rand(1,2); + + delitem IronOre, 1; + Zeny = Zeny - 100; + getexp 10, 0; + inventoryplace IronPowder, .@amo; + getitem IronPowder, .@amo; + mes ""; + mesn; + mesq l("Here you go, I tried my best! Do you want another?"); + next; + goto L_MenuOre; + + +// Must rework IDs +L_Powder: + // Magic + .@id=Diamond+@menu-2; + .@pw=DiamondPowder+@menu-2; + + // Amount + .@am=rand(1,3); + + delitem .@id, 1; + Zeny = Zeny - 100; + getexp 60, 0; + + + inventoryplace .@pw, .@am; + getitem .@pw, .@am; + + mes ""; + mesn; + mesq l("Here is your powder! I hope it will be useful."); + next; + mesq l("Would you like to transform one more?"); + next; + goto L_Menu; + + +L_Close: + close; + +OnInit: + .@npcId = getnpcid(0, .name$); + setunitdata(.@npcId, UDT_HEADTOP, MinerHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, ArtisTankTop); + setunitdata(.@npcId, UDT_HEADBOTTOM, BromenalPants); + setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); + setunitdata(.@npcId, UDT_HAIRSTYLE, 15); + setunitdata(.@npcId, UDT_HAIRCOLOR, 4); + .sex = G_MALE; + .distance = 4; + end; +} diff --git a/npc/007-1/torches.txt b/npc/007-1/torches.txt new file mode 100644 index 000000000..0dff30ac1 --- /dev/null +++ b/npc/007-1/torches.txt @@ -0,0 +1,153 @@ +// TMW-2 script. +// Author: +// Crazyfefe +// Jesusalva +// Description: +// Torches +// Variables: +// TulimsharQuest_DarkInvocator +// Values: +// 0 Default. +// 1 Quest Found. +// 2 Quest Accepted. +// 3 Bomb Defused. +// 4 Quest Completed. + + +function script CheckTorch { + @torch_count = 0; + @count_tmp = 0; + if (debug) + npctalk3 l("Hello, I am T-@@, of the @@ order.", @torch, $@TorchBits[@torch]); + if (getq2(TulimsharQuest_DarkInvocator) & $@TorchBits[@torch]) + goto L_Empty; + if (countitem(EverburnPowder) <= 0) { + dispbottom(l("I do not have Everburn Powder to lit the torch.")); + end; + } + setq2 TulimsharQuest_DarkInvocator, getq2(TulimsharQuest_DarkInvocator) | $@TorchBits[@torch]; + + goto L_Loop; + +L_TorchTally: + specialeffect(62); + specialeffect(54); + getmapxy(@m$, .@x, .@y, 0); + + switch (@torch_count) { + case 1: + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 4, "Zarkor::OnMonster"; + break; + case 2: + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 5, "Zarkor::OnMonster"; + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 1, "Zarkor::OnMonster"; + break; + case 3: + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 6, "Zarkor::OnMonster"; + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 5, "Zarkor::OnMonster"; + break; + case 4: + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Black Scorpion", BlackScorpion, 1, "Zarkor::OnMonster"; + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, 6, "Zarkor::OnMonster"; + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, 7, "Zarkor::OnMonster"; + break; + case 5: + areamonster @m$, .@x-3, .@y-3, .@x+3, .@y+3, "Black Scorpion", BlackScorpion, 3, "Zarkor::OnMonster"; + areamonster @m$, .@x-3, .@y-3, .@x+3, .@y+3, "Magic Maggot", CaveMaggot, 8, "Zarkor::OnMonster"; + areamonster @m$, .@x-3, .@y-3, .@x+3, .@y+3, "Magic Goblin", MagicGoblin, 10, "Zarkor::OnMonster"; + break; + default: + dispbottom l("BUG, Please report: TorchTally, err_val @@", @torch_count); + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Black Scorpion", BlackScorpion, rand(1,2), "Zarkor::OnMonster"; + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Maggot", CaveMaggot, rand(1,3), "Zarkor::OnMonster"; + areamonster @m$, .@x-2, .@y-2, .@x+2, .@y+2, "Magic Goblin", MagicGoblin, rand(1,5), "Zarkor::OnMonster"; + } + + delitem EverburnPowder, 1; + if (@torch_count == 5) { + message strcharinfo(0), l("All torches are lit!"); + //killmonsterall("007-1"); + setq1 TulimsharQuest_DarkInvocator, 6; + } + + return; + +L_Loop: + while (@count_tmp < 5) { + @count_tmp = (@count_tmp + 1); + if (getq2(TulimsharQuest_DarkInvocator) & $@TorchBits[@count_tmp]) + @torch_count = (@torch_count + 1); + } + goto L_TorchTally; + +L_Empty: + message strcharinfo(0), l("This torch is already lit."); + return; + +} + +007-1,171,145,0 script Torch#1 NPC_NO_SPRITE,{ + @torch = 1; + .@q = getq(TulimsharQuest_DarkInvocator); + if (.@q == 5) { + CheckTorch(); + npctalk(l("What is @@ doing?", strcharinfo(0)), "Miner#SkyDG"); + } + end; +OnInit: + // Remember: array start at zero, but barrels count start at 1. "Fixing" may break torch 5! + setarray $@TorchBits, (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6); + .sex = G_OTHER; + .distance = 1; + end; +} + +007-1,70,116,0 script Torch#2 NPC_NO_SPRITE,{ + @torch = 2; + .@q = getq(TulimsharQuest_DarkInvocator); + if (.@q == 5) { + CheckTorch(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} + +007-1,67,133,0 script Torch#3 NPC_NO_SPRITE,{ + @torch = 3; + .@q = getq(TulimsharQuest_DarkInvocator); + if (.@q == 5) { + CheckTorch(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +007-1,40,125,0 script Torch#4 NPC_NO_SPRITE,{ + @torch = 4; + .@q = getq(TulimsharQuest_DarkInvocator); + if (.@q == 5) { + CheckTorch(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} +007-1,144,24,0 script Torch#5 NPC_NO_SPRITE,{ + @torch = 5; + .@q = getq(TulimsharQuest_DarkInvocator); + if (.@q == 5) { + CheckTorch(); + } + end; +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} diff --git a/npc/007-1/zarkor.txt b/npc/007-1/zarkor.txt new file mode 100644 index 000000000..a9e6c12d1 --- /dev/null +++ b/npc/007-1/zarkor.txt @@ -0,0 +1,228 @@ +// TMW2 Script +// Author: +// Crazyfefe +// Jesusalva +// Description: +// Dark Invocator Quest +// Notes: +// You'll be tempted to sell the Dark Desert Mushroom for 8'000 GP. There's a but. +// You won't be able to finish this quest. Ok, no biggie, it was not that rewarding. +// But you won't be able to do more Everburn Powder. And it can be required on another +// quest. And there won't be other way to get the Powder. So DO NOT SELL IT. Think ahead. + +007-1,157,155,0 script Zarkor NPC_MIRAJ,{ + .@q=getq(TulimsharQuest_DarkInvocator); + if (BaseLevel <= 30) + goto L_Weak; + switch (.@q) { + case 0: + goto L_Start; + break; + case 1: + mesn "Zarkor, the Dark Summoner"; + mesq l("Talk to Zitoni, the Alchemist of Candor. He may look humble, but he is the greatest alchemist of this world. I need five @@.", getitemlink(EverburnPowder)); + close; + break; + case 2: + goto L_Price; + break; + case 3: + mesn "Zarkor, the Dark Summoner"; + mesq l("Talk to Zitoni, and deliver the @@. I can't give you another one, they're super rare.", getitemlink(DarkDesertMushroom)); + close; + break; + case 4: + goto L_Quest; + break; + case 5: + mesn "Saulc, the Bug Master"; + mesq col("What, are we really letting you do something so insane as summoning the Monster King?! Blame Saulc!!"); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("You didn't lit every torch yet! Hurry up!!"); + close; + break; + case 6: + if (getq2(TulimsharQuest_DarkInvocator) == 0) { + setq TulimsharQuest_DarkInvocator, 4; + goto L_Quest; + } + goto L_Ritual; + break; + + } + mesn; + mesq l("One day... One day! ONE DAY I'LL GET REVENGE ON YOU, MONSTER KING!"); + close; + +L_Weak: + mesn; + mesq lg("Stay out of harm way. Nothing to see here. Stay away, pathetically weak human."); + close; + +L_Start: + mesn; + mesq l("Hey... You... Come here."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("I am Zarkor, the Dark Summoner. I want to do a dark summoning ritual, but there are strings attached."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("I need to buy your silence. I'll reward you greatly when I'm done. But first, I need to know if you'll be loyal to me."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("To prove me your faith, bring me 1 @@ or 1 @@.",getitemlink(Ruby),getitemlink(Topaz)); + mesq l("Such precious gem, is not something you would give for free, unless you are interested on my... rituals."); + next; + mesn strcharinfo(0); + select + l("Indeed. Sorry. I'm not giving you anything."), + rif(countitem(Ruby) >= 1, l("I swear silence, over this bloody ruby.")), + rif(countitem(Topaz) >= 1, l("I swear silence, over this shining topaz.")); + + mes ""; + switch (@menu) { + case 1: + mesn; + mesq l("Very well. This conversation never happened."); + next; + mesn; + mesq l("But if you regret this choice later... You know where you can find me."); + close; + break; + case 2: + delitem Ruby, 1; // Acc: 712 GP + setq TulimsharQuest_DarkInvocator, 1; + break; + case 3: + delitem Topaz, 1; // Acc: 825 GP + setq TulimsharQuest_DarkInvocator, 1; + break; + } + mesn "Zarkor, the Dark Summoner"; + mesq l("Very well. I shall now share with you the details of this rite."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("I will summon the Monster King. Don't ask me my reasons. I know this will put Tulimshar in danger. But I will still do it."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("For that, I need to light five torches. The pentagram, the magic, and all the else are with me. Just light the torches."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("Talk to Zitoni, the Alchemist of Candor. He may look humble, but he is the greatest alchemist of this world. I need five @@.", getitemlink(EverburnPowder)); + close; + +L_Price: + mesn strcharinfo(0); + mesq l("Zitoni refused to make the Powder."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("I thought he would. After all, Everburn Powder... is not a mere powder."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("Well, you gave me the gems, so I trust you. Here, take this @@.", getitemlink(DarkDesertMushroom)); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("Take much care with it. It is a very, very rare drop from a rare monster from a difficult, high level area."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("Deliver it to Zitoni on my name. He'll trust it. The relation between me and Zitoni... goes way back."); + getitem DarkDesertMushroom, 1; + setq TulimsharQuest_DarkInvocator, 3; + close; + +L_Quest: + if (countitem(EverburnPowder) < 5) { + mesn "Zarkor, the Dark Summoner"; + mesq l("This is not enough, I need 5 @@ to perform the rite. Go talk with Zitoni.", getitemlink(EverburnPowder)); + close; + } + mesn "Zarkor, the Dark Summoner"; + mesq l("Good, good, you have enough powder. Now I need you to lit all five torches with them."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("Once you lit one of them, monsters will pour out, so take care to don't die."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("If you die, you'll have to begin again. And there is the experience penalty, too."); + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("Good luck, because you'll need it. Talk to me once all of them are lit, and I'll SUMMON DAH MONSTER KING."); + setq TulimsharQuest_DarkInvocator, 5; + close; + +L_Ritual: + percentheal 100, 0; + specialeffect(56); + mesc l("Zarkor spills many fluids on the lake, with much concentration."); + next; + specialeffect(56); + mesn "Zarkor, the Dark Summoner"; + mesc l("Zarkor starts a weird chant."); + next; + specialeffect(52); + killmonster("007-1", "Zarkor::OnMonster"); + mesn "Zarkor, the Dark Summoner"; + mesq l("MONSTER KING, APPEAR TO ME!"); + next; + mesn "MONSTER KING"; + mesc l("...Foolish human... Do you really think I will attend your summon?"), 1; + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("But... But! Where are you?! That summon ritual is equivalent to GM magic!"); + next; + mesn "MONSTER KING"; + mesc l("And who do you think that created GM Magic in first place, inexperienced kid?"), 1; + next; + mesn "Zarkor, the Dark Summoner"; + mesq l("You... You killed my father during Nivalis siege! I'll make you pay for that!!"); + next; + mesn "MONSTER KING"; + mesc l("You humans are so greedy... Just like me. I have more important things to do, other than waste time with you."), 1; + next; + mesn "MONSTER KING"; + mesc l("Zarkor, fell a small taste of my power. That is nothing. If you can't handle that, you're not even near my lowest lieutenant."), 1; + mesc l("And you got help from a kid, Zarkor? Lucky is that kid, that I don't have time to deal with them. Farewell."), 1; + next; + specialeffect(312); + mesn "Zarkor, the Dark Summoner"; + mes l("GAAAAAAAAAAAAAAAAHHHHHHH!"); + next; + goto L_Finish; + + + +L_Finish: + setq TulimsharQuest_DarkInvocator, 7; + // These values were taken from Experience table, and are magic numbers + getexp 7995, 412; // 100% for levelset (30,11) + // Pay roughly what you spent + // Powder + Trips + Gems + Sulf + Iron + Ash + Profit = Money + // (3000*5 + 4*500G + 1000 + 5*84 + 5*66 + 5*80 + 850) = 20.000 + Zeny=Zeny+20000; + getitem ZarkorScroll, 1; + + mesn; + mesq l("*Ugh* Thanks for your help. Here... Take this, as promised."); + next; + mesn strcharinfo(0); + mesq l("Are you feeling well? That was a pretty powerful attack!"); + next; + mesn; + mesq lg("Do not worry with me, youngling... I'll be fine."); + close; + +OnMonster: + end; + +OnPCDieEvent: + if (getq(TulimsharQuest_DarkInvocator) == 5 || getq(TulimsharQuest_DarkInvocator) == 6) + setq2 TulimsharQuest_DarkInvocator, 0; + end; + +OnInit: + .sex = G_MALE; + .distance = 6; + end; + +} |