Свойства объекта JavaScript не вычитаются

Vasko спросил: 14 ноября 2017 в 07:07 в: javascript

Я пытался создать объекты JavaScript, которые содержат различные атрибуты для персонажей в игре, на которые влияет событие, происходящее в текущем ходу игры. Когда я по очереди обращаюсь к текущему персонажу из массива символов и применяю изменения к его атрибутам в соответствии с эффектом события, я просто не могу заставить атрибуты вычитать. Даже если свойства отрицательные, они продолжают увеличиваться, а не уменьшать атрибуты персонажа. Если кто-нибудь может помочь мне понять, почему это происходит, я был бы очень благодарен!

Вот как выглядит символьный объект:

let russian = {
    happiness: 7,
    vitality: 7,
    satiation: 7,
    log: [],
    portrait: 'russian'
};

И это объект события:

let playerInTurn = currentPlayer;
let event = {
    updateHappiness: -Math.abs(1),
    updateVitality: Math.abs(2),
    updateSatiation: -Math.abs(1),
    name: 'Cardio marathon',
    description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
    updateAttributes: function() {
        if (this.updateHappiness > 0) {
            charactersArray[currentPlayer].happiness += this.updateHappiness;
        } else {
            charactersArray[currentPlayer].happiness -= this.updateHappiness;
        }
        if (this.updateVitality > 0) {
            charactersArray[currentPlayer].vitality += this.updateVitality;
        } else {
            charactersArray[currentPlayer].vitality -= this.updateVitality;
        }
        if (this.updateSatiation > 0) {
            charactersArray[currentPlayer].satiation += this.updateSatiation;
        } else {
            charactersArray[currentPlayer].satiation -= this.updateSatiation;
        }
    }
}

0 ответов