Pessoal, criei um script que mostra o dano minimo e máximo de uma habilidade, utilizando o "damage formula" do próprio editor de habilidades do RPG Maker VX Ace.
O script pega apenas a parte do dano que é calculável em atributos do jogador, ignorando a parte de defesa do oponente, por exemplo, uma habilidade chamada "Fogo":
Formula:
50 + a.mat * 2 - b.mdf * 2
O script corta esse texto para apenas:
50 + a.mat * 2
Ou seja, removemos a parte que calcula a defesa, com isso podemos calcular o dano minimo e máximo em base na variação, alterando os tipos de atributos a.atk (ataque), a.mat (ataque mágico), a.agi (agilidade) para os pontos de atributos do personagem. Por exemplo, suponhamos que o personagem tem 50 pontos de ataque mágico:
Original:
50 + a.mat * 2
Alterando o atributo
50 + 50 * 2
Agora temos o calculo real do dano máximo, a variação apenas subtrai desse valor para gerar o minimo e máximo, uma variação de 20 seria o resultado:
50 + 50 * 2 = 200
200 - 20 = 180
Dano mínimo: 180, Dano Máximo: 200
Chega de calculo e bora para o script e o resultado:
Adicione as linhas abaixo no final do script: [VS] Vocab:
Agora em [VS] Script_Help, substitua a função inteira draw_skill pela de baixo:
Fiz esse script rapidinho aqui, fiquem a vontade para ajustar.
xD
O script pega apenas a parte do dano que é calculável em atributos do jogador, ignorando a parte de defesa do oponente, por exemplo, uma habilidade chamada "Fogo":
Formula:
50 + a.mat * 2 - b.mdf * 2
O script corta esse texto para apenas:
50 + a.mat * 2
Ou seja, removemos a parte que calcula a defesa, com isso podemos calcular o dano minimo e máximo em base na variação, alterando os tipos de atributos a.atk (ataque), a.mat (ataque mágico), a.agi (agilidade) para os pontos de atributos do personagem. Por exemplo, suponhamos que o personagem tem 50 pontos de ataque mágico:
Original:
50 + a.mat * 2
Alterando o atributo
50 + 50 * 2
Agora temos o calculo real do dano máximo, a variação apenas subtrai desse valor para gerar o minimo e máximo, uma variação de 20 seria o resultado:
50 + 50 * 2 = 200
200 - 20 = 180
Dano mínimo: 180, Dano Máximo: 200
Chega de calculo e bora para o script e o resultado:
Adicione as linhas abaixo no final do script: [VS] Vocab:
- Código:
# Janela de Habilidades
Damage = 'Dano:'
Agora em [VS] Script_Help, substitua a função inteira draw_skill pela de baixo:
- Código:
def draw_skill
return unless @item.is_a?(RPG::Skill)
self.bitmap.draw_text(21, 70, 100, line_height, Vocab::MPCost)
self.bitmap.draw_text(21, 88, 105, line_height, Vocab::Hit)
self.bitmap.draw_text(125, 70, 40, line_height, @item.mp_cost, 2)
self.bitmap.draw_text(140, 88, 25, line_height, @item.success_rate, 2)
# Show only in HP Damage skills type
if @item.damage.type == 1
# Begin - Show skill damage
atk = $game_actors[1].param(2)# Attack power
mat = $game_actors[1].param(4) # Magic power
agi = $game_actors[1].param(6) # Agility
variance = @item.damage.variance # Skill variance %
if variance == 0
variance = 1
end
formula = @item.damage.formula # Damage formula
min_damage = 0 # Min damage
max_damage = 0 # Max damage
damage_variance = 0 # Damage variance
# Change atk, mat and agi formula values for actor attributes
map = {'a.atk' => atk.to_s, 'a.mat' => mat.to_s, 'a.agi' => agi.to_s}
map.each {|k,v| formula.sub!(k,v)}
# Remove enemy defense part of damage formula, Ex: a.atk * 2 - b.def
# keep only a.atk * 2
if formula.include? "-"
new_formula = formula.split('-')[0]
max_damage = eval(new_formula)
if max_damage > 0
damage_variance = max_damage / max_damage * variance
min_damage = max_damage - damage_variance
end
else
max_damage = eval(formula)
if max_damage > 0
damage_variance = max_damage / max_damage * variance
min_damage = max_damage - damage_variance
end
end
color = crisis_color
self.bitmap.font.color.set(color)
self.bitmap.draw_text(21, 106, 100, line_height, Vocab::Damage)
self.bitmap.draw_text(65, 106, 100, line_height, min_damage.to_s + '~' + max_damage.to_s, 2)
self.bitmap.font.color.set(normal_color)
end
# End
end
Fiz esse script rapidinho aqui, fiquem a vontade para ajustar.
xD
Última edição por GallighanMaker em Sex Jun 21, 2019 1:23 am, editado 3 vez(es)