Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte no desenvolvimento de jogos


    [VXA-OS] Cálculos de combate customizados e pequenas mudanças

    GallighanMaker
    GallighanMaker
    Colaborador
    Colaborador

    Medalhas : [VXA-OS] Cálculos de combate customizados e pequenas mudanças ZgLkiRU
    Mensagens : 981
    Créditos : 101

    Ficha do personagem
    Nível: 1
    Experiência:
    [VXA-OS] Cálculos de combate customizados e pequenas mudanças Left_bar_bleue0/0[VXA-OS] Cálculos de combate customizados e pequenas mudanças Empty_bar_bleue  (0/0)
    Vida:
    [VXA-OS] Cálculos de combate customizados e pequenas mudanças Left_bar_bleue30/30[VXA-OS] Cálculos de combate customizados e pequenas mudanças Empty_bar_bleue  (30/30)

    [VXA-OS] Cálculos de combate customizados e pequenas mudanças Empty [VXA-OS] Cálculos de combate customizados e pequenas mudanças

    Mensagem por GallighanMaker Sex Mar 12, 2021 11:45 am

    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!


    _________________
    @IndieDB @Steam Concept
    [VXA-OS] Cálculos de combate customizados e pequenas mudanças 41324
    --

    Valentine gosta desta mensagem


      Data/hora atual: Sab Abr 10, 2021 10:11 pm