Начисто сегодня:
StoryInit
/*инвентарь, сумки, сундуки, шкафы, склады*/
<<set $sumka = []>> /*объявляю "пустое" множество предметов в сумке*/
<<set $totalWeightSumka = 0>> /*вес предметов в сумке*/
<<set $item = {}>> /* Инициализация переменной $item как объект *
===========================================================
Пассаж, где "генерируются" предметы и подбираются
<<if $totalWeightSumka >= 5000>>
У вас больше нет места в сумке
<<else>>
<<set $kosteritem = random(1, 5)>> /*условия для появления предмета*/
<<if $kosteritem == 1>>
<<set $apple = {
name: "яблоко",
color: "красное",
taste: "сладкое",
weight: random(80, 300),
price: 0, /*Инициализация цены перед расчетом*/
satisfyHunger: 0,
satisfyThirst: 0,
burningTime: 0
}>>
<<set $apple.price = $apple.weight / 10>> /*Рассчет цены пропорционально весу*/
<<set $apple.satisfyHunger = $apple.weight * 5>>
<<set $apple.satisfyThirst = $apple.weight * 5>>
<<link "Положить яблоко <<print $apple.color>> <<print $apple.taste>> весом <<print $apple.weight>> ценой <<print $apple.price>> пищевая ценность: <<print $apple.satisfyHunger>> утоление жажды: <<print $apple.satisfyThirst>> время горения: <<print $apple.burningTime>>">>
<<set $sumka.push($apple)>>
<<set $itemSumka = $apple>><<goto "костерок">>
<</link>>
<<elseif $kosteritem == 2>>
<<set $pear = {
name: "груша",
color: "зеленая",
taste: "сладкая",
weight: random(100, 200),
price: 0,
satisfyHunger: 0,
satisfyThirst: 0,
burningTime: 0
}>>
<<set $pear.price = $pear.weight / 8>>
<<set $pear.satisfyHunger = $pear.weight * 5>>
<<set $pear.satisfyThirst = $pear.weight * 5>>
<<link "Положить грушу <<print $pear.color>> <<print $pear.taste>> весом <<print $pear.weight>> ценой <<print $pear.price>> пищевая ценность: <<print $pear.satisfyHunger>> утоление жажды: <<print $pear.satisfyThirst>> время горения: <<print $pear.burningTime>>">>
<<set $sumka.push($pear)>>
<<set $itemSumka = $pear>><<goto "костерок">>
<</link>>
<<else>>
Здесь нечего взять
<</if>>
<</if>>
Пассаж сумки
Всё это работает как задумано.
===============================
Задание на завтра:
Отлично, давайте добавим возможность выбрасывания и употребления предметов из сумки.
Для этого можно добавить дополнительные ссылки рядом с информацией о каждом предмете в сумке:
html
<<set $totalWeightSumka = 0>> /*подсчет общего веса предметов в сумке*/
<<if $sumka.length > 0>>
<h2>Предметы в вашем инвентаре:</h2>
<<for $itemSumka range $sumka>>
<<set $totalWeightSumka += $itemSumka.weight>>
<<link "Посмотреть <<print $itemSumka.name>> - Цвет: <<print $itemSumka.color>>, Вкус: <<print $itemSumka.taste>>, Вес: <<print $itemSumka.weight>>, Цена: <<print $itemSumka.price>>, Утоление голода: <<print $itemSumka.satisfyHunger>>, Утоление жажды: <<print $itemSumka.satisfyThirst>>, Время горения: <<print $itemSumka.burningTime>>">>
<<print $itemSumka.name>>
<</link>>
<<link "Съесть <<print $itemSumka.name>>">>
<<set $hunger += $itemSumka.satisfyHunger>>
<<remove $sumka $itemSumka>>
<<set $totalWeightSumka -= $itemSumka.weight>>
<</link>>
<<link "Выбросить <<print $itemSumka.name>>">>
<<remove $sumka $itemSumka>>
<<set $totalWeightSumka -= $itemSumka.weight>>
<</link>>
<br>
<</for>>
<p>Общий вес предметов в инвентаре: <<print $totalWeightSumka>> грамм</p>
<<else>>
<p>Ваш инвентарь пуст.</p>
<</if>>
<<if $totalWeightSumka >= 5000>>
У вас больше нет места в сумке
<</if>>
В этом обновленном коде:
Мы добавили два новых <<link>> блока для каждого предмета в сумке:
"Съесть <<print $itemSumka.name>>"
"Выбросить <<print $itemSumka.name>>"
При клике на ссылку "Съесть":
Значение переменной $hunger увеличивается на $itemSumka.satisfyHunger
Предмет удаляется из массива $sumka
Общий вес в сумке уменьшается на вес съеденного предмета
При клике на ссылку "Выбросить":
Предмет удаляется из массива $sumka
Общий вес в сумке уменьшается на вес выброшенного предмета
Таким образом, пользователь теперь может не только просматривать содержимое сумки, но и съедать или выбрасывать предметы из нее.
Обратите внимание, что вам также нужно будет добавить переменную $hunger и обновить ее значение при съедании предметов.
Дайте мне знать, если у вас возникнут дополнительные вопросы!
=============================
Молодец! Вот только я ему забыл сказать, что переменные уже объявлены и даже изменяются во времени. Лан завтра в это буду вникать.