first add this to NPCtalk
Then go to npcdo and add this
PHP Code:
if (CurrentNPC == 700)
{
SendPacket(General.MyPackets.NPCSay("I am a master of upgrading items. My skills are almost transcendant. I never fail. I have heard of other who can upgrade items, but I also know that they sometimes fail and break their customer's items. I charge a higher fee for my services, but I never dissappoint a customer. What is your desire?"));
SendPacket(General.MyPackets.NPCLink("Upgrade item quality.", 1));
SendPacket(General.MyPackets.NPCLink("Upgrade item level.", 2));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
Then go to npcdo and add this
PHP Code:
if (Current NPC == 200) // your npc id here
} if (Control == 1)
{
SendPacket(General.MyPackets.NPCSay("Well you chose quailty"));
SendPacket(General.MyPackets.NPCLink("Upgrade Headgear quailty", 3));
SendPacket(General.MyPackets.NPCLink("Upgrade necklease quailty", 4));
SendPacket(General.MyPackets.NPCLink(" Upgrade armor quailty", 5));
SendPacket(General.MyPackets.NPCLink("Upgrade weapon quailty", 6));
SendPacket(General.MyPackets.NPCLink("Upgrade ring heavy ring bracelet quailty", 7));
SendPacket(General.MyPackets.NPCLink("Upgrade boots quailty", 8));
SendPacket(General.MyPackets.NPCLink("Upgrade shield", 9));
UppAgree = false;
}
if (Control == 2)
{
SendPacket(General.MyPackets.NPCSay("You chose item level pretty well"));
SendPacket(General.MyPackets.NPCLink("Upgrade HeadGear level", 10));
SendPacket(General.MyPackets.NPCLink("Upgrade necklease level", 11));
SendPacket(General.MyPackets.NPCLink("upgrade armor level", 12));
SendPacket(General.MyPackets.NPCLink("Upgrade weapon level", 13));
SendPacket(General.MyPackets.NPCLink("Upgrade ring heavy ring bracelet level", 14));
SendPacket(General.MyPackets.NPCLink("Upgrade boots level", 15));
SendPacket(General.MyPackets.NPCLink("Upgrade shield level", 16));
UppAgree = false;
if (Control <= 9 && Control >= 3)
{
string TheEquip = "";
if (Control == 3)
TheEquip = MyChar.Equips[1];
if (Control == 4)
TheEquip == MyChar.Equips[2];
if (Control == 5)
TheEquip == MyChar.Equips[3];
if (Control == 6)
TheEquip = MyChar.Equip[4];
if (Control == 7)
TheEquip = MyChar.Equips[6];
if (Contrlo == 8)
TheEquip = MyChar.Equips[8];
if (Control == 9)
TheEquip = MyChar.Equips[5];
byte Pos = 0;
if (Control == 3)
Pos = 1;
if (Control == 4)
Pos = 2;
if (Control == 5)
Pos = 3;
if (Control == 6)
Pos = 4;
if (Control == 7)
Pos = 6;
if (Control == 8)
Pos = 8;
if (Control == 9)
Pos = 5;
string[] Splitter = TheEquip.Split('-');
uint ItemId = uint.Parse(Splitter[0]);
if (!Other.Upgradable(ItemId) || Other.ItemQuality(ItemId) == 9)
return;
byte RequiredDBs = 0;
RequiredDBs = (byte)(Other.ItemInfo(ItemId)[3] / 20);
if (RequiredDBs == 0)
RequiredDBs = 1;
if (Other.ItemQuality(ItemId) == 6)
RequiredDBs += 1;
if (Other.ItemQuality(ItemId) == 7)
RequiredDBs += 1;
if (Other.ItemQuality(ItemId) == 8)
RequiredDBs += 1;
if (!UppAgree)
{
SendPacket(General.MyPackets.NPCSay("It will take " + RequiredDBs + " dragon balls to upgrade it. Do you still want to upgrade?"));
SendPacket(General.MyPackets.NPCLink("Yes", (byte)Control));
SendPacket(General.MyPackets.NPCLink("No, i changed my mind.", 255));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
}
else
{
if (MyChar.InventoryContains(1088000, RequiredDBs))
{
for (int i = 0; i < RequiredDBs; i++)
{
MyChar.RemoveItem(MyChar.ItemNext(1088000));
}
if (Other.ItemQuality(ItemId) < 6)
ItemId = Other.ItemQualityChange(ItemId, 6);
else
ItemId++;
MyChar.GetEquipStats(Pos, true);
MyChar.Equips[Pos] = ItemId.ToString() + "-" + Splitter[1] + "-" + Splitter[2] + "-" + Splitter[3] + "-" + Splitter[4] + "-" + Splitter[5];
MyChar.GetEquipStats(Pos, false);
SendPacket(General.MyPackets.AddItem((long)MyChar.Equips_UIDs[Pos], (int)ItemId, byte.Parse(Splitter[1]), byte.Parse(Splitter[2]), byte.Parse(Splitter[3]), byte.Parse(Splitter[4]), byte.Parse(Splitter[5]), Pos, 100, 100));
}
else
{
SendPacket(General.MyPackets.NPCSay("You don't have enough dragon balls."));
SendPacket(General.MyPackets.NPCLink("I see.", 255));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
}
}
UppAgree = true;
}
if (Control <= 16 && Control >= 10)
{
string TheEquip = "";
if (Control == 10)
TheEquip = MyChar.Equips[1];
if (Control == 11)
TheEquip = MyChar.Equips[2];
if (Control == 12)
TheEquip = MyChar.Equips[3];
if (Control == 13)
TheEquip = MyChar.Equips[4];
if (Control == 14)
TheEquip = MyChar.Equips[6];
if (Control == 15)
TheEquip = MyChar.Equips[8];
if (Control == 16)
TheEquip = MyChar.Equips[5];
byte Pos = 0;
if (Control == 10)
Pos = 1;
if (Control == 11)
Pos = 2;
if (Control == 12)
Pos = 3;
if (Control == 13)
Pos = 4;
if (Control == 14)
Pos = 6;
if (Control == 15)
Pos = 8;
if (Control == 16)
Pos = 5;
string[] Splitter = TheEquip.Split('-');
uint ItemId = uint.Parse(Splitter[0]);
if (!Other.Upgradable(ItemId))
return;
byte RequiredMets = 0;
if (Other.ItemInfo(ItemId)[3] < 120)
{
RequiredMets = (byte)(Other.ItemInfo(ItemId)[3] / 10);
if (RequiredMets == 0)
RequiredMets = 1;
}
if (RequiredMets != 0)
{
if (Other.ItemQuality(ItemId) < 7)
RequiredMets = 2;
if (Other.ItemQuality(ItemId) == 7)
RequiredMets = (byte)(2 + RequiredMets / 5);
if (Other.ItemQuality(ItemId) == 8)
RequiredMets = (byte)(RequiredMets * 2.6);
if (Other.ItemQuality(ItemId) == 9)
RequiredMets = (byte)(RequiredMets * 3.1);
}
if (RequiredMets != 0)
{
if (!UppAgree)
{
SendPacket(General.MyPackets.NPCSay("It will take " + RequiredMets + " meteors to upgrade it. Do you still want to upgrade?"));
SendPacket(General.MyPackets.NPCLink("Yes", (byte)Control));
SendPacket(General.MyPackets.NPCLink("No, i changed my mind.", 255));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
}
else
{
if (MyChar.InventoryContains(1088001, RequiredMets) && MyChar.Level >= Other.ItemInfo(Other.EquipNextLevel(ItemId))[3])
{
ItemId = Other.EquipNextLevel(ItemId);
for (int i = 0; i < RequiredMets; i++)
{
MyChar.RemoveItem(MyChar.ItemNext(1088001));
}
MyChar.GetEquipStats(Pos, true);
MyChar.Equips[Pos] = ItemId.ToString() + "-" + Splitter[1] + "-" + Splitter[2] + "-" + Splitter[3] + "-" + Splitter[4] + "-" + Splitter[5];
MyChar.GetEquipStats(Pos, false);
SendPacket(General.MyPackets.AddItem((long)MyChar.Equips_UIDs[Pos], (int)ItemId, byte.Parse(Splitter[1]), byte.Parse(Splitter[2]), byte.Parse(Splitter[3]), byte.Parse(Splitter[4]), byte.Parse(Splitter[5]), Pos, 100, 100));
SendPacket(General.MyPackets.NPCSay("Your item has been upgraded. Look and behold my marvelous upgrading skill! Isn't it amazing?"));
SendPacket(General.MyPackets.NPCLink("Thanks a lot!", 255));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
}
else
{
SendPacket(General.MyPackets.NPCSay("You don't have enough meteors or you are not able to equip the item after upgrade."));
SendPacket(General.MyPackets.NPCLink("I see.", 255));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
}
UppAgree = false;
}
}
else
{
SendPacket(General.MyPackets.NPCSay("I cannot upgrade your item anymore. It is on too high level."));
SendPacket(General.MyPackets.NPCLink("Damn.", 255));
SendPacket(General.MyPackets.NPCSetFace(30));
SendPacket(General.MyPackets.NPCFinish());
}
UppAgree = true;