por Kyonides Arkanthes

Introducción

Este script les permite configurar tanto incrementos como decrementos para sus monstruos dependiendo de una habilidad alias skill y de el ID del monstruo como del “supuesto” terreno en el que luchan. Con terreno me refiero a suponer que el mapa de tipo desierto es tipo 1 - Desierto y que un monstruo tipo mono tiene más ventajas en el tipo 2 - Bosque. Entonces si nuestro monstruo es arbóreo, le convendría lanzar un hechizo para modificar el terreno por uno más favorable… si tiene suerte. La habilidad puede fallar o puede caer en uno desfavorable como el mar.

Parser - Script Temporal

# * KMonstersTerrain Parser Script for Version 1.1.0
#   Scripter : Kyonides Arkanthes

module KMonsTerrain
  PARSE_FILE = true
  TERRAINS = {}# Do not edit this line!
  GOOD_TERRAINS = {}# Do not edit this line!
  BAD_TERRAINS = {}# Do not edit this line!
  MONSTER_BOOSTS = {}# Do not edit this line!
  MONSTER_DEBUFF = {}# Do not edit this line!
  MONSTER_SKILLS = {}# Do not edit this line!
  # [TerrainID] = Backdrop Name
  TERRAINS[1] = '043-Cave01'
  TERRAINS[2] = '011-PortTown01'
  # [MonsterID] = [All, Terrain, IDs]
  GOOD_TERRAINS[1] = [1]
  # [MonsterID] = [All, Terrain, IDs]
  BAD_TERRAINS[1] = [2]
  # [MonsterID] = [HP, SP, STR, DEX, AGI, INT, ATK, PD, MD, EVA]
  MONSTER_BOOSTS[1] = [50, 25, 15, 5, 5, 15, 15, 5, 5, 5]
  # [MonsterID] = [[SkillID, Rating], etc.]
  MONSTER_SKILLS[1] = [[11, 5]]
  # [MonsterID] = [HP, SP, STR, DEX, AGI, INT, ATK, PD, MD, EVA]
  MONSTER_DEBUFF[1] = [50, 25, 15, 5, 5, 15, 15, 5, 5, 5]
  class Boost# Do not alter this class!
    def initialize
      @hp = 0
      @sp = 0
      @str = 0
      @dex = 0
      @agi = 0
      @int = 0
      @atk = 0
      @pdef = 0
      @mdef = 0
      @eva = 0
      @actions = []
    end
    attr_accessor :hp, :sp, :str, :dex, :agi, :int, :atk, :pdef, :mdef, :eva
    attr_accessor :actions
  end
  def self.make_file
    boosts = {}
    mbs = MONSTER_BOOSTS.dup
    ids = MONSTER_BOOSTS.keys.sort
    ids.each do |mid|
      mb = mbs[mid]
      boost = Boost.new
      boost.hp = mb.pop
      boost.sp = mb.pop
      boost.str = mb.pop
      boost.dex = mb.pop
      boost.agi = mb.pop
      boost.int = mb.pop
      boost.atk = mb.pop
      boost.pdef = mb.pop
      boost.mdef = mb.pop
      boost.eva = mb.pop
      boosts[mid] = boost
    end
    skills = {}
    ids = MONSTER_SKILLS.keys.sort
    ids.each do |sid|
      boosts[sid].actions = MONSTER_SKILLS[sid].map do |s,r|
        gba = RPG::Enemy::Action.new
        gba.kind = 1
        gba.skill_id = s
        gba.rating = r
        gba
      end
    end
    debuffs = {}
    mbs = MONSTER_DEBUFF.dup
    ids = MONSTER_DEBUFF.keys.sort
    ids.each do |mid|
      mb = mbs[mid]
      debuff = Boost.new
      debuff.hp = -mb.pop
      debuff.sp = -mb.pop
      debuff.str = -mb.pop
      debuff.dex = -mb.pop
      debuff.agi = -mb.pop
      debuff.int = -mb.pop
      debuff.atk = -mb.pop
      debuff.pdef = -mb.pop
      debuff.mdef = -mb.pop
      debuff.eva = -mb.pop
      debuffs[mid] = debuff
    end
    puts "Opening KMonsTerrain file..."
    File.open('Data/KMonsTerrain.rxdata','wb') do |f|
      Marshal.dump(TERRAINS, f)
      Marshal.dump(GOOD_TERRAINS, f)
      Marshal.dump(BAD_TERRAINS, f)
      Marshal.dump(boosts, f)
      Marshal.dump(debuffs, f)
    end
    puts :Finished
  end
  make_file if PARSE_FILE
end

