summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/quest_db.conf5
-rw-r--r--npc/003-5/_import.txt1
-rw-r--r--npc/007-1/_import.txt3
-rw-r--r--npc/007-1/tycoon.txt300
4 files changed, 308 insertions, 1 deletions
diff --git a/db/quest_db.conf b/db/quest_db.conf
index b957c0368..520808e13 100644
--- a/db/quest_db.conf
+++ b/db/quest_db.conf
@@ -183,6 +183,11 @@ quest_db: (
// ID 131 to 150: Frostia Quests
// ID 151 to 170: Artis Quests
// ID 171 to 190: Esperia Quests
+// ID 191 to 300: Dungeon Quests
+{
+ Id: 191
+ Name: "MineQuest_Tycoon"
+},
{
Id: 192
Name: "MineQuest_Dracoula"
diff --git a/npc/003-5/_import.txt b/npc/003-5/_import.txt
index 018a08314..2333f5c53 100644
--- a/npc/003-5/_import.txt
+++ b/npc/003-5/_import.txt
@@ -2,3 +2,4 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/003-5/_warps.txt",
"npc/003-5/jeweler.txt",
+"npc/003-5/doors.txt",
diff --git a/npc/007-1/_import.txt b/npc/007-1/_import.txt
index bed02916c..f114525a3 100644
--- a/npc/007-1/_import.txt
+++ b/npc/007-1/_import.txt
@@ -2,4 +2,5 @@
// 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/dracoula.txt", \ No newline at end of file
+"npc/007-1/dracoula.txt",
+"npc/007-1/tycoon.txt",
diff --git a/npc/007-1/tycoon.txt b/npc/007-1/tycoon.txt
new file mode 100644
index 000000000..f987c411d
--- /dev/null
+++ b/npc/007-1/tycoon.txt
@@ -0,0 +1,300 @@
+// TMW2 scripts.
+// TMW2 Authors:
+// Saulc
+// Jesusalva
+// Description:
+// Miner leader asks you to purge mine from monsters. Currently disabled.
+// Variable:
+// MineQuest_Tycoon
+// Reference:
+// npc name from https://www.idleminertycoon.com/
+// Steps:
+// 0: Not started
+//
+// 1: Took ratto Quest 10 kills
+// 2: Completed ratto Quest - 50 EXP 50 GP
+// 3: Awaiting next quest
+//
+// 4: Took Cave Maggot Quest 25 kills
+// 5: Completed Cave Maggot Quest - 200 EXP 150 GP
+// 6: Awaiting next quest
+//
+// 7: Took Cave Snake Quest 50 kills
+// 8: Completed Cave Snake Quest - 1000 EXP 350 GP
+// 9: Awaiting next quest
+//
+// 10: Took Red Scorpion Quest 100 kills
+// 11: Completed Red Scorpion Quest - Miner Hat
+// 12: Awaiting next quest
+//
+// 13: Took Black Scorpion Quest 200 kills
+// 14: Completed Black Scorpion Quest - 12 000 EXP 5 000 GP
+// 15: Finished all trainment
+
+007-1,66,65,0 script Tycoon NPC_PLAYER,{
+ .@q=getq(MineQuest_Tycoon);
+
+ mesn;
+ mesq lg("Hello my friend!");
+ next;
+ mesq lg("Some of my miners friends died in this mine, because there are plenty of dangerous monsters.");
+ next;
+ mesq lg("Would you like to help us? Maybe you just need some information.");
+ next;
+ goto L_Menu;
+
+L_PreMenu:
+ mesn;
+ mesq l("I need your help dude!");
+ next;
+ goto L_Menu;
+
+L_Menu:
+ mesn strcharinfo(0);
+ menu
+ rif(getq(MineQuest_Tycoon) < 15, l("I am a brave adventurer! How can I help you?")), L_Purge,
+ l("What does miners do in cave?"), L_CaveMiner,
+ l("Can you give me a tip?"), L_Tip,
+ l("Are you a terranite?"), L_Terranite,
+ l("I don't care about dirty miners problem."), L_Close,
+ l("No, thanks, it's not my job!"), L_Close;
+
+L_Purge:
+ .@q=getq(MineQuest_Tycoon);
+ mes "";
+ if (BaseLevel < 15) goto L_NoLevel;
+ .@k=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+
+ mesn;
+ if (.@q == 0) {
+ mesq l("Ok, you look strong enough. Now, let me think on an easy task for you...");
+ next;
+ mesq l("Ah! I know. Kill 10 @@. They usually are near the mine's inn.", getmonsterlink(Ratto));
+ setq MineQuest_Tycoon, 1, 0;
+ } else if (.@q == 1) {
+ mesq l("You are killing @@. They usually are near the mine's Inn.", getmonsterlink(Ratto));
+ } else if (.@q == 2) {
+ mesq l("Good job! Here is your reward! (50 xp 50 gp)");
+ getexp 50, 0;
+ set Zeny, Zeny + 50;
+ setq MineQuest_Tycoon, 3, 0;
+ } else if (.@q == 3 && BaseLevel >= 19) {
+ mesq l("Less rattos means more food. So, this time the monsters will be a little stronger.");
+ next;
+ mesq l("Ok, now I want you to purge the cave from maggots. Kill 25 @@. They keep respawning and annoy miners team.", getmonsterlink(CaveMaggot));
+ setq MineQuest_Tycoon, 4, 0;
+ } else if (.@q == 3 && BaseLevel < 19) {
+ mesq l("You are too weak for my task, please come back later with some levels.");
+ } else if (.@q == 4) {
+ mesq l("You are killing @@ at the cave. Good progress!", getmonsterlink(CaveMaggot));
+ } else if (.@q == 5) {
+ mesq l("Perfect! Here is your reward! (200 xp 150 gp)");
+ getexp 200, 0;
+ set Zeny, Zeny + 150;
+ setq MineQuest_Tycoon, 6, 0;
+ } else if (.@q == 6 && BaseLevel >= 24) {
+ mesq l("That was fast. Do not forget to sell their... parts... for some extra cash.");
+ next;
+ mesq l("Now, please kill 50 @@, Try to collect some lamps in the same time, they could be useful later.", getmonsterlink(CaveSnake));
+ setq MineQuest_Tycoon, 7, 0;
+ } else if (.@q == 6 && BaseLevel < 24) {
+ mesq l("You are too weak for my task, please come back later with some levels.");
+ } else if (.@q == 7) {
+ mesq l("You are killing @@ at the cave.", getmonsterlink(CaveSnake));
+ } else if (.@q == 8) {
+ mesq l("I hope you got a Jean Shorts, but that depends on luck. Anyway, here is your reward. (1000 xp 350 gp)");
+ getexp 1000, 0;
+ set Zeny, Zeny + 350;
+ setq MineQuest_Tycoon, 9, 0;
+ } else if (.@q == 9 && BaseLevel >= 29) {
+ mesq l("If you want to be a real miner friend, do this hard task for me. I will reward you with a @@.", getitemlink(MinerHat));
+ next;
+ mesq l("I'll ask you to kill 100 @@. This will prove your worth. Good luck.", getmonsterlink(RedScorpion));
+ setq MineQuest_Tycoon, 10, 0;
+ } else if (.@q == 9 && BaseLevel < 29) {
+ mesq l("You are too weak for my task, please come back later with some levels.");
+ } else if (.@q == 10) {
+ mesq l("You are killing @@. It's still in progress.", getmonsterlink(RedScorpion));
+ } else if (.@q == 11) {
+ mesq l("Congratulations! Here is your reward, a @@!", getitemlink(MinerHat));
+ mesq l("Mining opearations advance steadly day by day with your help, thanks! Maybe one day, we find a Mana Stone here!");
+ inventoryplace MinerHat, 1;
+ getitem MinerHat, 1;
+ setq MineQuest_Tycoon, 12, 0;
+ } else if (.@q == 12 && BaseLevel >= 34) {
+ mesq l("The last task I could give you is to exterminate @@. They actually stop miners progress on the mine.", getmonsterlink(BlackScorpion));
+ setq MineQuest_Tycoon, 13, 0;
+ } else if (.@q == 12 && BaseLevel < 34) {
+ mesq l("You are too weak for my last task, please come back later with some levels.");
+ } else if (.@q == 13) {
+ mesq l("You are killing @@ at the cave.", getmonsterlink(BlackScorpion));
+ } else if (.@q == 14) {
+ mesq l("Wow! You did it! I do not think anyone else could have done that.");
+ mesq l("Here, take this @@ - you deserve it! And here is 5.000 GP and 8.000 XP.", getitemlink(Ruby));
+ inventoryplace Ruby, 1;
+ getitem Ruby, 1;
+ getexp 8000, 0;
+ set Zeny, Zeny + 5000;
+ setq MineQuest_Tycoon, 15, 0;
+ }
+ next;
+ goto L_PreMenu;
+
+L_NoLevel:
+ mesn;
+ mesq l("Ah, yes... You see, there is just no task I can give to you right now. You are too weak to fight these monsters.");
+ next;
+ mesn;
+ mesq l("come back stronger, and I will give you a task.");
+ next;
+ goto L_Close;
+
+
+
+L_CaveMiner:
+ mes "";
+ mesn;
+ mesq l("Tulimshar miners mainly try to optain gems.");
+ next;
+ mesq l("In this cave we can easily find Coal, Iron ore, and sometimes @@.", getitemlink(Ruby)); // maybe add link for coal and iron ?
+ next;
+ goto L_Menu;
+
+L_Tip:
+ mes "";
+ mesn;
+ mesq l("If you fight Black scorpion or others dangerous monster you should use the 'hit and run' tatic.");
+ next;
+ mesn;
+ mesq l("To do this you need to disable auto move to target in 'yellow bar'.");
+ next;
+ mesn;
+ mesq l("To open yellow Bar you need to right click on your health bar and active status bar, also called yellow bar. Or you can press '8' on numeric keypad.");
+ next;
+ mesn;
+ mesq l("Now you need to fight monster with the maximum range, you can to do this do these steps in order: lock enemy, Attack, hit, move backwards of one tile, hit, ETC.");
+ next;
+ mesn;
+ mesq l("With this tip you will be able to fight strong monsters. It's on Saul's Strategy Guide Against Archwizards.");
+ next;
+ goto L_Menu;
+
+L_Terranite:
+ mes "";
+ mesn;
+ mesq l("Haha, no, I'm not! But we found traces of them.");
+ next;
+ mesn;
+ mesq l("Terranite probably mined part of this mine long time ago.");
+ next;
+ mesn;
+ mesq l("That can explain why we have difficulties to find rare gems here. They probably were already extracted.");
+ next;
+ goto L_Menu;
+
+
+L_Close:
+ close;
+
+
+ function tycoon_add_kills
+ {
+ .@qp=getq(MineQuest_Tycoon);
+ .@kp=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+ setq MineQuest_Tycoon, .@qp, .@kp+1;
+ //message strcharinfo(0), l("Set status @@ with @@ kills", .@qp, .@kp);
+ }
+
+ function tycoon_max_kills
+ {
+ .@qp=getq(MineQuest_Tycoon);
+ setq MineQuest_Tycoon, .@qp+1, 0;
+ //message strcharinfo(0), l("End status @@", .@qp);
+ }
+
+OnKillRatto:
+ .@q=getq(MineQuest_Tycoon);
+ .@k=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+ if (.@q == 1) {
+ if (.@k+1 >= 10) {
+ tycoon_max_kills();
+ message strcharinfo(0), l("All rattos are dead! Go back to Tycoon.");
+ } else {
+ tycoon_add_kills();
+ message strcharinfo(0), l("@@/10 Rattos", .@k+1);
+ }
+ }
+ end;
+OnKillCaveMaggot:
+ .@q=getq(MineQuest_Tycoon);
+ .@k=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+ if (.@q == 4) {
+ if (.@k+1 >= 25) {
+ tycoon_max_kills();
+ message strcharinfo(0), l("All cave maggots are dead! Go back to Tycoon.");
+ } else {
+ tycoon_add_kills();
+ message strcharinfo(0), l("@@/25 Cave Maggots", .@k+1);
+ }
+ } else {
+ if (is_staff())
+ dispbottom "It's working. (T:OKHM)";
+ }
+ end;
+OnKillCaveSnake:
+ .@q=getq(MineQuest_Tycoon);
+ .@k=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+ if (.@q == 7) {
+ if (.@k+1 >= 50) {
+ tycoon_max_kills();
+ message strcharinfo(0), l("All cave snakes are dead! Go back to Tycoon.");
+ } else {
+ tycoon_add_kills();
+ message strcharinfo(0), l("@@/50 Cave Snakes", .@k+1);
+ }
+ }
+ end;
+OnKillRedScorpion:
+ .@q=getq(MineQuest_Tycoon);
+ .@k=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+ if (.@q == 10) {
+ if (.@k+1 >= 100) {
+ tycoon_max_kills();
+ message strcharinfo(0), l("All red scorpions are dead! Go back to Tycoon.");
+ } else {
+ tycoon_add_kills();
+ message strcharinfo(0), l("@@/100 Red Scorpions", .@k+1);
+ }
+ }
+ end;
+OnKillBlackScorpion:
+ .@q=getq(MineQuest_Tycoon);
+ .@k=getq2(MineQuest_Tycoon); // Get number of kills (via getq2)
+ if (.@q == 13) {
+ if (.@k+1 >= 200) {
+ tycoon_max_kills();
+ message strcharinfo(0), l("All black scorpions are dead! Go back to Tycoon.");
+ } else {
+ tycoon_add_kills();
+ message strcharinfo(0), l("@@/1 Black Scorpions", .@k+1);
+ }
+ }
+ end;
+
+OnInit:
+ .@npcId = getnpcid(0, .name$);
+ setunitdata(.@npcId, UDT_HEADTOP, ArtisTankTop);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, BromenalPants);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, MinerHat);
+ setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 19);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 8);
+
+ .sex = G_MALE;
+ .distance = 4;
+
+ // TODO: NPC is not ready
+ disablenpc .name$;
+
+ end;
+}