Anybody understand stream sources?

06/01/2025 03:41 denominator#1
Mainly the reborn system, I am able to reborn the characters but it seems the Windwalker class has issues when reborning. I reborn the character to Windwalker yet when I check the details it shows a ? instead of a class.

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);
            }
        }
    }
Ignore the badly spelled words I have yet to edit the source to English lol

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;
            }
    }
}
01/20/2026 01:07 Falcon Hero#2
Which version you are working on as if you below than 6609 the class of Windwalker 160 so may you explain or contact me directly via discord Levi.6609