Ejemplo n.º 1
0
        /// <summary>
        /// Send level up packet to client and update database
        /// </summary>
        /// <param name="client">The MapClient</param>
        /// <param name="type">The LevelType that gained level(s)</param>
        /// <param name="numLevels">The number of levels gained</param>
        private void SendLevelUp(MapClient client, LevelType type, uint numLevels)
        {
            //Update DB
            Packets.Server.LevelUp sendPacket = new SagaMap.Packets.Server.LevelUp();
            sendPacket.SetLevelType((byte)type);
            sendPacket.SetActorID(client.Char.id);
            sendPacket.SetLevels(1);
            client.netIO.SendPacket(sendPacket, client.SessionID);
            switch (type)
            {
            case LevelType.CLEVEL:
                SagaMap.Skills.SkillHandler.CalcHPSP(ref client.Char);
                client.Char.HP        = client.Char.maxHP;
                client.Char.SP        = client.Char.maxSP;
                client.Char.cLevel   += numLevels;
                client.Char.stpoints += (byte)(2 * numLevels);                          // TODO implement getting this from level configuration
                client.SendBattleStatus();
                client.SendCharStatus(0);
                client.SendExtStats();
                break;

            case LevelType.JLEVEL:
                client.Char.jLevel += numLevels;
                client.Char.HP      = client.Char.maxHP;
                client.Char.SP      = client.Char.maxSP;
                client.SendCharStatus(0);
                break;
            }

            Logger.ShowInfo(client.Char.name + " gained " + numLevels + "x" + type.ToString(), null);

            //if (client.Party != null)
            //    client.Party.UpdateMemberInfo(client);
        }