Времени ну просто нифига нет, потому делал все второпях без мукера.
В общем, потер я лишний end, потому не запускалось. Забери скрипт из спойлера в 1м сообщении снова.
Вид для печати
Времени ну просто нифига нет, потому делал все второпях без мукера.
В общем, потер я лишний end, потому не запускалось. Забери скрипт из спойлера в 1м сообщении снова.
Возник такой вопрос: можно ли повышать/уменьшать главные характеристики (hp,mp,atk,mat,pdf,mdf,agi,luk) в процентах?
PS: Например, стойка воина добавляет несколько едениц атаки, а хочется увеличить её на 25% от имеющейся. Просто с любыми процентными пассивками гораздо проще добится хорошего баланса, и такие умения никогда не устаревают.
тут можно считать так:Код:# если активна стойка, считаем плюсы и минусы с неё
def param_plus(param_id)
plus = equips.compact.inject(super) {|r, item| r += item.params[param_id] }
if last_stand != nil
case param_id
when 0
plus += last_stand.hp
when 1
plus += last_stand.mp
when 2
plus += last_stand.atk
when 3
plus += last_stand.pdf
when 4
plus += last_stand.mat
when 5
plus += last_stand.mdf
when 6
plus += last_stand.agi
when 7
plus += last_stand.luk
end
end
return plus
end
1) Это параметры баттлера, и героя тоже
2) таким образом, для hp в процентах делаем неКод:def mhp; param(0); end # MHP Maximum Hit Points
def mmp; param(1); end # MMP Maximum Magic Points
def atk; param(2); end # ATK ATtacK power
def def; param(3); end # DEF DEFense power
def mat; param(4); end # MAT Magic ATtack power
def mdf; param(5); end # MDF Magic DeFense power
def agi; param(6); end # AGI AGIlity
def luk; param(7); end # LUK LUcK
when 0
plus += last_stand.hp
а
when 0
plus += last_stand.hp*mhp
задавая в стойке % (типа 0.05 или 0.25)
Благодарю за науку. Попробую разобраться, надеюсь всё получится.
Видимо опять не-то делаю (
Спойлер 1:
Спойлер 2:
Спойлер 3:
попробуй вметсо mhp умножить на hp
Уже пробовала. HP повышаются до 385 при любом значении в стойке(тестилось на 0.25, потом на 0.1). При этом в отображении всегда стоит "10". С атакой(*atk) так и вовсе не запускается.
Наконец нашел время на живом погонять...
Вот, вроде это решение должно подойти (в стойках ставь тогда не десятую, а %, то есть не 0.05, а 5)
Код:# если активна стойка, считаем плюсы и минусы с неё
def param_plus(param_id)
plus = equips.compact.inject(super) {|r, item| r += item.params[param_id] }
if last_stand != nil
case param_id
when 0
plus += last_stand.hp*param_base(0)/100
when 1
plus += last_stand.mp*param_base(1)/100
when 2
plus += last_stand.atk*param_base(2)/100
when 3
plus += last_stand.pdf*param_base(3)/100
when 4
plus += last_stand.mat*param_base(4)/100
when 5
plus += last_stand.mdf*param_base(5)/100
when 6
plus += last_stand.agi*param_base(6)/100
when 7
plus += last_stand.luk*param_base(7)/100
end
end
return plus
end
Спасибо, пока вроде всё работает. Пришлось немного понервничать, чтобы вписать вызов стоек в бою для скрипта Battle command, который изначально блочил всё начисто.