Не по коду, а чисто для понимания: любая переменная является глобальной, если она не объявлена как local или не является аргументом функции. Подход с капсом — 🤍
Вместо false желательно использовать nil, вместо true — 1. Кроме того, награда у вас начисляется только при наличии скилла, а переменная-флаг ставится в "ложь" при любом касании. То есть подход без навыка = больше никогда не получишь, даже если уже с навыком подойдёшь. Очевидно, смену флага стоит занести внутрь условного блока