When I check the database I'm greeted with "Class=161" when it clearly should be 16001
Code:
public unsafe void Reborn(Role.Player player, uint RebornClass, ServerSockets.Packet stream)
{
if (player.Class / 1000 != RebornClass / 1000 && player.Owner.Rune.WornObjects.Count(i => Role.Instance.Rune.GetSkillForRune(i) != null) > 0)
{
player.Owner.SendSysMesage("Please unequip red/blue runes before changing your class.", MsgMessage.ChatMode.SystemWhisper);
player.Owner.CreateBoxDialog("Please unequip red/blue/Yellow runes before changing your class.");
return;
}
#region Save Promotion
if (Database.AtributesStatus.IsThunderStriker(player.Class))
{
player.Class -= 1;
player.SavePromote = player.Class;
}
if (Database.AtributesStatus.IsArcher(player.Class))
{
player.Class -= 1;
player.SavePromote1 = player.Class;
}
if (Database.AtributesStatus.IsFire(player.Class))
{
player.Class -= 1;
player.SavePromote2 = player.Class;
}
if (Database.AtributesStatus.IsLee(player.Class))
{
player.Class -= 1;
player.SavePromote3 = player.Class;
}
if (Database.AtributesStatus.IsMonk(player.Class))
{
player.Class -= 1;
player.SavePromote4 = player.Class;
}
if (Database.AtributesStatus.IsNinja(player.Class))
{
player.Class -= 1;
player.SavePromote5 = player.Class;
}
if (Database.AtributesStatus.IsPirate(player.Class))
{
player.Class -= 1;
player.SavePromote6 = player.Class;
}
if (Database.AtributesStatus.IsTaoist(player.Class))
{
player.Class -= 1;
player.SavePromote7 = player.Class;
}
if (Database.AtributesStatus.IsTrojan(player.Class))
{
player.Class -= 1;
player.SavePromote8 = player.Class;
}
if (Database.AtributesStatus.IsWarrior(player.Class))
{
player.Class -= 1;
player.SavePromote9 = player.Class;
}
if (Database.AtributesStatus.IsWater(player.Class))
{
player.Class -= 1;
player.SavePromote10 = player.Class;
}
if (Database.AtributesStatus.IsWindWalker(player.Class))
{
player.Class -= 1;
player.SavePromote11 = player.Class;
}
#endregion
if (Database.AtributesStatus.IsTrojan(player.Class)) player.Class = 1005;
if (Database.AtributesStatus.IsWarrior(player.Class)) player.Class = 2005;
if (Database.AtributesStatus.IsArcher(player.Class)) player.Class = 4005;
if (Database.AtributesStatus.IsNinja(player.Class)) player.Class = 5005;
if (Database.AtributesStatus.IsMonk(player.Class)) player.Class = 6005;
if (Database.AtributesStatus.IsPirate(player.Class)) player.Class = 7005;
if (Database.AtributesStatus.IsThunderStriker(player.Class)) player.Class = 9005;
if (Database.AtributesStatus.IsWater(player.Class)) player.Class = 13005;
if (Database.AtributesStatus.IsFire(player.Class)) player.Class = 14005;
if (Database.AtributesStatus.IsWindWalker(player.Class)) player.Class = 16005;
if (Database.AtributesStatus.IsLee(player.Class)) player.Class = 8005;
if (RebornClass < 1000)
{
switch (RebornClass)
{
case 11:
{
RebornClass = 1001;
break;
}
case 21:
{
RebornClass = 2001;
break;
}
case 41:
{
RebornClass = 4001;
break;
}
case 51:
{
RebornClass = 5001;
break;
}
case 61:
{
RebornClass = 6001;
break;
}
case 71:
{
RebornClass = 7001;
break;
}
case 81:
{
RebornClass = 8001;
break;
}
case 91:
{
RebornClass = 9001;
break;
}
case 132:
{
RebornClass = 13002;
break;
}
case 142:
{
RebornClass = 14002;
break;
}
case 162:
{
RebornClass = 16002;
break;
}
}
}
if (RebornClass % 10 == 1 || RebornClass == 13002 || RebornClass == 14002)
{
switch (player.Reborn)
{
case 0:
{
foreach (var info in this)
{
if (info.Item1 == 1 && info.Item2 == player.Class && info.Item3 == RebornClass)
{
switch (info.Item4)
{
case Action.AddRebornSpells:
case Action.Add:
{
foreach (var spellid in info.Item5)
player.Owner.MySpells.Add(stream, spellid);
break;
}
case Action.Delete:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.Remove(spellid, stream);
}
break;
}
case Action.Downgrade:
{
foreach (var spellid in info.Item5)
player.Owner.MySpells.RebornSpell(stream, spellid);
break;
}
}
}
}
player.FirstRebornLevel = (byte)player.Level;
player.FirstClass = player.Class;
player.Class = RebornClass;
player.Reborn = 1;
player.SendUpdate(stream, player.Reborn, Game.MsgServer.MsgUpdate.DataType.Reborn);
#if Arabic
Program.SendGlobalPackets.Enqueue(new Game.MsgServer.MsgMessage("Congratulations! " + player.Name + " has got " + player.Reborn + " reborns.", Game.MsgServer.MsgMessage.MsgColor.white, Game.MsgServer.MsgMessage.ChatMode.Center).GetArray(stream));
#else
Server.SendGlobalPacket(new Game.MsgServer.MsgMessage("Congratulations! " + player.Name + " has got " + player.Reborn + " reborns.", Game.MsgServer.MsgMessage.MsgColor.white, Game.MsgServer.MsgMessage.ChatMode.Center).GetArray(stream));
#endif
break;
}
case 1:
{
foreach (var info in this)
{
if (info.Item1 == 2 && info.Item2 == player.Class && info.Item3 == RebornClass)
{
switch (info.Item4)
{
case Action.AddRebornSpells:
case Action.Add:
{
foreach (var spellid in info.Item5)
player.Owner.MySpells.Add(stream, spellid);
break;
}
case Action.Delete:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.Remove(spellid, stream);
}
break;
}
case Action.Downgrade:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.RebornSpell(stream, spellid);
}
break;
}
}
}
}
player.SecondRebornLevel = (byte)player.Level;
player.SecondClass = player.Class;
player.Class = RebornClass;
player.Reborn = 2;
player.SendUpdate(stream, player.Reborn, Game.MsgServer.MsgUpdate.DataType.Reborn);
#if Arabic
Program.SendGlobalPackets.Enqueue(new Game.MsgServer.MsgMessage("Congratulations! " + player.Name + " has got " + player.Reborn + " nd reborn.", Game.MsgServer.MsgMessage.MsgColor.white, Game.MsgServer.MsgMessage.ChatMode.Center).GetArray(stream));
#else
Server.SendGlobalPacket(new Game.MsgServer.MsgMessage("Congratulations! " + player.Name + " has got " + player.Reborn + "nd reborn.", Game.MsgServer.MsgMessage.MsgColor.white, Game.MsgServer.MsgMessage.ChatMode.Center).GetArray(stream));
#endif
break;
}
case 2:
{
//Monk
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.InfernalEcho))
player.Owner.Inventory.Add(stream, 3007568);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.GraceofHeaven))
player.Owner.Inventory.Add(stream, 3007567);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.WrathoftheEmperor))
player.Owner.Inventory.Add(stream, 3007566);
//Pirate
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.SeaBurial))
player.Owner.Inventory.Add(stream, 3307432);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.BloomofDeath))
player.Owner.Inventory.Add(stream, 3307433);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.BloomofDeath))
player.Owner.Inventory.Add(stream, 3307434);
//Taoist
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.AuroraLotus))
player.Owner.Inventory.Add(stream, 3006018);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.BlessingTouch))
player.Owner.Inventory.Add(stream, 3006020);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.FlameLotus))
player.Owner.Inventory.Add(stream, 3006017);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.SearingTouch))
player.Owner.Inventory.Add(stream, 3006019);
//Ninja
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.TwilightDance))
player.Owner.Inventory.Add(stream, 3004460);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.ShadowClone))
player.Owner.Inventory.Add(stream, 3004459);
if (player.Owner.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.FatalSpin))
player.Owner.Inventory.Add(stream, 3004461);
player.Owner.MySpells.ClearSpells(StaticSpells, stream);
uint RClass = 0;
if (player.SecondClass == 13005)
RClass = 13002;
else if (player.SecondClass == 14005)
RClass = 14002;
else
RClass = (uint)(player.SecondClass - 4);
uint Twoclass = 0;
if (player.Class == 13005)
Twoclass = 13002;
else if (player.Class == 14005)
Twoclass = 14002;
else
Twoclass = (uint)(player.Class - 4);
foreach (var info in this)
{
if (info.Item1 == 0 && info.Item2 == 0 && info.Item3 == RClass)
{
switch (info.Item4)
{
case Action.AllClassSpells:
{
foreach (var spellid in info.Item5)
{
if (!StaticSpells.Contains(spellid))
player.Owner.MySpells.Add(stream, spellid);
}
break;
}
}
}
}
foreach (var info in this)
{
if (info.Item1 == 1 && info.Item2 == player.SecondClass && info.Item3 == Twoclass)
{
switch (info.Item4)
{
case Action.AddRebornSpells:
case Action.Add:
{
foreach (var spellid in info.Item5)
player.Owner.MySpells.Add(stream, spellid);
break;
}
case Action.Delete:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.Remove(spellid, stream);
}
break;
}
case Action.Downgrade:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.RebornSpell(stream, spellid);
}
break;
}
}
}
}
foreach (var info in this)
{
if (info.Item1 == 0 && info.Item2 == 0 && info.Item3 == Twoclass)
{
switch (info.Item4)
{
case Action.AllClassSpells:
{
foreach (var spellid in info.Item5)
{
if (!StaticSpells.Contains(spellid))
player.Owner.MySpells.Add(stream, spellid);
}
break;
}
}
}
}
foreach (var info in this)
{
if (info.Item1 == 2 && info.Item2 == player.Class && info.Item3 == RebornClass)
{
switch (info.Item4)
{
case Action.AddRebornSpells:
case Action.Add:
{
foreach (var spellid in info.Item5)
player.Owner.MySpells.Add(stream, spellid);
break;
}
case Action.Delete:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.Remove(spellid, stream);
}
break;
}
case Action.Downgrade:
{
foreach (var spellid in info.Item5)
{
player.Owner.MySpells.RebornSpell(stream, spellid);
}
break;
}
}
}
}
player.FirstRebornLevel = player.SecondRebornLevel;
player.SecondRebornLevel = (byte)player.Level;
player.FirstClass = player.SecondClass;
player.SecondClass = player.Class;
player.Class = RebornClass;
#if Arabic
Program.SendGlobalPackets.Enqueue(new Game.MsgServer.MsgMessage("Congratulations! " + player.Name + " has got Reincarnation.", Game.MsgServer.MsgMessage.MsgColor.white, Game.MsgServer.MsgMessage.ChatMode.Center).GetArray(stream));
#else
Server.SendGlobalPacket(new Game.MsgServer.MsgMessage("Congratulations! " + player.Name + " has got reincarnation.", Game.MsgServer.MsgMessage.MsgColor.white, Game.MsgServer.MsgMessage.ChatMode.System).GetArray(stream));
#endif
player.Reincarnation = true;
break;
}
}
try
{
foreach (var item in player.Owner.Equipment.ClientItems.Values)
{
if (item != null)
{
try
{
if (item.Position != (ushort)Role.Flags.ConquerItem.AleternanteBottle
&& item.Position != (ushort)Role.Flags.ConquerItem.AleternanteGarment
&& item.Position != (ushort)Role.Flags.ConquerItem.Bottle
&& item.Position != (ushort)Role.Flags.ConquerItem.Fan
&& item.Position != (ushort)Role.Flags.ConquerItem.Garment
&& item.Position != (ushort)Role.Flags.ConquerItem.LeftWeaponAccessory
&& item.Position != (ushort)Role.Flags.ConquerItem.RidingCrop
&& item.Position != (ushort)Role.Flags.ConquerItem.RightWeaponAccessory
&& item.Position != (ushort)Role.Flags.ConquerItem.Steed
&& item.Position != (ushort)Role.Flags.ConquerItem.SteedMount
&& item.Position != (ushort)Role.Flags.ConquerItem.Tower)
{
item.ITEM_ID = Pool.ItemsBase.DowngradeItem(item.ITEM_ID);
item.Mode = Role.Flags.ItemMode.Update;
item.Send(player.Owner, stream);
}
}
catch (Exception e) { MyConsole.WriteLine(e.ToString()); }
}
}
}
catch (Exception e) { MyConsole.WriteLine(e.ToString()); }
player.Owner.Equipment.Remove(Role.Flags.ConquerItem.LeftWeapon, stream);
player.Owner.Equipment.Remove(Role.Flags.ConquerItem.AleternanteLeftWeapon, stream);
player.Level = 15;
player.Experience = Pool.LevelInfo[Database.DBLevExp.Sort.User][(byte)(player.Level - 1)].Experience;
player.SendUpdate(stream, (long)player.Experience, Game.MsgServer.MsgUpdate.DataType.Experience);
ActionQuery action = new ActionQuery()
{
ObjId = player.UID,
Type = ActionType.Leveled,
dwParam = player.Level
};
player.Owner.Send(stream.ActionCreate(action));
player.SendUpdate(stream, player.Level, Game.MsgServer.MsgUpdate.DataType.Level);
// Database.DataCore.AtributeStatus.GetStatus(player, true);
player.Strength = player.Agility = player.Spirit = 0;
player.Vitality = 1;
if (player.Reborn == 1)
{
player.Atributes = (ushort)(Pool.RebornInfo.ExtraAtributePoints(player.FirstRebornLevel, player.FirstClass)
+ 52 + 3 * (player.Level - 15) + player.ExtraAtributes);
}
else
{
player.Atributes = (ushort)(Pool.RebornInfo.ExtraAtributePoints(player.FirstRebornLevel, player.FirstClass) +
Pool.RebornInfo.ExtraAtributePoints(player.SecondRebornLevel, player.SecondClass) + 52 + 3 * (player.Level - 15) + player.ExtraAtributes);
}
player.SendUpdate(stream, player.Strength, Game.MsgServer.MsgUpdate.DataType.Strength);
player.SendUpdate(stream, player.Agility, Game.MsgServer.MsgUpdate.DataType.Agility);
player.SendUpdate(stream, player.Spirit, Game.MsgServer.MsgUpdate.DataType.Spirit);
player.SendUpdate(stream, player.Vitality, Game.MsgServer.MsgUpdate.DataType.Vitality);
player.SendUpdate(stream, player.Atributes, Game.MsgServer.MsgUpdate.DataType.Atributes);
player.SendUpdate(stream, player.FirstClass, Game.MsgServer.MsgUpdate.DataType.FirstRebornClass);
player.SendUpdate(stream, player.SecondClass, Game.MsgServer.MsgUpdate.DataType.SecondRebornClass);
player.Owner.Equipment.QueryEquipment(player.Owner.Equipment.Alternante, true);
Database.PrestigeRanking.CheckReborn(player.Owner);
var client = player.Owner;
client.HundredWeapons.UpdateRank();
client.Player.RemoveFlag(MsgUpdate.Flags.ChillingSnow);
client.Player.RemoveFlag(MsgUpdate.Flags.HealingSnow);
client.Player.ClearFlags();
client.MySpells.Remove((ushort)Role.Flags.SpellID.Pitching, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Comprehension, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Comprehension, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Pitching, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Rampage, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.FrostArrows, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Sacrifice, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Infinity, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Absolution, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.IronShield, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.TideTrap, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Slayer, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.CounterPunch, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.FineRain, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.FireCurse, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Wildwind, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.BloomofDeath, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.SkyFall, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.SpaceLeap, stream);
client.MySpells.Remove((ushort)Role.Flags.SpellID.Duel, stream);
if (Database.AtributesStatus.IsTrojan(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.FastBlader))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.FastBlader);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.ScrenSword))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.ScrenSword);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Cyclone))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Cyclone);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.MonsterHunter))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.MonsterHunter);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.UndyingWill))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.UndyingWill);
}
else if (Database.AtributesStatus.IsWindWalker(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.AngerofStomper))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.AngerofStomper);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.JusticeChant))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.JusticeChant);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Circle))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Circle);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Rectangle))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Rectangle);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Sector))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Sector);
}
else if (Database.AtributesStatus.IsWarrior(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Superman))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Superman);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.FastBlader))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.FastBlader);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.ScrenSword))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.ScrenSword);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Shield))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Shield);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Accuracy))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Accuracy);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Roar))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Roar);
}
else if (Database.AtributesStatus.IsArcher(client.Player.Class))
{
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.XpFly);
}
else if (Database.AtributesStatus.IsNinja(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.FatalStrike))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.FatalStrike);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.ToxicFog))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.ToxicFog);
}
else if (Database.AtributesStatus.IsMonk(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.WhirlwindKick))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.WhirlwindKick);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.TripleAttack))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.TripleAttack);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Oblivion))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Oblivion);
}
else if (Database.AtributesStatus.IsPirate(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.CannonBarrage))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.CannonBarrage);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.BladeTempest))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.BladeTempest);
}
else if (Database.AtributesStatus.IsLee(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.DragonPunch))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.DragonPunch);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.DragonCyclone))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.DragonCyclone);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.DragonFlow))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.DragonFlow);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.AirRaid))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.AirRaid);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.AirSweep))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.AirSweep);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.AirKick))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.AirKick);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.AirStrike))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.AirStrike);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.EarthSweep))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.EarthSweep);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Kick))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Kick);
}
else if (Database.AtributesStatus.IsTaoist(client.Player.Class))
{
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.ChainBolt))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.ChainBolt);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Lightning))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Lightning);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Thunder))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Thunder);
if (!client.MySpells.ClientSpells.ContainsKey((ushort)Role.Flags.SpellID.Cure))
client.MySpells.Add(stream, (ushort)Role.Flags.SpellID.Cure);
}
}
}
Nobody? Yes I have checked other stream sources and no replacing the code made 0 difference
Reborn NPC code
Code:
public static void RebirthMaster(Client.GameClient client, ServerSockets.Packet stream, byte Option, string Input, uint id)
{
Dialog data = new Dialog(client, stream);
switch (Option)
{
case 0:
{
data.AddText("I devote all my life to the research of eternity. And finally I know the secret of rebirth! Well, anything I can help you with?")
.AddOption("1st~Rebirth.", 1)
.AddOption("2nd~Rebirth.", 4)
.AddOption("Reincarnation.", 5)
.AddOption("Reallot~my~Attribute~Points.", 8)
.AddOption("OblivionDew for 1 cps.", 67)
.AddOption("Just~passing~by.", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
case 8:
{
data.AddText("Reborn~level~70+~players~can~redistribute~their~attribute~points~at~the~cost~of~a~dragonball.")
.AddOption("I~will~reallot~my~points.", 9)
.AddOption("OblivionDew for 1 cps.", 67)
.AddOption("Let~me~think~it~over.", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
case 67:
{
if (client.Player.ConquerPoints >= 1)
{
client.Player.ConquerPoints -= 1;
client.Inventory.Add(stream, 711083, 1);
}
else
{
data.AddText("Please have 1 cps .")
.AddOption("Thanks!", 255)
.AddAvatar(166).FinalizeDialog();
}
break;
}
case 9:
{
if (client.Player.Level >= 70)
{
if (client.Inventory.Contain(Database.ItemType.DragonBall, 1))
{
client.Inventory.Remove(Database.ItemType.DragonBall, 1, stream);
client.Player.Agility = 0;
client.Player.Strength = 0;
client.Player.Vitality = 1;
client.Player.Spirit = 0;
client.CreateBoxDialog("You have successfully reloaded your attribute points.");
if (client.Player.Reborn == 0)
{
client.Player.Atributes = 0;
Database.DataCore.AtributeStatus.ResetStatsNonReborn(client.Player);
if (Database.AtributesStatus.IsWater(client.Player.Class))
{
if (client.Player.Level > 110)
client.Player.Atributes = (ushort)((client.Player.Level - 110) * 3 + client.Player.ExtraAtributes);
}
else
{
if (client.Player.Level > 120)
client.Player.Atributes = (ushort)((client.Player.Level - 120) * 3 + client.Player.ExtraAtributes);
}
}
else if (client.Player.Reborn == 1)
{
client.Player.Atributes = (ushort)(Pool.RebornInfo.ExtraAtributePoints(client.Player.FirstRebornLevel, client.Player.FirstClass)
+ 52 + 3 * (client.Player.Level - 15) + client.Player.ExtraAtributes);
}
else
{
if (client.Player.SecondRebornLevel == 0)
client.Player.SecondRebornLevel = 130;
client.Player.Atributes = (ushort)(Pool.RebornInfo.ExtraAtributePoints(client.Player.FirstRebornLevel, client.Player.FirstClass) +
Pool.RebornInfo.ExtraAtributePoints(client.Player.SecondRebornLevel, client.Player.SecondClass) + 52 + 3 * (client.Player.Level - 15) + client.Player.ExtraAtributes);
}
client.Player.SendUpdate(stream, client.Player.Strength, Game.MsgServer.MsgUpdate.DataType.Strength);
client.Player.SendUpdate(stream, client.Player.Agility, Game.MsgServer.MsgUpdate.DataType.Agility);
client.Player.SendUpdate(stream, client.Player.Spirit, Game.MsgServer.MsgUpdate.DataType.Spirit);
client.Player.SendUpdate(stream, client.Player.Vitality, Game.MsgServer.MsgUpdate.DataType.Vitality);
client.Player.SendUpdate(stream, client.Player.Atributes, Game.MsgServer.MsgUpdate.DataType.Atributes);
}
else
{
data.AddText("Sorry, you don't have one DragonBall.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
}
else
{
data.AddText("You~cannot~reallot~your~ability~points~unless~you~are~reborn~and~above~level~70.")
.AddOption("I~see", 255)
.AddAvatar(67).FinalizeDialog();
}
break;
}
case 5:
{
data.AddText("From now on, have total control of your life! If you've been Reborn twice and are at least Level 110, just bring me some Oblivion Dew and I'll help you become Reincarnated! After the Reincarnation, your class skills will revert to level 0,")
.AddText("~but they`ll return to their previous levels when you reach Level 110, again. If your classes have been the same for all three lives, including your current one, you can learn the Pure Skills from your class trainer,")
.AddText("~in the job center.")
.AddOption("I~want~to~get~Reincarnated.", 6)
.AddOption("Where~can~I~get~the~Dew?", 7)
.AddAvatar(67).FinalizeDialog();
break;
}
case 7:
{
data.AddText("Oblivion Dew is available in the Honor Store and the Horse Race Store. You can use your Honor Points or Horse Race Points to purchase one.")
.AddOption("Got~it!~Thanks!", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
case 6:
{
int limitPoints2 = client.Player.Agility + client.Player.Strength + client.Player.Vitality + client.Player.Spirit + client.Player.Atributes;
/* if (limitPoints2 > 900)
{
client.Player.Agility = 0;
client.Player.Strength = 0;
client.Player.Vitality = 1;
client.Player.Spirit = 0;
client.Player.Atributes = 901;
client.Player.SendUpdate(stream, client.Player.Strength, Game.MsgServer.MsgUpdate.DataType.Strength);
client.Player.SendUpdate(stream, client.Player.Agility, Game.MsgServer.MsgUpdate.DataType.Agility);
client.Player.SendUpdate(stream, client.Player.Spirit, Game.MsgServer.MsgUpdate.DataType.Spirit);
client.Player.SendUpdate(stream, client.Player.Vitality, Game.MsgServer.MsgUpdate.DataType.Vitality);
client.Player.SendUpdate(stream, client.Player.Atributes, Game.MsgServer.MsgUpdate.DataType.Atributes);
}*/
if (client.Player.Reborn == 2 && client.Inventory.Contain(711083, 1))
{
ActionQuery action = new ActionQuery()
{
Type = ActionType.OpenDialog,
ObjId = client.Player.UID,
dwParam = MsgServer.DialogCommands.Reincarnation,
PositionX = client.Player.X,
PositionY = client.Player.Y
};
client.Send(stream.ActionCreate(action));
}
else
{
data.AddText("You have not been Reborn twice. I`m afraid you will not withstand the power of the Oblivion Dew. Come to me when you get stronger.")
.AddOption("Got~it!~Thanks!", 255)
.AddAvatar(67).FinalizeDialog();
}
break;
}
case 1:
{
if (client.Player.Reborn == 0 && (client.Player.Level >= 110 && Database.AtributesStatus.IsWater(client.Player.Class) || client.Player.Level >= 120 & client.Player.Class % 10 >= 5))
{
if (client.Inventory.Contain(721259, 1) || client.Inventory.Contain(721259, 1, 1))
{
data.AddText("There are two kinds of reborns. One is the normal one and the second one is blessed.")
.AddText("The normal reborn will give you the chance to get a Super Gem and the blessed reborn will set a -1 into one of your equipment that you wear during the reborn. What do you chose?")
.AddOption("Normal reborn.", 2)
.AddOption("Blessed reborn.", 3)
.AddOption("I`ll~think~about~it.", 255)
.AddAvatar(67).FinalizeDialog();
}
else
{
data.AddText("Sorry, you don't have CelestialStone.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
}
else
{
data.AddText("You~haven`t~reached~the~highest~rank~yet.~Please~work~harder. You cannot reborn if your level is not 110+ for water saints and 120+ for other masters.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
break;
}
case 4:
{
if (client.Player.Reborn == 1 && (client.Player.Level >= 110 && Database.AtributesStatus.IsWater(client.Player.Class) || client.Player.Level >= 120 & client.Player.Class % 10 >= 5))
{
if (client.Inventory.Contain(723701, 1) || client.Inventory.Contain(723701, 1, 1))
{
data.AddText("You don't worry, it's not gonna hurt you a bit when getting the third life. You just need an exemption token and it's all going to be fine.")
.AddOption("Here is the ExemptionToken.", 3)
.AddOption("I`ll~think~about~it.", 255)
.AddAvatar(67).FinalizeDialog();
}
else
{
data.AddText("Sorry, you don't have ExemptionToken.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
}
else
{
data.AddText("Sorry,~you~are~ineligible~for~second~rebirth.~Please~wait~until~you~are~a~level~120~reborn~person.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
break;
}
case 2:
{
data.AddText("Select the super gem you desire.")
.AddOption("SuperPhoenixGem.", 203)
.AddOption("SuperDragonGem.", 213)
.AddOption("SuperFuryGem.", 223)
.AddOption("SuperRainbowGem.", 233)
.AddOption("SuperVioletGem.", 253)
.AddOption("SuperMoonGem.", 254)
.AddOption("SuperKylinGem", 243)
.AddOption("I`ll~think~about~it.", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
case 203:
case 213:
case 223:
case 233:
case 253:
case 254:
case 243:
{
if (client.Player.Reborn == 0)
{
client.RebornGem = (uint)(Option % 100);
if (client.RebornGem == 254)
client.RebornGem = 263;
}
data.AddText("Select the class you want to reborn in.")
.AddOption("Trojan.", 11)
.AddOption("Warrior.", 21)
.AddOption("Archer.", 41)
.AddOption("WaterTaoist.", 132)
.AddOption("FireTaoist.", 142)
.AddOption("Ninja.", 51)
.AddOption("Monk", 61)
.AddOption("Pirate", 71)
.AddOption("Dragon-Warrior", 81)
.AddOption("Windwalker", 161)
.AddOption("Thunderstriker.", 91)
.AddOption("I`ll~think~about~it.", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
case 3:
{
data.AddText("Select the class you want to reborn in.")
.AddOption("Trojan.", 11)
.AddOption("Warrior.", 21)
.AddOption("Archer.", 41)
.AddOption("WaterTaoist.", 132)
.AddOption("FireTaoist.", 142)
.AddOption("Ninja.", 51)
.AddOption("Monk", 61)
.AddOption("Pirate", 71)
.AddOption("Dragon-Warrior", 81)
.AddOption("Windwalker", 161)
.AddOption("Thunderstriker.", 91)
.AddOption("I`ll~think~about~it.", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
case 11:
case 21:
case 41:
case 132:
case 142:
case 51:
case 161:
case 61:
case 81:
case 71:
case 91:
{
if (!client.Inventory.HaveSpace(5))
{
data.AddText("Sorry, but you need atleast 5 free spaces in your inventory.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
break;
}
if (client.Player.Class / 1000 != Option / 10 && client.Rune.WornObjects.Count(i => Role.Instance.Rune.GetSkillForRune(i) != null) > 0)
{
client.SendSysMesage("Please unequip red/blue runes before changing your class.", MsgMessage.ChatMode.SystemWhisper);
client.CreateBoxDialog("Please unequip red/blue/Yellow runes before changing your class.");
break;
}
if (client.Player.Reborn == 0 && (client.Player.Level >= 110 && Database.AtributesStatus.IsWater(client.Player.Class) || client.Player.Level >= 120 & client.Player.Class % 10 >= 5))
{
if (client.Inventory.Contain(721259, 1) || client.Inventory.Contain(721259, 1, 1))
{
client.Inventory.Remove(721259, 1, stream);
if (client.RebornGem != 0)
{
client.Inventory.Add(stream, (uint)(700000 + client.RebornGem), 1);
client.RebornGem = 0;
}
else
{
foreach (var item in client.Equipment.CurentEquip)
{
if (item.Position != (ushort)Role.Flags.ConquerItem.Steed)
{
if (item.Bless == 0)
{
item.Bless = 1;
item.Mode = Role.Flags.ItemMode.Update;
item.Send(client, stream);
break;
}
}
}
}
switch (Option)
{
case 161:
case 11:
case 21:
case 51:
case 61:
case 71:
case 81:
case 91:
{
client.Inventory.Add(stream, 410077, 1, 0, 0, 0, Role.Flags.Gem.NoSocket, Role.Flags.Gem.NoSocket, false, Role.Flags.ItemEffect.Poison);
break;
}
case 41:
{
client.Inventory.Add(stream, 410077, 1, 0, 0, 0, Role.Flags.Gem.NoSocket, Role.Flags.Gem.NoSocket, false, Role.Flags.ItemEffect.Poison);
break;
}
case 132:
case 142:
{
client.Inventory.Add(stream, 421077, 1, 0, 0, 0, Role.Flags.Gem.NoSocket, Role.Flags.Gem.NoSocket, false, Role.Flags.ItemEffect.MP);
break;
}
}
uint RebornClass = (uint)(((Option / 10) * 1000) + (Option % 10));
Pool.RebornInfo.Reborn(client.Player, Option, stream);
}
else
{
data.AddText("Sorry, you don't have CelestialStone.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
}
else if (client.Player.Reborn == 1 && (client.Player.Level >= 110 && client.Player.Class >= 13005 && client.Player.Class <= 13049 || client.Player.Level >= 120 & client.Player.Class % 10 >= 5))
{
if (client.Inventory.Contain(723701, 1) || client.Inventory.Contain(723701, 1, 1))
{
client.Inventory.Remove(723701, 1, stream);
uint RebornClass = (uint)(((Option / 10) * 1000) + (Option % 10));
Pool.RebornInfo.Reborn(client.Player, Option, stream);
}
else
{
data.AddText("Sorry, you don't have ExemptionToken.")
.AddOption("I~see.", 255)
.AddAvatar(67).FinalizeDialog();
}
}
break;
}
}
}






