Я создаю текстовую RPG-игру для веб-приложений. Игра будет использовать textNodes и переходить к следующему «вопросу» после того, как каждый ответ будет выбран из вопроса.
В моей игре я разрешаю пользователю выбирать перки в начале игры.
Одно из этих умений - «смазка».
В этой игре есть фракции, и я хочу проверить, есть ли у игрока умение смазывать, а также проверить, задается ли этот вопрос в настоящее время содержит фракцию «greaser».
Если оба эти утверждения верны, я буду запускать тот же лог c, но с уменьшенным уроном. Если нет, я просто запущу функцию, как она появляется.
Вот код для двух вопросов, один из которых имеет функцию.
function addRadiatedStatus() {
character.radiated = true;
}
const textNodes = [
{
id: 1,
text: "Do you want to help this person?",
options: [
{
text: "Yes",
nextText: 2,
},
{
text: "No",
nextText: 2,
},
],
faction: "Greaser",
},
{
id: 2,
text: "It was a trap, do you run or kill them?",
options: [
{
text: "Run",
nextText: 3,
damage: 0,
},
{
text: "Kill",
nextText: 5,
damage: 8,
moneyDrop: 20,
radiationDamage: 2,
function: function update() {
if (character.greaser == true && textNodes[1].faction == "greaser") {
console.log("greaser check worked");
}
console.log("upadte function worked");
character.health -= this.damage;
character.cash += this.moneyDrop;
character.radiationLevel += this.radiationDamage;
character.maxHP -= this.radiationDamage;
if (this.radiationDamage >= 1) {
addRadiatedStatus();
}
console.log("character HP" + " " + character.health);
console.log("character maxHP" + " " + character.maxHP);
console.log("moneyDrop " + " " + this.moneyDrop);
console.log("character cash" + " " + character.cash);
console.log("radiation level" + " " + character.radiationLevel);
console.log("character Raditated?" + " " + character.radiated);
},
},
],
faction: "Greaser",
},
];
textNodes[1].options[1].function();
Как видите, я Я жестко кодирую textNodes[1].faction
, что станет очень раздражающим, когда у меня появятся сотни вопросов / вариантов.
Я ищу способ сказать что-то вроде `textNodes [textNodes.id] .faction ', что позволит мне t повторное использование кода и отсутствие необходимости в жестком коде.
Я также не понимаю, как я могу также автоматически вызывать любую функцию в рамках выбора / ответа вопроса, потому что в настоящее время я жестко кодирую вызов функции в нижней части моя страница выглядит так textNodes[1].options[1].function()
.
Я хочу иметь возможность делать 2 вещи ...
Вызывать эту функцию автоматически всякий раз, когда игрок делает выбор
Динамически добавляйте идентификатор textNode к проверке if / else на наличие «greaser».
Я новичок в javascript и не конечно, почему у меня возникают проблемы с получением ключа «id» из моей функции.
* 1 035 * Заранее спасибо.