А наборы для шитья или для ремонта точно работают? Потому что по коду там такое:
— Если герой нужной расы, то увеличить ему здоровье на value и вернуть 0 как результат действия предмета
— Иначе вернуть value как результат действия предмета (а результат действия — это число излеченного!)
То есть набор по-любому вылечит, либо через побочный эффект, либо через результат действия предмета.
Мне пришлось использовать побочный эффект — change_hp — потому что в моей функции наносится
отрицательное значение. Лечащие умения в мейкере не могут наносить урон через результат действия предмета, поэтому я сделал побочный эффект через change_hp. Если предмет не должен лечить, то достаточно просто вернуть 0.
(И да, если сравнивается только с одним значением, а не с несколькими, то лучше писать не так:
[3].include?($game_variables[1])
а так:
include? полезно, если нужно сравнить число сразу с несколькими значениями. По сути это:
[3, 5].include?($game_variables[1])
эквивалентно этому:
$game_variables[1] == 3 || $game_variables[1] == 5
Т.е. проверка, что переменная или равна 3, или равна 5.
Если проверяется одно значение, то лучше писать $game_variables[1] == 3 (так понятнее, что делает код)
В итоге по-моему набор для шиться должен выглядеть как-то так:
#набор для шитья
def heal_or_hpu(actor, value)
if actor.actor.is == 1 & [3].include?($game_variables[1]) then
#если раса=3, то вернуть результат действия равный value
return value
else
#если другая раса, то вернуть результат равный 0
return 0
end
end
change_hp тут не нужно, потому что урон не наносится: выбор просто между value (переданным значением) и нулём.