summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/item_db.conf26
-rw-r--r--db/re/job_db.conf6
-rw-r--r--npc/017-4/pyndragon.txt123
3 files changed, 155 insertions, 0 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index a25c9cada..d2102bd67 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -9936,6 +9936,9 @@ item_db: (
Id6510: 1
Id6511: 1
}
+ Script: <"
+ bonus bCriticalRate,40;
+ ">
},
{
Id: 6020
@@ -9986,6 +9989,29 @@ item_db: (
">
},
{
+ Id: 6040
+ AegisName: "PynRevolver"
+ Name: "Pyn Revolver"
+ Type: "IT_WEAPON"
+ Buy: 55000
+ Sell: 5200
+ Weight: 760
+ Atk: 160
+ Range: 4
+ Loc: "EQP_HAND_R"
+ WeaponLv: 1
+ EquipLv: 70
+ Subtype: "W_REVOLVER"
+ AllowAmmo: {
+ Id6510: 1
+ Id6511: 1
+ }
+ Script: <"
+ bonus bCriticalRate,-60;
+ bonus bHitRate,-40;
+ ">
+},
+{
Id: 6500
AegisName: "TrainingArrow"
Name: "Training Arrow"
diff --git a/db/re/job_db.conf b/db/re/job_db.conf
index aae848544..021eed101 100644
--- a/db/re/job_db.conf
+++ b/db/re/job_db.conf
@@ -67,6 +67,7 @@ Human: {
TwoHandRod: 65
Shield: 10
Bow: 100
+ Revolver: 136
Rifle: 170
Shotgun: 120
GatlingGun: 40
@@ -121,6 +122,7 @@ Ukar: {
TwoHandRod: 65
Shield: 10
Bow: 100
+ Revolver: 136
Rifle: 170
Shotgun: 120
GatlingGun: 40
@@ -145,6 +147,7 @@ Redy: {
TwoHandRod: 65
Shield: 10
Bow: 100
+ Revolver: 136
Rifle: 170
Shotgun: 120
GatlingGun: 40
@@ -190,6 +193,7 @@ Orc: {
TwoHandRod: 65
Shield: 10
Bow: 100
+ Revolver: 136
Rifle: 170
Shotgun: 120
GatlingGun: 40
@@ -214,6 +218,7 @@ Raijin: {
TwoHandRod: 65
Shield: 10
Bow: 100
+ Revolver: 136
Rifle: 170
Shotgun: 120
GatlingGun: 40
@@ -238,6 +243,7 @@ Tritan: {
TwoHandRod: 65
Shield: 10
Bow: 100
+ Revolver: 136
Rifle: 170
Shotgun: 120
GatlingGun: 40
diff --git a/npc/017-4/pyndragon.txt b/npc/017-4/pyndragon.txt
index 35daebf88..5da5488c0 100644
--- a/npc/017-4/pyndragon.txt
+++ b/npc/017-4/pyndragon.txt
@@ -5,6 +5,129 @@
// Description:
// Forge firearms
017-4,34,23,0 script Pyndragon NPC_PLAYER,{
+ // 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);
+
+ 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), .@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;
+ Zeny = Zeny - .@price;
+ getitem .@prize, 1;
+
+ 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;
+ 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;
+ if (BaseLevel < 60)
+ goto L_TooWeak;
+ else if (BaseLevel < 70)
+ 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 70 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("I don't want anything right now, bye."), L_Close;
+
+L_Info:
+ mes "";
+ mesn;
+ mesq l("There are four basic class:");
+ mesc l("REVOLVERS");
+ mesc l("* The only one hand ranged weapon you'll ever find. Not amazing at all.");
+ mesc l("RIFLES");
+ mesc l("* Huge damage and more criticals, but slow fire rate.");
+ mesc l("GATLING");
+ mesc l("* Shoots like crazy, but deals less damage.");
+ mesc l("SHOTGUNS");
+ mesc l("* Causes splash damage, and are very expensive.");
+ 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 REVOLVER."),
+ l("I want a RIFLE."),
+ l("I want a GATLING."),
+ l("I want a SHOTGUN.");
+ mes "";
+
+ switch (@menu) {
+ case 2:
+ craft_gun( LeadIngot, 6, TitaniumIngot, 6, Coal, 12, PynRevolver, 15000 );
+ goto L_Craft;
+ case 3:
+ craft_gun( LeadIngot, 8, TitaniumIngot, 8, Coal, 15, PynRifle, 15000 );
+ goto L_Craft;
+ case 4:
+ craft_gun( LeadIngot, 8, TitaniumIngot, 8, Coal, 15, PynGatling, 15000 );
+ goto L_Craft;
+ case 5:
+ craft_gun( LeadIngot, 12, TitaniumIngot, 12, Coal, 24, PynShotgun, 60000 );
+ goto L_Craft;
+ }
+ goto L_Menu;
+
+L_Close:
+ closedialog;
+ goodbye;
+ close;
OnInit:
.@npcId = getnpcid(0, .name$);