summaryrefslogtreecommitdiff
path: root/npc/003-8
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/003-8
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/003-8')
-rw-r--r--npc/003-8/_import.txt6
-rw-r--r--npc/003-8/_warps.txt4
-rw-r--r--npc/003-8/craft.txt42
-rw-r--r--npc/003-8/intensebeard.txt273
-rw-r--r--npc/003-8/jhedia.txt197
5 files changed, 522 insertions, 0 deletions
diff --git a/npc/003-8/_import.txt b/npc/003-8/_import.txt
new file mode 100644
index 0000000..e43b017
--- /dev/null
+++ b/npc/003-8/_import.txt
@@ -0,0 +1,6 @@
+// Map 003-8: Terranite Forge
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/003-8/_warps.txt",
+"npc/003-8/craft.txt",
+"npc/003-8/intensebeard.txt",
+"npc/003-8/jhedia.txt",
diff --git a/npc/003-8/_warps.txt b/npc/003-8/_warps.txt
new file mode 100644
index 0000000..7df19cb
--- /dev/null
+++ b/npc/003-8/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 003-8: Terranite Forge warps
+003-8,31,44,0 warp #003-8_31_44 0,0,003-1,110,101
+003-8,41,27,0 warp #003-8_41_27 0,0,003-1,115,89
diff --git a/npc/003-8/craft.txt b/npc/003-8/craft.txt
new file mode 100644
index 0000000..f5bd7a4
--- /dev/null
+++ b/npc/003-8/craft.txt
@@ -0,0 +1,42 @@
+// TMW2: Moubootaur Legends scripts.
+// Author:
+// Jesusalva
+// Description:
+// Rentable Craft Bench
+
+003-8,35,30,0 script Crafting Table NPC_NO_SPRITE,{
+ do {
+ mesc l("What will you craft today?");
+ mesc l("It costs 600 GP to use."), 1;
+ if (Zeny < 600)
+ close;
+
+ if (SmithSystem(CRAFT_PLAYER)) {
+ if (Zeny < 600) {
+ mesc l("WARNING, you have been detected cheating and thus, violating Tulimshar Anti-Theft Policy."), 1;
+ mesc l("You were jailed and now need a GM to get you out of there."), 1;
+ logmes "WARNING, "+strcharinfo(0)+" found out cheating, only had "+Zeny+"/600 GP for craft table. Jailed.", LOGMES_ATCOMMAND;
+ consoleinfo("%s jailed - no money when crafting.", strcharinfo(0));
+ atcommand("@jail "+strcharinfo(0));
+ // Apply a more realistic penalty
+ Zeny=0;
+ CRAFTSYS_CURRENT=0;
+ close;
+ }
+ Zeny-=600;
+ mesc l("Success!"), 3;
+ } else {
+ mesc l("That didn't work!"), 1;
+ }
+ next;
+ mesc l("Try again?");
+ } while (askyesno() == ASK_YES);
+
+ close;
+
+OnInit:
+ .distance=3;
+ end;
+}
+
+
diff --git a/npc/003-8/intensebeard.txt b/npc/003-8/intensebeard.txt
new file mode 100644
index 0000000..8c3a08f
--- /dev/null
+++ b/npc/003-8/intensebeard.txt
@@ -0,0 +1,273 @@
+// TMW2 Script
+// Author:
+// Jesusalva
+// Description:
+// Intense Beard is the crafting master
+
+003-8,27,42,4 script Intense Beard NPC_HUMAN_M_ARTIS,{
+ function IntenseBeardTutorial;
+ if (BaseLevel < 18)
+ goto L_SemNivel;
+ if (!CRAFTQUEST)
+ goto L_SemQuest;
+ if (!getskilllv(TMW2_CRAFT))
+ goto L_Learn;
+ if (!countitem(RecipeBook) && !countitem(JesusalvaGrimorium))
+ goto L_SemLivro;
+
+ mesn;
+ mesq l("Hello my friend! I see you've brought your @@ with you this time!", getitemlink(RecipeBook));
+ next;
+ mesn;
+ mesq l("Let's learn new recipes! Do you wanna?");
+ mesc l("Bonus recipes must be enabled with @@ after learned!", b("@ucp"));
+ next;
+ .@bool=false;
+ do {
+ csysGUI_Report(.@bool);
+ mesc l("Learn what?");
+ mes "";
+ .@opt$="Nothing";
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_BASE);
+
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_ATK);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_DEF);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_ACC);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_EVD);
+
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_REGEN);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_SPEED);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_DOUBLE);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_MAXPC);
+
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_SCRESIST);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_SCINFLICT);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_MANAUSE);
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_BOSSATK);
+
+ .@opt$+=":"+csysGUI_OptLearnMenu(CRGROUP_FINAL);
+
+ .@opt$+=":I would like a tutorial";
+
+ select (.@opt$);
+ mes "";
+ switch (@menu) {
+ case 1:
+ break;
+
+ case 2:
+ if (csysGUI_RaiseOpt(CRGROUP_BASE))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+
+ case 3:
+ if (csysGUI_RaiseOpt(CRGROUP_ATK))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 4:
+ if (csysGUI_RaiseOpt(CRGROUP_DEF))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 5:
+ if (csysGUI_RaiseOpt(CRGROUP_ACC))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 6:
+ if (csysGUI_RaiseOpt(CRGROUP_EVD))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+
+ case 7:
+ if (csysGUI_RaiseOpt(CRGROUP_REGEN))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 8:
+ if (csysGUI_RaiseOpt(CRGROUP_SPEED))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 9:
+ if (csysGUI_RaiseOpt(CRGROUP_DOUBLE))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 10:
+ if (csysGUI_RaiseOpt(CRGROUP_MAXPC))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+
+ case 11:
+ if (csysGUI_RaiseOpt(CRGROUP_SCRESIST))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 12:
+ if (csysGUI_RaiseOpt(CRGROUP_SCINFLICT))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 13:
+ if (csysGUI_RaiseOpt(CRGROUP_MANAUSE))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ case 14:
+ if (csysGUI_RaiseOpt(CRGROUP_BOSSATK))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+
+ case 15:
+ if (csysGUI_RaiseOpt(CRGROUP_FINAL))
+ mesc l("Success!"), 3;
+ else
+ mesc l("Not enough Monster Points!"), 1;
+ break;
+ default:
+ IntenseBeardTutorial();
+ break;
+ }
+
+ // Update boolean
+ if (!.@bool)
+ .@bool=true;
+ } while (@menu != 1);
+ close;
+
+L_SemNivel:
+ mesn;
+ mesq l("Please don't disturb me, I'm busy crafting my own customized power mega blaster weapon. I just keep failing to apply +100% exp gain bonus on it!");
+ close;
+
+L_SemLivro:
+ mesn;
+ mesq l("Heya, noob. Where is your @@? Are you really so noob to have forgot such important book?!", getitemlink(RecipeBook));
+ next;
+ mesn;
+ mesq l("That's too bad, because I could teach you some amazing craft skills! This will need to wait another day, I guess. Oh well.");
+ close;
+
+L_SemQuest:
+ mesn;
+ mesq l("Heya, noob. Where is your @@? Are you really so noob to have forgot such important book?!", getitemlink(RecipeBook));
+ next;
+ mesn strcharinfo(0);
+ mesc l("Was I supposed to have one? How should I reply?");
+ mes "";
+ select
+ l("Erm... I don't have a recipe book."),
+ l("That's nice, but... I don't have a recipe book."),
+ l("Pardon me, what is a recipe book?");
+ mes "";
+ mesn;
+ mesq l("WHAT? Have you not gained one at birth? That's absurd!");
+ next;
+ select
+ l("Erm... I don't know my parents."),
+ l("Maybe, but... I don't know my parents."),
+ l("Pardon me, I don't remember my parents.");
+ mes "";
+ mesn;
+ mesq l("WHAT? That's twice absurd! Now you'll say that you were found stranded on a desert island without equipment and can't remember anything but your own name!");
+ next;
+ select
+ l("Erm... You're right."),
+ l("Well... You're right."),
+ l("How did you guess that?");
+ mes "";
+ mesn;
+ mesq l("... ... ...");
+ next;
+ mesn;
+ mesq l("...Okay, this is not fun anymore.");
+ next;
+ mesn;
+ mesq l("Here, you can have this spare one. Hahah! Crafting is an art, and I help teaching it. Just be sure to don't lose it, you will NEVER get another copy EVER again, was I clear?!");
+ next;
+ mesn;
+ mesq l("While we're at that, do you know how to craft? No? First, you'll need a Cauldron, in case you've rented a house. Otherwise, you can rent a work table on this Forge.");
+ next;
+ mesn;
+ mesq l("You need to read this recipe. Without the essential crafting skill you won't go very far. There will be no bonuses on the items you craft because you are not a craftsman.");
+ // Obtain a blueprint and a recipe book
+ inventoryplace EquipmentBlueprintA, 1, RecipeBook, 1;
+ getitem EquipmentBlueprintA, 1;
+ getitem RecipeBook, 1;
+ CRAFTQUEST=1;
+ next;
+
+L_Learn:
+ mesn;
+ mesq l("I see you don't know how to craft. Do you want me to teach the basic for you? I'll charge 1000 GP.");
+ if (Zeny < 1000)
+ close;
+ next;
+ if (askyesno() == ASK_YES) {
+ // Pay the money
+ Zeny-=1000;
+
+ // Give you the craft skill itself
+ skill TMW2_CRAFT, 1, 0;
+
+ // We should aid you getting basic skills - for free!
+ if (!CRAFTSYS[CRGROUP_BASE])
+ CRAFTSYS[CRGROUP_BASE]+=1;
+ if (!CRAFTSYS_CURRENT)
+ CRAFTSYS_CURRENT=CRAFTSYS_CURRENT|CRGROUP_BASE;
+
+ mesn;
+ mesq l("There, now you can not only craft items, but craft AWESOME ITEMS!");
+
+ RECIPES_EQUIPMENT[CraftDagger]=true;
+ mesc l("You've also learned how to craft Daggers! It serves solely for training purposes. You get crafting points for every 40 levels crafted on the item.");
+ }
+ close;
+
+function IntenseBeardTutorial {
+ mesn;
+ mesq l("Well, first of, you'll need an @@ and an Equipment Recipe.", getitemlink(RecipeBook));
+ next;
+ mesn;
+ mesq l("You can craft items in forges. You can use it on your house, or within this forge for a tax.");
+ next;
+ mesn;
+ mesq l("That will help you to make your very first first craft! Remember to use @@ to change which bonuses can be applied to your craft items.", b("@ucp"));
+ next;
+ mesn;
+ mesq l("I can teach you these bonuses, but more powerful bonuses require more skill to learn... And I don't know anyone who could improve your crafting skill...");
+ next;
+ mesn;
+ mesq l("...The ones who know a lot are dwarves, but they don't live here - they live with elves, it seems.");
+ next;
+ return;
+}
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ npcsit;
+ end;
+
+}
+
+
diff --git a/npc/003-8/jhedia.txt b/npc/003-8/jhedia.txt
new file mode 100644
index 0000000..a9d09fe
--- /dev/null
+++ b/npc/003-8/jhedia.txt
@@ -0,0 +1,197 @@
+// TMW2 scripts.
+// Author:
+// Crazyfefe
+// Saulc
+// Jesusalva
+// Description:
+// Jhedia takes care of Tulimshar forge and makes ingots
+//.@karim = getq(Karim_Quest);
+
+003-8,28,30,0 script Jhedia NPC_ELVEN_FEMALE,{
+ goto L_Menu;
+
+ // ingot_create( BaseItem, PrizeItem, Amount, Amount_Coal, Price )
+ function ingot_create {
+ .@basei=getarg(0);
+ .@prize=getarg(1);
+ .@oream=getarg(2);
+ .@coalm=getarg(3);
+ .@price=getarg(4);
+
+ // Adjust price
+ .@price=POL_AdjustPrice(.@price);
+
+ mesn;
+ mesq l("Do you want to craft @@? For that I will need @@ @@, @@ @@ and @@ gp.",
+ getitemlink(.@prize), .@oream, getitemlink(.@basei), .@coalm, getitemlink(Coal), .@price);
+
+ askyesno();
+ mes "";
+
+ if (@menu == ASK_NO) goto L_Menu;
+
+ mesn;
+ mesq l("How many ingots do you want to make?");
+ input .@amount;
+
+ if (.@amount < 1)
+ close;
+
+ if (countitem(.@basei) >= .@amount * .@oream && countitem(Coal) >= .@amount * .@coalm && Zeny >= .@price * .@amount) {
+ inventoryplace .@prize, .@amount;
+ delitem .@basei, .@amount * .@oream;
+ delitem Coal, .@amount * .@coalm;
+ POL_PlayerMoney(.@amount * .@price);
+ getitem .@prize, .@amount;
+ getexp (JobLevel+.@oream+.@coalm)*.@amount, .@amount;
+
+ mes "";
+ mesn;
+ mesq l("Many thanks! Come back soon.");
+ close;
+ }
+
+ speech S_FIRST_BLANK_LINE,// | S_LAST_NEXT,
+ l("You don't have enough material, sorry.");
+ close;
+
+ }
+
+L_Menu:
+ mesn;
+ mesq l("Hello! I am @@, and I take care of Tulimshar forge. I usually make ingots from various materials. So, what do you want today?", .name$);
+ next;
+ select
+ l("Iron Ingot"),
+ l("Copper Ingot"),
+ l("Tin Ingot"),
+ l("Lead Ingot"),
+ l("Titanium Ingot"),
+ rif(BaseLevel >= 60, l("Iridium Ingot")),
+ rif(BaseLevel >= 60, l("Platinum Ingot")),
+ l("Silver Ingot"),
+ l("Gold Ingot"),
+ l("Gold Pieces"),
+ rif(BaseLevel >= 70, l("Terranite Ingot")),
+ l("Nothing, thanks.");
+
+ // ingot_create(Ore, Ingot, Nº of Ore, Nº of Coal, Price);
+ switch (@menu) {
+ case 1:
+ ingot_create(IronOre, IronIngot, 6, 9, 740);
+ break;
+ case 2:
+ ingot_create(CopperOre, CopperIngot, 4, 7, 750);
+ break;
+ case 3:
+ ingot_create(TinOre, TinIngot, 4, 9, 750);
+ break;
+ case 4:
+ ingot_create(LeadOre, LeadIngot, 4, 1, 760);
+ break;
+ case 5:
+ ingot_create(TitaniumOre, TitaniumIngot, 4, 9, 800);
+ break;
+ case 6:
+ ingot_create(IridiumOre, IridiumIngot, 4, 10, 1100);
+ break;
+ case 7:
+ ingot_create(PlatinumOre, PlatinumIngot, 3, 10, 1650);
+ break;
+ case 8:
+ ingot_create(SilverOre, SilverIngot, 3, 7, 650);
+ break;
+ case 9:
+ ingot_create(GoldOre, GoldIngot, 3, 9, 850);
+ break;
+ case 10:
+ ingot_create(GoldOre, GoldPieces, 1, 20, 1100);
+ break;
+ case 11:
+ ingot_create(TerraniteOre, TerraniteIngot, 10, 20, 2000);
+ break;
+ default:
+ goto L_Close;
+ break;
+ }
+
+L_Close:
+ tutmes l("You can also obtain ingots by melting down equipment. The Meltdown forge is in Nivalis, very far from Tulimshar."), l("Protip"), false;
+ if (BaseLevel < 20)
+ tutmes l("You cannot visit Nivalis before obtaining level 20."), l("Note"), false;
+ closedialog;
+ goodbye;
+ close;
+
+OnTimer1000:
+ domovestep;
+
+OnInit:
+ initpath "move", 28, 30,//C
+ "dir", DOWN, 0,
+ "wait", 70, 0,
+ "move", 35, 28,//D
+ "dir", DOWN, 0,
+ "wait", 10, 0,
+ "move", 30, 29,//B
+ "dir", UP, 0,
+ "wait", 4, 0,
+ "move", 36, 36,//H
+ "dir", LEFT, 0,
+ "wait", 2, 0,
+ "move", 27, 29,//A
+ "dir", UP, 0,
+ "wait", 10, 0,
+ "move", 30, 34,//K
+ "dir", UP, 0,
+ "wait", 13, 0,
+ "move", 27, 29,//A
+ "dir", UP, 0,
+ "wait", 14, 0,
+ "move", 39, 31,//G
+ "dir", UP, 0,
+ "wait", 25, 0,
+ "move", 30, 29,//B
+ "dir", UP, 0,
+ "wait", 11, 0,
+ "move", 26, 42,//M
+ "dir", UP, 0,
+ "wait", 8, 0,
+ "move", 30, 29,//B
+ "dir", UP, 0,
+ "wait", 7, 0,
+ "move", 39, 36,//I
+ "dir", RIGHT, 0,
+ "wait", 2, 0,
+ "move", 35, 31,//F
+ "dir", UP, 0,
+ "wait", 1, 0,
+ "move", 27, 29,//A
+ "dir", UP, 0,
+ "wait", 15, 0,
+ "move", 29, 38,//L
+ "dir", DOWN, 0,
+ "wait", 21, 0,
+ "move", 30, 29,//B
+ "dir", UP, 0,
+ "wait", 10, 0,
+ "move", 39, 28,//E
+ "dir", DOWN, 0,
+ "wait", 13, 0,
+ "move", 28, 34,//J
+ "dir", UP, 0,
+ "wait", 10, 0,
+ "move", 30, 29,//B
+ "dir", UP, 0,
+ "wait", 1, 0,
+ "move", 29, 42,//N
+ "dir", UP, 0,
+ "wait", 16, 0,
+ "move", 27, 29,//A
+ "dir", UP, 0,
+ "wait", 6, 0;
+
+ initialmove;
+ initnpctimer;
+ .distance = 5;
+}