Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Redux.Packets.Game;
namespace Redux.Npcs
{
/// <summary>
/// Handles NPC usage for Godly Artisan
/// </summary>
public class NPC_10065 : INpc
{
public NPC_10065(Game_Server.Player _client)
: base(_client)
{
ID = 10065;
Face = 54;
}
public override void Run(Game_Server.Player _client, ushort _linkback)
{
Responses = new List<NpcDialogPacket>();
AddAvatar();
var chance = 100;
switch (_linkback)
{
case 0:
AddText("Hello , did you knew that an socketed equipment is better than one without sockets?");
AddText("It costs DragonBalls or ToughDrills/SratDrills depending on the item.");
AddOption("Socket my weapon", 1);
AddOption("Socket my gears", 3);
AddOption("No. I like it this way.", 255);
break;
case 1:
AddText("Are you really sure you want to make the socket?Last chance to change your mind!");
AddOption("Yes, I am positive about this!", 2);
AddOption("No. I like it this way.", 255);
break;
case 2:
var weapon = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponR);
if (_client.HasItem(1088000) && weapon != null && weapon.Gem1 == 0)
{
weapon.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(weapon));
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1088000, 5) && weapon != null && weapon.Gem1 != 0 && weapon.Gem2 == 0)
{
weapon.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(weapon));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("You don't have enough DragonBalls or your weapon is already socketed!");
AddOption("Ok! .", 255);
}
break;
case 3:
AddText("It costs 12 DragonBalls for the first socket and 7 StarDrills for second.If you consider yourself lucky try ToughDrill! ");
AddOption("Make the first socket ", 4);
AddOption("Make the second socket ", 5);
AddOption("No. I like it this way.", 255);
break;
case 4:
AddText("Choose the equipment you want to socket from the list below. ");
AddOption("Helmet/Earrings/TaoCap ", 11);
AddOption("Ring/Bracelet ", 12);
AddOption("Necklace/Bag ", 13);
AddOption("Boots ", 14);
AddOption("Armor ", 15);
AddOption("Shield ", 16);
AddOption("I changed my mind. ", 255);
break;
#region 1st socket
case 11:
var head = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Helmet);
if (_client.HasItem(1088000, 12) && head != null && head.Gem1 == 0 )
{
head.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(head));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
break;
case 12:
var ring = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Ring);
if (_client.HasItem(1088000, 12) && ring != null && ring.Gem1 == 0)
{
ring.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(ring));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
break;
case 13:
var necklace = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Necklace);
if (_client.HasItem(1088000, 12) && necklace != null && necklace.Gem1 == 0)
{
necklace.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(necklace));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
break;
case 14:
var boots = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Boots);
if (_client.HasItem(1088000, 12) && boots != null && boots.Gem1 == 0)
{
boots.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(boots));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
break;
case 15:
var armor = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Armor);
if (_client.HasItem(1088000, 12) && armor != null && armor.Gem1 == 0)
{
armor.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(armor));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
break;
case 16:
var shield = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponL);
if (_client.HasItem(1088000, 12) && shield != null && shield.Gem1 == 0)
{
shield.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(shield));
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
_client.DeleteItem(1088000);
AddText("There you go!");
AddOption("Thanks!", 255);
}
break;
#endregion
case 5:
AddText("You can make for 100% success reate with 7 StarDrills or you can try your luck with 1 ToughDrill! ");
AddOption("Use 7 StarDrills ", 17);
AddOption("Use 1 ToughDrill ", 18);
AddOption("No. I like it this way.", 255);
break;
case 17:
AddText("Choose the equipment you want to socket from the list below. ");
AddOption("Helmet/Earrings/TaoCap ", 21);
AddOption("Ring/Bracelet ", 22);
AddOption("Necklace/Bag ", 23);
AddOption("Boots ", 24);
AddOption("Armor ", 25);
AddOption("Shield ", 26);
AddOption("I changed my mind. ", 255);
break;
#region 2nd socket stardrill
case 21:
var head2 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Helmet);
if (_client.HasItem(1200006, 7) && head2 != null && head2.Gem1 != 0 && head2.Gem2 == 0)
{
head2.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(head2));
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("Seems like you don't have any StarDrills.");
AddOption("Ok! .", 255);
}
break;
case 22:
var ring2 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Ring);
if (_client.HasItem(1200006, 7) && ring2 != null && ring2.Gem1 != 0 && ring2.Gem2 == 0)
{
ring2.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(ring2));
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("Seems like you don't have any StarDrills.");
AddOption("Ok! .", 255);
}
break;
case 23:
var necklace2 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Necklace);
if (_client.HasItem(1200006, 7) && necklace2 != null && necklace2.Gem1 != 0 && necklace2.Gem2 == 0)
{
necklace2.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(necklace2));
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("Seems like you don't have any StarDrills.");
AddOption("Ok! .", 255);
}
break;
case 24:
var boots2 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Boots);
if (_client.HasItem(1200006, 7) && boots2 != null && boots2.Gem1 != 0 && boots2.Gem2 == 0)
{
boots2.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(boots2));
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("Seems like you don't have any StarDrills.");
AddOption("Ok! .", 255);
}
break;
case 25:
var armor2 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Armor);
if (_client.HasItem(1200006, 7) && armor2 != null && armor2.Gem1 != 0 && armor2.Gem2 == 0)
{
armor2.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(armor2));
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("Seems like you don't have any StarDrills.");
AddOption("Ok! .", 255);
}
break;
case 26:
var shield2 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponL);
if (_client.HasItem(1200006, 7) && shield2 != null && shield2.Gem1 != 0 && shield2.Gem2 == 0)
{
shield2.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(shield2));
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
_client.DeleteItem(1200006);
AddText("There you go!");
AddOption("Thanks!", 255);
}
else
{
AddText("Seems like you don't have any StarDrills.");
AddOption("Ok! .", 255);
}
break;
#endregion
case 18:
AddText("Choose the equipment you want to socket from the list below. ");
AddOption("Helmet/Earrings/TaoCap ", 31);
AddOption("Ring/Bracelet ", 32);
AddOption("Necklace/Bag ", 33);
AddOption("Boots ", 34);
AddOption("Armor ", 35);
AddOption("Shield ", 36);
AddOption("I changed my mind. ", 255);
break;
#region 2nd socket toughdrill
case 31:
var head3 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Helmet);
if (_client.HasItem(1200005) && head3 != null && head3.Gem1 != 0 && head3.Gem2 == 0 && chance == 20)
{
head3.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(head3));
_client.DeleteItem(1200005);
AddText("There you go!How lucky you are !");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1200005) && head3 != null && head3.Gem1 != 0)
{
_client.DeleteItem(1200005);
_client.CreateItem(1200006);
AddText("Seems like you are unlucky, and the ToughDrill failed but here's and StarDrill.");
AddOption("Ok! ", 255);
}
else
{
AddText("Seems like you don't have any ToughDrills.");
AddOption("Ok! .", 255);
}
break;
case 32:
var ring3 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Ring);
if (_client.HasItem(1200005, 1) && ring3 != null && ring3.Gem1 != 0 && ring3.Gem2 == 0 && chance == 20)
{
ring3.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(ring3));
_client.DeleteItem(1200005);
AddText("There you go!How lucky you are !");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1200005) && ring3 != null && ring3.Gem1 != 0)
{
_client.DeleteItem(1200005);
_client.CreateItem(1200006);
AddText("Seems like you are unlucky, and the ToughDrill failed but here's and StarDrill.");
AddOption("Ok!", 255);
}
else
{
AddText("Seems like you don't have any ToughDrills.");
AddOption("Ok! .", 255);
}
break;
case 33:
var necklace3 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Necklace);
if (_client.HasItem(1200005) && necklace3 != null && necklace3.Gem1 != 0 && necklace3.Gem2 == 0 && chance == 20)
{
necklace3.Gem1 = 255;
_client.Send(ItemInformationPacket.Create(necklace3));
_client.DeleteItem(1200005);
AddText("There you go!How lucky you are !");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1200005) && necklace3 != null && necklace3.Gem1 != 0)
{
_client.DeleteItem(1200005);
_client.CreateItem(1200006);
AddText("Seems like you are unlucky, and the ToughDrill failed but here's and StarDrill.");
AddOption("Ok! ", 255);
}
else
{
AddText("Seems like you don't have any ToughDrills.");
AddOption("Ok! .", 255);
}
break;
case 34:
var boots3 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Boots);
if (_client.HasItem(1200005) && boots3 != null && boots3.Gem1 != 0 && boots3.Gem2 == 0 && chance == 20)
{
boots3.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(boots3));
_client.DeleteItem(1200005);
AddText("There you go!How lucky you are !");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1200005) && boots3 != null && boots3.Gem1 != 0)
{
_client.DeleteItem(1200005);
_client.CreateItem(1200006);
AddText("Seems like you are unlucky, and the ToughDrill failed but here's and StarDrill.");
AddOption("Ok! ", 255);
}
else
{
AddText("Seems like you don't have any ToughDrills.");
AddOption("Ok! .", 255);
}
break;
case 35:
var armor3 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.Armor);
if (_client.HasItem(1200005) && armor3 != null && armor3.Gem1 != 0 && armor3.Gem2 == 0 && chance == 20)
{
armor3.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(armor3));
_client.DeleteItem(1200005);
AddText("There you go!How lucky you are !");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1200005) && armor3 != null && armor3.Gem1 != 0)
{
_client.DeleteItem(1200005);
_client.CreateItem(1200006);
AddText("Seems like you are unlucky, and the ToughDrill failed but here's and StarDrill.");
AddOption("Ok! ", 255);
}
else
{
AddText("Seems like you don't have any ToughDrills.");
AddOption("Ok! .", 255);
}
break;
case 36:
var shield3 = _client.Equipment.GetItemBySlot(Enum.ItemLocation.WeaponL);
if (_client.HasItem(1200005) && shield3 != null && shield3.Gem1 != 0 && shield3.Gem2 == 0 && chance == 20)
{
shield3.Gem2 = 255;
_client.Send(ItemInformationPacket.Create(shield3));
_client.DeleteItem(1200005);
AddText("There you go!How lucky you are !");
AddOption("Thanks!", 255);
}
else if (_client.HasItem(1200005) && shield3 != null && shield3.Gem1 != 0)
{
_client.DeleteItem(1200005);
_client.CreateItem(1200006);
AddText("Seems like you are unlucky, and the ToughDrill failed but here's and StarDrill.");
AddOption("Ok! ", 255);
}
else
{
AddText("Seems like you don't have any ToughDrills.");
AddOption("Ok! .", 255);
}
break;
#endregion
}
AddFinish();
Send();
}
}
}