Sobre
Comissão que entreguei no final do ano de 2020, talvez ajude em alguns projetos abrindo a mente para algumas alterações, lembre-se de fazer backup e testar pois foi entregue a um membro que acabou não retornando o feedback.
Visão geral
- [x] 1. Trocar o atributo "Defesa Mágica" para "Vitalidade"
- [x] 2. Alterar função de recuperar os vitals (HP/ MP) para recuperar HP 3x a vitalidade e MP 2x a vitalidade
- [x] 3. Alterar a função de dano critico para receber o atributo "sorte" como uma variação de acerto
- [x] 4. Alterar a função de esquiva para receber o atributo "agilidade" como uma variação de acerto
Tutorial
1.
Client
Abra o editor de scripts (F11), procure por "Modules/[VS] Vocab", no final adicione:
- Código:
# Janela de Atributos
HP = 'Vida:'
MP = 'Mana:'
Atk = 'Força:'
Def = 'Constituição:'
Mat = 'Inteligência:'
Vit = 'Vitalidade'
Agi = 'Agilidade:'
Lck = 'Sorte:'
Procure por "RMVXA/[RM] Game_BattlerBase", encontre a declaração "def mdf;" e substitua por "def vit;".
Procure por "Game Windows/[VS] Window_Status" e substitua pelo código abaixo:
- Código:
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# Esta classe lida com a janela de informações do
# jogador, como parâmetros, classe e pontos.
#------------------------------------------------------------------------------
# Autor: Valentine
# Mod: Gallighanmaker
#==============================================================================
class Window_Status < Window_Base
def initialize
super(40, 150, 280, 420)
self.visible = false
self.closable = true
self.title = Vocab.status
@param_buttons = []
btn1 = Button.new(self, 220, 118, '+') {$network.send_add_param(0) }
btn2 = Button.new(self, 220, 148, '+') {$network.send_add_param(1) }
btn3 = Button.new(self, 220, 178, '+') {$network.send_add_param(2) }
btn4 = Button.new(self, 220, 208, '+') {$network.send_add_param(3) }
btn5 = Button.new(self, 220, 238, '+') {$network.send_add_param(4) }
btn6 = Button.new(self, 220, 268, '+') {$network.send_add_param(5) }
btn7 = Button.new(self, 220, 298, '+') {$network.send_add_param(6) }
btn8 = Button.new(self, 220, 328, '+') {$network.send_add_param(7) }
@param_buttons.push(btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8)
end
def refresh
contents.clear
#draw_text(40, 106, 60, line_height, Vocab::Class)
draw_actor_graphic($game_actors[1], 60, 75)
change_color(normal_color)
draw_text(86, 27, 100, line_height, $game_actors[1].name)
draw_text(86, 42, 100, line_height, 'Lv. ' + $game_actors[1].level.to_s)
draw_text(86, 57, 100, line_height, 'Exp. ' + $game_actors[1].now_exp.to_s + '/' + $game_actors[1].next_exp.to_s)
change_color(system_color)
draw_text(40, 106, 50, line_height, Vocab::HP)
draw_text(40, 136, 50, line_height, Vocab::MP)
draw_text(40, 166, 100, line_height, Vocab::Atk)
draw_text(40, 196, 170, line_height, Vocab::Def)
draw_text(40, 226, 170, line_height, Vocab::Mat)
draw_text(40, 256, 170, line_height, Vocab::Vit)
draw_text(40, 286, 100, line_height, Vocab::Agi)
draw_text(40, 316, 100, line_height, Vocab::Lck)
change_color(normal_color)
change_color(text_color(30))
draw_text(40, 346, 60, line_height, Vocab::Points)
change_color(normal_color)
draw_text(180, 108, 40, line_height, $game_actors[1].param(0))
draw_text(180, 138, 40, line_height, $game_actors[1].param(1))
draw_text(180, 168, 40, line_height, $game_actors[1].param(2))
draw_text(180, 198, 40, line_height, $game_actors[1].param(3))
draw_text(180, 228, 40, line_height, $game_actors[1].param(4))
draw_text(180, 256, 40, line_height, $game_actors[1].param(5))
draw_text(180, 286, 40, line_height, $game_actors[1].param(6))
draw_text(180, 316, 40, line_height, $game_actors[1].param(7))
draw_text(180, 346, 40, line_height, $game_actors[1].points > 0 ? $game_actors[1].points : 0)
@param_buttons.each { |button| button.visible = $game_actors[1].points > 0 }
end
end
2.
Servidor
Abra o arquivo "configs.ini" e adicione duas novas chaves
- Código:
# Sistema multiplicador para recuperar HP e MP baseados em "vitalidade"
HP_MULTIPLICADOR = 3
MP_MULTIPLICADOR = 2
Abra o arquivo Scripts/game_client.rb, procure pela função "def recover_vital" e troque por:
- Código:
def recover_vital
return if @recover_time > Time.now
@recover_time = Time.now + RECOVER_TIME
if @hp < mhp || @mp < mmp
n_hp = (mdf * HP_MULTIPLICADOR).next
n_mp = (mdf * MP_MULTIPLICADOR).next
change_vitals((@hp + RECOVER_HP * vip_recover_bonus * n_hp).to_i, (@mp + RECOVER_MP * vip_recover_bonus * n_mp).to_i)
end
end
Pronto, agora o atributo novo "vitalidade" irá curar conforme o multiplicador de HP e MP desejado, esse valor é customizável.
3.
Servidor
Em configs.ini adicione:
- Código:
# Sistema de Critical e Esquiva baseado no satributos Luck e Agilidade
# Formula Critico: base_damage + (luck * multiplicador)
CRITICAL_MULTIPLICADOR = 3
Vá até o "Scripts/game_battle.rb" e faça as seguintes instruções:
Procure pela função "def make_damage_value", substitua por:
- Código:
def make_damage_value(user, item, critical, animation_id, ani_index)
value = item.damage.eval(user, self, user.variables)
value *= item_element_rate(user, item)
value *= pdr if item.physical?
value *= mdr if item.magical?
value *= rec if item.damage.recover?
value = value + (user.luk * CRITICAL_MULTIPLICADOR) if critical
value = apply_variance(value, item.damage.variance)
value = apply_guard(value)
# Se no cálculo do dano tinha número decimal, converte o resultado em inteiro
make_damage(value.to_i, item, user, critical, animation_id, ani_index)
end
Procure pela função "def item_cri(user, item)" e substitua por:
- Código:
def item_cri(user, item)
# It should increase your crit rate by 1% for each 10 points of luck you have more than your target.
# If your target has more, then it should decrease your crit rate by 1% per 10 point difference.
item.damage.critical ? user.cri * (1 - cev) + ((user.luk - luk) * 0.001) : 0
end
Procure pela função "def item_eva(user, item)" e substitua por:
- Código:
def item_eva(user, item)
# It should increase your evasion rate by 1% for each 10 points of agility you have more than your target.
# If your target has more, then it should decrease your evasion rate by 1% per 10 point difference.
return eva * (1 - cev) + ((user.agi - agi) * 0.001)
end
Done!