El script anterior es temporal porque solo está ahí para guardar sus configuraciones en archivos separados para así no facilitarle a terceros el cambiar sus valores sin permiso. También facilita bastante el brindarle soporte al script principal ya que todas las líneas de código se mantendrán intactas y lo que suceda en un proyecto también debería pasarle a otros. Así es como solucionar bugs se vuelve mucho más sencillo y fáciles de replicar de ser necesario.

Script

# * KMonstersTerrain Parser Script
#   Scripter : Kyonides Arkanthes

module KMonstersTerrainParser
  PARSE_FILE = true
  TERRAINS = {}# Do not edit this line!
  # [TerrainID] = Backdrop Name
  TERRAINS[1] = '043-Cave01'
  TERRAINS[2] = '011-PortTown01'
  MONSTER_GOOD_TERRAINS = {}# Do not edit this line!
  # [MonsterID] = [All, Terrain, IDs]
  MONSTER_GOOD_TERRAINS[1] = [1]
  MONSTER_BAD_TERRAINS = {}# Do not edit this line!
  # [MonsterID] = [All, Terrain, IDs]
  MONSTER_BAD_TERRAINS[1] = [2]
  MONSTER_BOOSTS = {}# Do not edit this line!
  # [MonsterID] = [HP, SP, STR, DEX, AGI, INT, ATK, PD, MD, EVA]
  MONSTER_BOOSTS[1] = [50, 25, 15, 5, 5, 15, 15, 5, 5, 5]
  MONSTER_DEBUFF = {}# Do not edit this line!
  # [MonsterID] = [HP, SP, STR, DEX, AGI, INT, ATK, PD, MD, EVA]
  MONSTER_DEBUFF[1] = [50, 25, 15, 5, 5, 15, 15, 5, 5, 5]
  class Boost# Do not alter this class!
    def initialize
      @hp = 0
      @sp = 0
      @str = 0
      @dex = 0
      @agi = 0
      @int = 0
      @atk = 0
      @pdef = 0
      @mdef = 0
      @eva = 0
    end
    attr_accessor :hp, :sp, :str, :dex, :agi, :int, :atk, :pdef, :mdef, :eva
  end
  def self.make_file
    boosts = {}
    mbs = MONSTER_BOOSTS.dup
    ids = MONSTER_BOOSTS.keys
    ids.each do |mid|
      mb = mbs[mid]
      boost = Boost.new
      boost.hp = mb.pop
      boost.sp = mb.pop
      boost.str = mb.pop
      boost.dex = mb.pop
      boost.agi = mb.pop
      boost.int = mb.pop
      boost.atk = mb.pop
      boost.pdef = mb.pop
      boost.mdef = mb.pop
      boost.eva = mb.pop
      boosts[mid] = boost
    end
    debuffs = {}
    mbs = MONSTER_DEBUFF.dup
    ids = MONSTER_DEBUFF.keys
    ids.each do |mid|
      mb = mbs[mid]
      debuff = Boost.new
      debuff.hp = -mb.pop
      debuff.sp = -mb.pop
      debuff.str = -mb.pop
      debuff.dex = -mb.pop
      debuff.agi = -mb.pop
      debuff.int = -mb.pop
      debuff.atk = -mb.pop
      debuff.pdef = -mb.pop
      debuff.mdef = -mb.pop
      debuff.eva = -mb.pop
      debuffs[mid] = debuff
    end
    save_data(TERRAINS, 'Data/KMonstersTerrainT.rxdata')
    save_data(MONSTER_GOOD_TERRAINS, 'Data/KMonstersTerrainGT.rxdata')
    save_data(MONSTER_BAD_TERRAINS, 'Data/KMonstersTerrainBT.rxdata')
    save_data(boosts, 'Data/KMonstersTerrainB.rxdata')
    save_data(debuffs, 'Data/KMonstersTerrainD.rxdata')
  end
  make_file if PARSE_FILE
end

Términos y Condiciones

Deben incluir mi sobrenombre en los créditos de sus juegos.
Para juegos de código abierto y gratuitos o demos: Libre de Cargos.
Para juegos comerciales: Aplica un módico rubro.

5 días más tarde

En esta nueva oportunidad les cuento que he actualizado el script para que incluya otra característica más, la de que los monstruos puedan aprender técnicas extras SOLO si usan la técnica de cambio de escenario y ese escenario aleatorio resulta ser favorable para ellos. Tengan en cuenta que esas técnicas se configuran en el script Parser. Así nos garantizamos que no aparezcan si caen en un territorio desfavorable, además evita que se haga más de un chequeo por vez que los monstruos utilicen técnicas.