SG Bonus Kill Experience

14 de dezembro de 2011

Script criado por sandgolem para o RPG Maker XP que ao inserido em um game ou projeto deste maker, que cada vez que o jogador mata um inimigo ou monstro, ele ganha um bônus em XP além do padrão configurado nos inimigos do RMXP.

O bônus, por padrão, é a quantidade de XP do inimigo dividida pelo SG_KillBonus_Divisor, valor que está definido como 3, na linha: Scene_Battle::SG_KillBonus_Divisor = 3

Eu ACHO que o bônus pode ser alterado conforme o número de vezes que se mata inimigos, por causa do SG Bonus Kill Experience precisar do SG Actor Kill Counter, instalado. Vamos pesquisar isso e atualizar aqui quando pudermos! Aliás, se alguém com experiência em RGSS puder ajudar, por favor!

Para usar o código, você deve adiciona-lo acima do Main, mas abaixo dos scripts padrões, e do SDK, se você está usando. O SG Actor Kill Counter precisa estar acima do SG Bonus Kill Experience.

#==========================================================================
# ** SG Bonus Kill Experience
#==========================================================================
# sandgolem
# Version 1
# 26.06.06
#==========================================================================

Scene_Battle::SG_KillBonus_Divisor = 3

#==========================================================================
#
# To use this script, copy it and insert it in a new section above "Main",
# but under the default scripts and the SDK (if using).
#
# SG Actor Kill Counter is required for this script and must be above.
#
#==========================================================================

begin
  SDK.log('SG Bonus Kill Experience', 'sandgolem', 1, '26.06.06')
  if SDK.state('SG Bonus Kill Experience') != true
    @sg_bonuskillexp_disabled = true
  end
  rescue
end

if !@sg_bonuskillexp_disabled
#--------------------------------------------------------------------------

class Game_Actor < Game_Battler
  attr_accessor :sg_killbonus_exp
end

class Scene_Battle
  alias sg_bonusskillexp_killadd sg_killcheck_add
  def sg_killcheck_add(enemy)
    if @active_battler.sg_killbonus_exp == nil
      @active_battler.sg_killbonus_exp = enemy.exp / SG_KillBonus_Divisor
    else
      @active_battler.sg_killbonus_exp += enemy.exp / SG_KillBonus_Divisor
    end
    sg_bonusskillexp_killadd(enemy)
  end

  alias sandgolem_bonuskillxp_battle_startph5 start_phase5
  def start_phase5
    sandgolem_bonuskillxp_battle_startph5
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      if !actor.cant_get_exp?
        if actor.sg_killbonus_exp != nil
          last_level = actor.level
          actor.exp += actor.sg_killbonus_exp
          actor.sg_killbonus_exp = nil
          if actor.level > last_level
            @status_window.level_up(i)
          end
        end
      end
    end
  end
end

#--------------------------------------------------------------------------
end

Informações adicionais

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!