I've been figuring out and it seems the simplest things even can't be done these days in this section.
So here it is,
The npc:
Code:
#region UnknownMan
case 300006:
{
int ExpToGive = (int)Math.Floor(600000 * (1 + ((GC.MyChar.Level - 1) * 0.1)) * 2);
int NextLevel = GC.MyChar.Level;
if (Control == 0)
{
if (GC.MyChar.Level > 130)
{
Text("You already reached level 130. I can't level you anymore.", GC);
Link("I see.", 255, GC);
End(GC);
}
else
{
Text("Hey, young man. Nice to meet you again. Do you bring any good wine for", GC);
Text("me? Sigh, the only wine that I'm missing is DrunkCelestial produced by the", GC);
Text("Flying with Moon Restaurant. If i have chance to savor it again, I won't mind", GC);
Text(" helping you drawing energy from the powerful DragonBall to increase your\n experience", GC);
Link("Here is a bottle of DrunkCelestial", 1, GC);
Link("Sorry. I forgot to bring it.", 255, GC);
End(GC);
}
}
if (Control == 1)
{
if (NeededExp(GC.MyChar.Level) <= GC.MyChar.Experience)
{
Text("You can only draw energy from Dragonballs once per day. Bring two", GC);
Text(" Dragonballs to me, and then I will help you to transfer the energy containing", GC);
Text("in DBs to your body.So you can make use of the energy to level up instantly", GC);
Text("from Level " + GC.MyChar.Level + " to Level " + GC.MyChar.Level + " (" + ExpToGive % 10 + "%)", GC);
Link("Let's get started!", 2, GC);
Link("Thanks. I see.", 255, GC);
End(GC);
}
else
{
NextLevel++;
Text("You can only draw energy from Drasgonballs once per day. Bring two", GC);
Text(" Dragonballs to me, and then I will help you to transfer the energy containing", GC);
Text("in DBs to your body.So you can make use of the energy to level up instantly", GC);
Text("from Level " + GC.MyChar.Level + " to Level " + NextLevel + "(0%)", GC);
Link("Let's get started!", 2, GC);
Link("Thanks. I see.", 255, GC);
End(GC);
}
}
if (Control == 2)
{
if (GC.MyChar.InventoryContains(722185, 1))
{
if (GC.MyChar.InventoryContains(1088000, 1))
{
GC.MyChar.RemoveItem(GC.MyChar.NextItem(1088000));
GC.MyChar.RemoveItem(GC.MyChar.NextItem(722185));
GiveExp(GC, ExpToGive);
}
else { Text("Sorry, i can't level you up without my dragonball.", GC); Link("Oh, sorry.", 255, GC); }
}
else
{
Text("How dare you deceive me? You don't have any DrunkCelestial with you at all!", GC);
Text("You are wasting my time. I don't want you to say one more word. Get away!", GC);
Link("Sorry.", 255, GC);
End(GC);
}
}
break;
}
#endregion
And these are the voids you need to put in the NPCDialog.cs under the npc class.
Code:
public static void Text(string value, Main.GameClient GC)
{
GC.AddSend(Packets.NPCSay(value));
}
public static void Link(string value, byte Option, Main.GameClient GC)
{
GC.AddSend(Packets.NPCLink(value, Option));
}
public static void Face(ushort Face, Main.GameClient GC)
{
GC.AddSend(Packets.NPCSetFace(Face));
}
public static void GiveLevel(Main.GameClient GC)
{
GC.MyChar.Experience -= NeededExp(GC.MyChar.Level);
GC.MyChar.Level++;
if (GC.MyChar.Reborns > 1)
GC.MyChar.StatPoints += 3;
else
Database.SaveCharacter(GC.MyChar, GC.MyChar.Name);
GC.MyChar.CurHP = GC.MyChar.MaxHP;
GC.AddSend(Packets.Status(2, Status.HP, GC.MyChar.CurHP));
if (GC.MyChar.Level < 135)
{
if (GC.MyChar.Experience >= NeededExp(GC.MyChar.Level))
{
GiveLevel(GC);
}
else
{
GC.AddSend(Packets.Status(2, Status.Level, GC.MyChar.Level));
GC.AddSend(Packets.Status(2, Status.Experience, GC.MyChar.Experience));
GC.AddSend(Packets.Status(2, Status.StatPoints, GC.MyChar.StatPoints));
}
}
}
public static void GiveExp(Main.GameClient GC, int Exps)
{
if (Exps > 0)
{
if (GC.MyChar.Reborns == 2)
Exps /= 3;
GC.MyChar.Experience += (ulong)Exps;
if (NeededExp(GC.MyChar.Level) <= GC.MyChar.Experience)
GiveLevel(GC);
else
GC.AddSend(Packets.Status(2, Status.Experience, GC.MyChar.Experience));
}
}
public static ulong NeededExp(int Level)
{
if (Level == 1)
return 39;
else if (Level == 2)
return 165;
else if (Level == 3)
return 165;
else if (Level == 4)
return 347;
else if (Level == 5)
return 627;
else if (Level == 6)
return 990;
else if (Level == 7)
return 1183;
else if (Level == 8)
return 2407;
else if (Level == 9)
return 3679;
else if (Level == 10)
return 8341;
else if (Level == 11)
return 11996;
else if (Level == 12)
return 14429;
else if (Level == 13)
return 18043;
else if (Level == 14)
return 21612;
else if (Level == 15)
return 22596;
else if (Level == 16)
return 32217;
else if (Level == 17)
return 37480;
else if (Level == 18)
return 47573;
else if (Level == 19)
return 56704;
else if (Level == 20)
return 68789;
else if (Level == 21)
return 70451;
else if (Level == 22)
return 75923;
else if (Level == 23)
return 97776;
else if (Level == 24)
return 114826;
else if (Level == 25)
return 120892;
else if (Level == 26)
return 123980;
else if (Level == 27)
return 126799;
else if (Level == 28)
return 145811;
else if (Level == 29)
return 173384;
else if (Level == 30)
return 197651;
else if (Level == 31)
return 202490;
else if (Level == 32)
return 212172;
else if (Level == 33)
return 244204;
else if (Level == 34)
return 285805;
else if (Level == 35)
return 305949;
else if (Level == 36)
return 312881;
else if (Level == 37)
return 324575;
else if (Level == 38)
return 366153;
else if (Level == 39)
return 434023;
else if (Level == 40)
return 460573;
else if (Level == 41)
return 506713;
else if (Level == 42)
return 570008;
else if (Level == 43)
return 728546;
else if (Level == 44)
return 850828;
else if (Level == 45)
return 916402;
else if (Level == 46)
return 935051;
else if (Level == 47)
return 940860;
else if (Level == 48)
return 1076590;
else if (Level == 49)
return 1272807;
else if (Level == 50)
return 1357986;
else if (Level == 51)
return 1384873;
else if (Level == 52)
return 1478420;
else if (Level == 53)
return 1632489;
else if (Level == 54)
return 1903121;
else if (Level == 55)
return 2065957;
else if (Level == 56)
return 2104909;
else if (Level == 57)
return 1921149;
else if (Level == 58)
return 2417153;
else if (Level == 59)
return 2853501;
else if (Level == 60)
return 3054580;
else if (Level == 61)
return 3111200;
else if (Level == 62)
return 3225607;
else if (Level == 63)
return 3811037;
else if (Level == 64)
return 4437965;
else if (Level == 65)
return 4880615;
else if (Level == 66)
return 4970959;
else if (Level == 67)
return 5107243;
else if (Level == 68)
return 5652526;
else if (Level == 69)
return 6579184;
else if (Level == 70)
return 6878005;
else if (Level == 71)
return 7100739;
else if (Level == 72)
return 7157642;
else if (Level == 73)
return 9106931;
else if (Level == 74)
return 10596415;
else if (Level == 75)
return 11220485;
else if (Level == 76)
return 11409179;
else if (Level == 77)
return 11424043;
else if (Level == 78)
return 12882966;
else if (Level == 79)
return 15172842;
else if (Level == 80)
return 15896985;
else if (Level == 81)
return 16163738;
else if (Level == 82)
return 16800069;
else if (Level == 83)
return 19230324;
else if (Level == 84)
return 22365189;
else if (Level == 85)
return 23819291;
else if (Level == 86)
return 24219524;
else if (Level == 87)
return 24864054;
else if (Level == 88)
return 27200095;
else if (Level == 89)
return 32033236;
else if (Level == 90)
return 33723786;
else if (Level == 91)
return 34291244;
else if (Level == 92)
return 34944017;
else if (Level == 93)
return 39463459;
else if (Level == 94)
return 45878550;
else if (Level == 95)
return 48924263;
else if (Level == 96)
return 49729242;
else if (Level == 97)
return 51072047;
else if (Level == 98)
return 55808382;
else if (Level == 99)
return 64870117;
else if (Level == 100)
return 68391872;
else if (Level == 101)
return 69537082;
else if (Level == 102)
return 76422949;
else if (Level == 103)
return 96950832;
else if (Level == 104)
return 112676761;
else if (Level == 105)
return 120090440;
else if (Level == 106)
return 121798300;
else if (Level == 107)
return 127680095;
else if (Level == 108)
return 137446904;
else if (Level == 109)
return 193716061;
else if (Level == 110)
return 408832135;
else if (Level == 111)
return 454674621;
else if (Level == 112)
return 461125840;
else if (Level == 113)
return 469189848;
else if (Level == 114)
return 477253857;
else if (Level == 115)
return 480479444;
else if (Level == 116)
return 485317884;
else if (Level == 117)
return 493381812;
else if (Level == 118)
return 580579979;
else if (Level == 119)
return 717424993;
else if (Level == 120)
return 282274071;
else if (Level == 121)
return 338728845;
else if (Level == 122)
return 406474656;
else if (Level == 123)
return 487769554;
else if (Level == 124)
return 585323469;
else if (Level == 125)
return 702388103;
else if (Level == 126)
return 842865806;
else if (Level == 127)
return 1011439064;
else if (Level == 128)
return 1073741808;
else if (Level == 129)
return 1073741759;
else if (Level == 130)
return 8589134588;
else if (Level == 131)
return 25767403764;
else if (Level == 132)
return 77302211292;
else if (Level == 133)
return 231906633876;
else if (Level == 134)
return 347859950814;
else
return 1;
}
public static void End(Main.GameClient GC)
{
GC.AddSend(Packets.NPCFinish());
}






