Exemplo n.º 1
0
        public static void HandleSingle(MapleClient c, PacketReader pr)
        {
            MapleCharacter chr = c.Account.Character;

            if (chr.AP <= 0)
            {
                return;
            }
            int tickCount           = pr.ReadInt();
            MapleCharacterStat stat = (MapleCharacterStat)pr.ReadLong();

            SortedDictionary <MapleCharacterStat, long> statUpdates = new SortedDictionary <MapleCharacterStat, long>();

            switch (stat)
            {
            case MapleCharacterStat.Str:
                if (chr.Str < 9999)
                {
                    chr.Str++;
                    chr.AP--;
                    statUpdates.Add(MapleCharacterStat.Str, chr.Str);
                }
                break;

            case MapleCharacterStat.Dex:
                if (chr.Dex < 9999)
                {
                    chr.Dex++;
                    chr.AP--;
                    statUpdates.Add(MapleCharacterStat.Dex, chr.Dex);
                }
                break;

            case MapleCharacterStat.Int:
                if (chr.Int < 9999)
                {
                    chr.Int++;
                    chr.AP--;
                    statUpdates.Add(MapleCharacterStat.Int, chr.Int);
                }
                break;

            case MapleCharacterStat.Luk:
                if (chr.Luk < 9999)
                {
                    chr.Luk++;
                    chr.AP--;
                    statUpdates.Add(MapleCharacterStat.Luk, chr.Luk);
                }
                break;

            case MapleCharacterStat.MaxHp:
                //TODO
                break;

            case MapleCharacterStat.MaxMp:
                //TODO
                break;

            default:
                ServerConsole.Warning("Unhandled stat in DistributeAPHandler: " + stat.ToString("X"));
                break;
            }
            statUpdates.Add(MapleCharacterStat.Ap, chr.AP);
            MapleCharacter.UpdateStats(c, statUpdates, true);
        }
Exemplo n.º 2
0
        public static void HandleDistribute(MapleClient c, PacketReader pr)
        {
            MapleCharacter chr = c.Account.Character;

            if (chr.AP == 0)
            {
                return;
            }
            int tickCount  = pr.ReadInt();
            int statsCount = pr.ReadInt();

            Dictionary <MapleCharacterStat, long> statsAssign = new Dictionary <MapleCharacterStat, long>();

            for (int i = 0; i < statsCount; i++)
            {
                MapleCharacterStat stat = (MapleCharacterStat)pr.ReadLong();
                int addValue            = pr.ReadInt();
                if (addValue > 0)
                {
                    statsAssign.Add(stat, addValue);
                }
            }
            SortedDictionary <MapleCharacterStat, long> statsUpdate = new SortedDictionary <MapleCharacterStat, long>();

            foreach (KeyValuePair <MapleCharacterStat, long> kvp in statsAssign)
            {
                if (chr.AP < kvp.Value)
                {
                    continue;
                }
                short statInc = (short)kvp.Value;
                switch (kvp.Key)
                {
                case MapleCharacterStat.Str:
                    if (chr.Str + statInc <= 9999)
                    {
                        chr.Str += statInc;
                        chr.AP  -= statInc;
                        statsUpdate.Add(MapleCharacterStat.Str, chr.Str);
                    }
                    break;

                case MapleCharacterStat.Dex:
                    if (chr.Dex + statInc <= 9999)
                    {
                        chr.Dex += statInc;
                        chr.AP  -= statInc;
                        statsUpdate.Add(MapleCharacterStat.Dex, chr.Dex);
                    }
                    break;

                case MapleCharacterStat.Int:
                    if (chr.Int + statInc <= 9999)
                    {
                        chr.Int += statInc;
                        chr.AP  -= statInc;
                        statsUpdate.Add(MapleCharacterStat.Int, chr.Int);
                    }
                    break;

                case MapleCharacterStat.Luk:
                    if (chr.Luk + statInc <= 9999)
                    {
                        chr.Luk += statInc;
                        chr.AP  -= statInc;
                        statsUpdate.Add(MapleCharacterStat.Luk, chr.Luk);
                    }
                    break;

                default:
                    ServerConsole.Error("Unhandled stat in AutoAssignAp handling: " + kvp.Key);
                    break;
                }
            }
            statsUpdate.Add(MapleCharacterStat.Ap, chr.AP);
            MapleCharacter.UpdateStats(c, statsUpdate, true);
        }