summaryrefslogtreecommitdiff
path: root/npc/017-4
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/017-4
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/017-4')
-rw-r--r--npc/017-4/_import.txt7
-rw-r--r--npc/017-4/_warps.txt4
-rw-r--r--npc/017-4/pihro.txt116
-rw-r--r--npc/017-4/pyndragon.txt252
-rw-r--r--npc/017-4/refine.txt74
-rw-r--r--npc/017-4/vault.txt20
6 files changed, 473 insertions, 0 deletions
diff --git a/npc/017-4/_import.txt b/npc/017-4/_import.txt
new file mode 100644
index 0000000..b16bdba
--- /dev/null
+++ b/npc/017-4/_import.txt
@@ -0,0 +1,7 @@
+// Map 017-4: Tech-User Forge
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/017-4/_warps.txt",
+"npc/017-4/pihro.txt",
+"npc/017-4/pyndragon.txt",
+"npc/017-4/refine.txt",
+"npc/017-4/vault.txt",
diff --git a/npc/017-4/_warps.txt b/npc/017-4/_warps.txt
new file mode 100644
index 0000000..5447202
--- /dev/null
+++ b/npc/017-4/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 017-4: Tech-User Forge warps
+017-4,27,42,0 warp #017-4_27_42 0,0,017-1,150,88
+017-4,35,42,0 warp #017-4_35_42 0,0,017-1,155,88
diff --git a/npc/017-4/pihro.txt b/npc/017-4/pihro.txt
new file mode 100644
index 0000000..6b5b9ae
--- /dev/null
+++ b/npc/017-4/pihro.txt
@@ -0,0 +1,116 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Forge bullets
+017-4,35,35,0 script Pihro NPC_PLAYER,{
+ // cond_check(ItemID, ItemAmount)
+ // Returns 1 if ID is zero
+ function cond_check {
+ if (getarg(0) == 0)
+ return 1;
+ else
+ return (countitem(getarg(0)) >= getarg(1));
+ }
+
+ // craft_ammo( PrizeItem, Price, Lead Amount, {Elemental Item, Amount, {Elemental Item2, Amount2}} )
+ function craft_ammo {
+ .@prize=getarg(0);
+ .@price=getarg(1);
+ .@base1=LeadIngot;
+ .@amon1=getarg(2);
+ .@base2=getarg(3,0);
+ .@amon2=getarg(4,0);
+ .@base3=getarg(5,0);
+ .@amon3=getarg(6,0);
+
+ .@price=POL_AdjustPrice(.@price);
+
+ mesn;
+ mesq l("Do you want to craft @@? For that I will need:", getitemlink(.@prize));
+ mesc l("@@/@@ @@", countitem(.@base1), .@amon1, getitemlink(.@base1));
+ if (.@amon2 > 0)
+ mesc l("@@/@@ @@", countitem(.@base2), .@amon2, getitemlink(.@base2));
+ if (.@amon3 > 0)
+ mesc l("@@/@@ @@", countitem(.@base3), .@amon3, getitemlink(.@base3));
+ mesc l("@@/@@ GP", format_number(Zeny), .@price);
+ next;
+
+ select
+ l("Yes"),
+ l("No");
+
+ if (@menu == 2)
+ return;
+
+ if (countitem(.@base1) >= .@amon1 &&
+ cond_check(.@base2, .@amon2) &&
+ cond_check(.@base3, .@amon3) &&
+ Zeny >= .@price) {
+ inventoryplace .@prize, 1024;
+ delitem .@base1, .@amon1;
+ if (.@base2 > 0)
+ delitem .@base2, .@amon2;
+ if (.@base3 > 0)
+ delitem .@base3, .@amon3;
+ POL_PlayerMoney(.@price);
+ getitem .@prize, rand2(980, 1024);
+ getexp rand2(980, 1024), rand2(270, 320);
+ Mobpt+=rand2(270, 320);
+
+ mes "";
+ mesn;
+ mesq l("Many thanks! Come back soon.");
+ } else {
+ speech S_FIRST_BLANK_LINE,// | S_LAST_NEXT,
+ l("You don't have enough material, sorry.");
+ }
+ return;
+ }
+ mesn;
+ mesq l("Hello there! I make bullets for the weapons my friend Pyndragon makes.");
+ next;
+
+L_Craft:
+ mesn;
+ mesq l("Some bullets have Elemental Properties, by the way. Now, what will it be?");
+ next;
+ select
+ l("Nothing, sorry."),
+ l("Normal Bullet"),
+ l("Sacred Bullet"),
+ l("Evil Bullet"),
+ l("Explosive ARROW");
+
+ switch (@menu) {
+ case 2:
+ // craft_ammo( PrizeItem, Price, Lead Amount, {Elemental Item, Amount, {Elemental Item2, Amount2}} )
+ craft_ammo(Bullet, 200, 1);
+ goto L_Craft;
+ case 3:
+ craft_ammo(SacredBullet, 200, 1, WhiteFur, 5);
+ goto L_Craft;
+ case 4:
+ craft_ammo(EvilBullet, 200, 1, Bone, 1);
+ goto L_Craft;
+ case 5:
+ craft_ammo(ExplosiveArrow, 300, 1, SulfurPowder, 5, WoodenLog, 3);
+ goto L_Craft;
+ }
+ close;
+
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, Monocle);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, WarlordPlate);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, JeansChaps);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 4);
+
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
diff --git a/npc/017-4/pyndragon.txt b/npc/017-4/pyndragon.txt
new file mode 100644
index 0000000..d112b46
--- /dev/null
+++ b/npc/017-4/pyndragon.txt
@@ -0,0 +1,252 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Forge firearms
+017-4,34,23,0 script Pyndragon NPC_PLAYER,{
+ function explainMelee;
+ // craft_gun( BaseItem1, Amount, BaseItem2, Amount, BaseItem3, Amount, PrizeItem, Price )
+ function craft_gun {
+ .@base1=getarg(0);
+ .@amon1=getarg(1);
+ .@base2=getarg(2);
+ .@amon2=getarg(3);
+ .@base3=getarg(4);
+ .@amon3=getarg(5);
+ .@prize=getarg(6);
+ .@price=getarg(7);
+
+ .@price=POL_AdjustPrice(.@price);
+
+ mesn;
+ mesq l("Do you want to craft @@? For that I will need:", getitemlink(.@prize));
+ mesc l("@@/@@ @@", countitem(.@base1), .@amon1, getitemlink(.@base1));
+ mesc l("@@/@@ @@", countitem(.@base2), .@amon2, getitemlink(.@base2));
+ mesc l("@@/@@ @@", countitem(.@base3), .@amon3, getitemlink(.@base3));
+ mesc l("@@/@@ GP", format_number(Zeny), fnum(.@price));
+ next;
+
+ select
+ l("Yes"),
+ l("No");
+
+ if (@menu == 2)
+ return;
+
+ if (countitem(.@base1) >= .@amon1 &&
+ countitem(.@base2) >= .@amon2 &&
+ countitem(.@base3) >= .@amon3 &&
+ Zeny >= .@price) {
+ inventoryplace .@prize, 1;
+ delitem .@base1, .@amon1;
+ delitem .@base2, .@amon2;
+ delitem .@base3, .@amon3;
+ POL_PlayerMoney(.@price);
+ //getitem .@prize, 1;
+ CsysNpcCraft(.@prize, IOPT_CRITDMG, rand2(20, 30), IOPT_DOUBLEATTACK, rand2(5, 15));
+
+ mes "";
+ mesn;
+ mesq l("Many thanks! Come back soon.");
+ } else {
+ speech S_FIRST_BLANK_LINE,// | S_LAST_NEXT,
+ l("You don't have enough material, sorry.");
+ }
+ return;
+ }
+
+ .@q=getq(HurnscaldQuest_LOFPass);
+ mesn;
+ if (is_night())
+ mesq l("Good @@. My name is @@ and I make @@.", l("evening"), .name$, l("firearms"));
+ else
+ mesq l("Good @@. My name is @@ and I make @@.", l("day"), .name$, l("firearms"));
+ next;
+ mesn strcharinfo(0);
+ mesq l("Firearms? What would that be? @@", "%%4");
+ next;
+ mesn;
+ mesq l("Oh, just an empty staff with black powder inside it. Which explodes. And then kills monsters.");
+ tutmes l("%s makes specialized weapons for high level players. If you tweak with Nicholas, in Hurnscald, the weapon options, you can get really powerful.", .name$);
+ next;
+ if (.@q == 1) goto L_LOFBOT;
+ mes "";
+ if (BaseLevel < 50)
+ goto L_TooWeak;
+ else if (BaseLevel < 60)
+ goto L_Weak;
+ goto L_Menu;
+
+L_TooWeak:
+ mesn;
+ mesq l("These weapons are only for masters, so you must get levels before being able to use them.");
+ close;
+
+L_Weak:
+ mesn;
+ mesq l("You need level 60 to use these guns, but if you want to start collecting materials, you're allowed to.");
+ next;
+ goto L_Menu;
+
+L_Menu:
+ menu
+ l("I would like some information"), L_Info,
+ l("I want a gun!"), L_Craft,
+ l("Do you have non-ranged weapons?"), L_CraftMelee,
+ l("I don't want anything right now, bye."), L_Close;
+
+L_Info:
+ mes "";
+ mesn;
+ mesq l("There are four basic class:");
+ mesc l("SHORT GUNSTAFF");//aka revolver
+ mesc l("* The only one hand ranged weapon you'll ever find!");
+ mes l(" I cut it in half, and to fix shooting speed, I added some extra cogs.");
+ mes l(" It didn't got too much lighter, and it got really weak compared to a bow.");
+ mesc l("POWERFUL GUNSTAFF");
+ mesc l("* Huge damage and more criticals, but slow fire rate.");
+ mes l(" The standard gunstaff! It is way stronger than a bow!");
+ mes l(" Oh, and it comes with added shooting range, but it is slow as hell to reload.");
+ mesc l("RAPID GUNSTAFF");
+ mesc l("* Low damage, highest attack speed from all.");
+ mes l(" One have lots of powder to attack non-stop, but oh god that is heavy.");
+ mes l(" It is also much weaker and less precise than a bow. But it is so fun using...");
+ mesc l("EXPLOSIVE GUNSTAFF");
+ mesc l("* Causes splash damage, and are very expensive.");
+ mes l(" You know, I wanted to make the powder explode when hitting!");
+ mes l(" It is the same as a bow, including in penalty. But it deals splash damage!");
+ next;
+ mesn;
+ mesq l("Select carefully which weapon you want, so there are no regrets.");
+ next;
+ goto L_Menu;
+
+L_Craft:
+ select
+ l("I changed my mind."),
+ l("I want a SHORT GUNSTAFF."),
+ l("I want a POWERFUL GUNSTAFF."),
+ l("I want a RAPID GUNSTAFF."),
+ l("I want an EXPLOSIVE GUNSTAFF."),
+ rif(false, l("I want something more magical."));
+ mes "";
+
+ switch (@menu) {
+ case 2:
+ craft_gun( LeadIngot, 4, TitaniumIngot, 5, Coal, 11, PynRevolver, 3000 );
+ goto L_Craft;
+ case 3:
+ craft_gun( LeadIngot, 6, TitaniumIngot, 7, Coal, 14, PynRifle, 3000 );
+ goto L_Craft;
+ case 4:
+ craft_gun( LeadIngot, 6, TitaniumIngot, 7, Coal, 14, PynGatling, 4000 );
+ goto L_Craft;
+ case 5:
+ craft_gun( LeadIngot, 9, TitaniumIngot, 10, Coal, 16, PynShotgun, 6000 );
+ goto L_Craft;
+ case 6:
+ mesn;
+ mesq l("I suppose I can make you a %s. It sometimes casts magic skills upon your foes. Well, seldomly, but it also deals more damage than normal wands.", getitemlink(PynScepter));
+ next;
+ craft_gun( LeadIngot, 10, TitaniumIngot, 12, Coal, 24, PynScepter, 24000 );
+ goto L_Craft;
+ }
+ goto L_Menu;
+
+
+L_CraftMelee:
+ select
+ l("I changed my mind."),
+ l("Which melee you craft?"),
+ l("I want a PORTABLE LIGHTSABER."),
+ l("I want a POWERFUL LIGHTSABER."),
+ rif(getskilllv(TF_STEAL) && false, l("I want a KUNAI.")),
+ l("I want a WHIP.");
+ mes "";
+
+ switch (@menu) {
+ case 2:
+ explainMelee();
+ goto L_CraftMelee;
+ case 3:
+ craft_gun( EverburnPowder, 30, TitaniumIngot, 7, LeadIngot, 4, Lightsaber, 25000 );
+ goto L_CraftMelee;
+ case 4:
+ craft_gun( EverburnPowder, 30, TitaniumIngot, 7, LeadIngot, 4, PowerfulLightsaber, 25000 );
+ goto L_CraftMelee;
+ case 5:
+ craft_gun( GoldIngot, 3, HeroCoin, 500, LOFCoin, 4, PynKunai, 25000 );
+ goto L_CraftMelee;
+ case 6:
+ craft_gun( LOFCoin, 3, TitaniumIngot, 5, LeadIngot, 3, PynWhip, 22000 );
+ goto L_CraftMelee;
+ }
+ goto L_Menu;
+
+
+L_Close:
+ closedialog;
+ goodbye;
+ close;
+
+// Takes priority over craft
+L_LOFBOT:
+ select
+ l("A friend of yours called LOF BOT asked for a coin..."),
+ l("Sorry, I'm in hurry.");
+ mes "";
+ if (@menu == 2) close;
+ mesn;
+ mesq l("Ah, so LOF Bot wants a souvenir after all!");
+ next;
+ mesn;
+ mesq l("Everyone loves the Land of Fire, it is impossible to not love it.");
+ next;
+ inventoryplace LOFCoin, 1;
+ mesn;
+ mesq l("Here, please take this to them. Tell them they are welcome here anytime! %%2");
+ getitem LOFCoin, 1;
+ setq HurnscaldQuest_LOFPass, 2;
+ close;
+
+function explainMelee {
+ mesc l("PORTABLE LIGHTSABER");
+ mesc l("* Very quick and can be used in a single hand.");
+ mesc l("POWERFUL LIGHTSABER");
+ mesc l("* Very quick, two handed, and evil.");
+ mes "";
+ mes l(" Actually, Lalica cursed one of my firestaves and it got a mind of its own D:");
+ mes l(" Then I found out that I could set the staff in flames using Everburn Powder!");
+ mes l(" It was quite a challenge, and I still need Lalica to keep curse them.");
+ mes l(" But the result is a fast weapon which is also powerful.");
+ mes "";
+ next;
+ mesc l("KUNAI");
+ mesc l("* More for bandits than assassins or ninjas.");
+ mes l(" See, I was lazy and there were only short knives around... So I made a Kunai.");
+ mes l(" It can steal items or collect drops on the floor randomly. Also improves your evasion.");
+ mes l(" It is not that amazing, though. I will trade with you for more useful items.");
+ mes "";
+ mesc l("WHIP");
+ mesc l("* Has non-cumulative area of effect damage.");
+ mes l(" A fair all-rounder weapon; Stronger than you would expect and not so clumsy.");
+ mes l(" But its splash damage does not stack, so be careful when adding options.");
+ next;
+ return;
+}
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, WarlordHelmet);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, GoldenWarlordPlate);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, BromenalPants);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 4);
+
+ .sex=G_MALE;
+ .distance=5;
+ end;
+
+}
diff --git a/npc/017-4/refine.txt b/npc/017-4/refine.txt
new file mode 100644
index 0000000..2bed9ce
--- /dev/null
+++ b/npc/017-4/refine.txt
@@ -0,0 +1,74 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Refine and Repair broken equipment.
+017-4,38,35,0 script Fortiun NPC_FORTIUN,{
+ showavatar NPC_FORTIUN;
+ @menu=0;
+ do
+ {
+ refineMaster();
+ } while (1);
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
+017-4,23,23,0 script Fusus NPC_FUSUS,{
+ showavatar NPC_FUSUS;
+ select
+ l("Repair items"),
+ l("Compact forge stones");
+ mes "";
+ if (@menu == 2)
+ goto L_Fusus;
+ @menu=0;
+ do
+ {
+ repairMaster();
+ } while (getbrokencount() >= 0);
+
+L_Fusus:
+ inventoryplace Iten, 1;
+ mesn;
+ mesq l("I can fuse an @@ and 20 @@, besides @@ GP, into 3~5 @@.", getitemlink(CopperIngot), getitemlink(SilkCocoon), 500, getitemlink(Wurtzite));
+ mesc l("5 @@ can be fused in a @@", getitemlink(Wurtzite), getitemlink(Graphene));
+ mesc l("5 @@ can be fused in a @@", getitemlink(Graphene), getitemlink(Arcanum));
+ select
+ rif(Zeny >= 500, l("I want the Wurtzite")),
+ rif(countitem(Wurtzite) >= 5, l("I want Graphene")),
+ rif(countitem(Graphene) >= 5, l("I want Arcanum")),
+ l("Do nothing");
+ mes "";
+ switch (@menu) {
+ case 4:
+ close;
+ case 1:
+ if (!transcheck(CopperIngot, 1, SilkCocoon, 20))
+ close;
+ Zeny -= 500;
+ getitem Wurtzite, any(3,3,4,4,4,5); // 3: ~33%. 4: =50%. 5: ~17%. AVG: 3.8
+ break;
+ case 2:
+ delitem Wurtzite, 5;
+ getitem Graphene, 1;
+ break;
+ case 3:
+ delitem Graphene, 5;
+ getitem Arcanum, 1;
+ break;
+ }
+ mesc l("Done!"), 2;
+ next;
+ goto L_Fusus;
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
diff --git a/npc/017-4/vault.txt b/npc/017-4/vault.txt
new file mode 100644
index 0000000..0301190
--- /dev/null
+++ b/npc/017-4/vault.txt
@@ -0,0 +1,20 @@
+// TMW2/LoF Script.
+// Author:
+// Jesusalva
+// Notes:
+// Based on BenB idea.
+
+017-4,20,41,0 script Vault#0174 NPC_VAULT,{
+ LootableVault(2, 5, "0174");
+ close;
+
+OnInit:
+ .distance=3;
+ end;
+
+OnClock0201:
+OnClock1418:
+ $VAULT_0174+=rand2(27,40);
+ end;
+}
+