Пример #1
0
        /// <inheritdoc />
        public void UpdateStatistics(IPlayerEntity player, ushort strength, ushort stamina, ushort dexterity, ushort intelligence)
        {
            _logger.LogDebug("Modify sttus");

            var total = strength + stamina + dexterity + intelligence;

            var statsPoints = player.Statistics.StatPoints;

            if (statsPoints <= 0 || total > statsPoints)
            {
                _logger.LogError("No statspoints available, but trying to upgrade {0}.", player.Object.Name);
                return;
            }

            if (strength > statsPoints || stamina > statsPoints ||
                dexterity > statsPoints || intelligence > statsPoints || total <= 0 ||
                total > ushort.MaxValue)
            {
                _logger.LogError("Invalid upgrade request due to bad total calculation (trying to dupe) {0}.",
                                 player.Object.Name);
                return;
            }

            player.Attributes.IncreaseAttribute(DefineAttributes.STR, strength);
            player.Attributes.IncreaseAttribute(DefineAttributes.STA, stamina);
            player.Attributes.IncreaseAttribute(DefineAttributes.DEX, dexterity);
            player.Attributes.IncreaseAttribute(DefineAttributes.INT, intelligence);
            player.Statistics.StatPoints -= (ushort)total;

            _playerPacketFactory.SendPlayerUpdateState(player);
        }