¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1KMonstersTerrain XP Empty KMonstersTerrain XP el Dom Ago 18, 2019 9:50 am

kyonides

kyonides
KMonstersTerrain XP
versión 1.1.0

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.

Desde la versión 1.1.0 es posible agregarle "acciones" a los monstruos (las habilidades o técnicas de ellos) si y solo si el terreno obtenido mágicamente les es favorable. De lo contrario siguen teniendo la misma lista de acciones como si no existiera este script.

Parser - Script Temporal
Código:
# * 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
Código:
# * KMonstersTerrain XP
#  Scripter : Kyonides Arkanthes
#  v1.1.0 - 2019-08-19

module KMonsTerrain
  SKILL_ID = 81 # Skill that will trigger the terrain transformation
  class Boost
    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
  class << self
    def change_terrain(enemy)
      @terrain = enemy.choose_terrain
      backdrop = @terrains[@terrain][0]
      return if backdrop != ''
      $game_temp.battleback_name = backdrop
      return true
    end

    def load_data
      File.open('Data/KMonstersTerrain.rxdata','rb') do |f|
        @terrains        = Marshal.load(f)
        @monster_terrains = Marshal.load(f)
        @bad_terrains    = Marshal.load(f)
        @boosts          = Marshal.load(f)
        @debuff          = Marshal.load(f)
      end
    end
    attr_accessor :terrain
    attr_reader :terrains, :monster_terrains, :bad_terrains, :boosts, :debuff
  end
  load_data
  @terrain = 0
  @terrains.default = ['']
  @monster_terrains.default = [0]
  @bad_terrains.default = [0]
  @boosts.default = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  @debuff.default = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
end

class Game_Battler
  alias :kyon_kmk_gm_battler_s_e :skill_effect
  def skill_effect(user, skill)
    unless skill.id == KMonstersTerrain::SKILL_ID
      return kyon_kmk_gm_battler_s_e(user, skill)
    end
    hit = skill.hit
    hit = hit * skill.atk_f / 100 + hit * user.int / 100
    return unless rand(100) < hit
    return KMonsTerrain.change_terrain(user)
  end
end

class Game_Enemy
  alias :kyon_kmk_init :initialize
  alias :kyon_kmk_hp :maxhp
  alias :kyon_kmk_sp :maxsp
  alias :kyon_kmk_str :str
  alias :kyon_kmk_dex :dex
  alias :kyon_kmk_agi :agi
  alias :kyon_kmk_int :int
  alias :kyon_kmk_atk :atk
  alias :kyon_kmk_pdef :pdef
  alias :kyon_kmk_mdef :mdef
  alias :kyon_kmk_eva :eva
  def initialize(troop_id, member_index)
    kyon_kmk_init(troop_id, member_index)
    @boost = KMonsTerrain.boosts[@enemy_id]
    @debuff = KMonsTerrain.debuff[@enemy_id]
    @terrains = KMonsTerrain.monster_terrains[@enemy_id]
    @bad_terrains = KMonsTerrain.bad_terrains[@enemy_id]
  end

  def maxhp
    base = terrain_included? ? @boost.hp : 0
    base += @debuff.hp if bad_terrain_included?
    base += kyon_kmk_hp
  end

  def maxsp
    base = terrain_included? ? @boost.sp : 0
    base += @debuff.sp if bad_terrain_included?
    base += kyon_kmk_sp
  end

  def str
    base = terrain_included? ? @boost.str : 0
    base += @debuff.str if bad_terrain_included?
    base += kyon_kmk_str
  end

  def dex
    base = terrain_included? ? @boost.dex : 0
    base += @debuff.dex if bad_terrain_included?
    base += kyon_kmk_dex
  end

  def agi
    base = terrain_included? ? @boost.agi : 0
    base += @debuff.agi if bad_terrain_included?
    base += kyon_kmk_agi
  end

  def int
    base = terrain_included? ? @boost.int : 0
    base += @debuff.int if bad_terrain_included?
    base += kyon_kmk_int
  end

  def atk
    base = terrain_included? ? @boost.atk : 0
    base += @debuff.atk if bad_terrain_included?
    base += kyon_kmk_atk
  end

  def pdef
    base = terrain_included? ? @boost.pdef : 0
    base += @debuff.pdef if bad_terrain_included?
    base += kyon_kmk_pdef
  end

  def mdef
    base = terrain_included? ? @boost.mdef : 0
    base += @debuff.mdef if bad_terrain_included?
    base += kyon_kmk_mdef
  end

  def eva
    base = terrain_included? ? @boost.eva : 0
    base += @debuff.eva if bad_terrain_included?
    base += kyon_kmk_eva
  end

  def actions
    ba = terrain_included? ? @boost.actions : []
    return $data_enemies[@enemy_id].actions + ba
  end

  def choose_terrain
    lands = @terrains + @bad_terrains
    lands[rand(lands.size)]
  end
  def terrain_included?() @terrains.include?(KMonsTerrain.terrain) end
  def bad_terrain_included?() @bad_terrains.include?(KMonsTerrain.terrain) end
end

class Scene_Battle
  alias :kyon_kmk_scn_battle_battle_end :battle_end
  def battle_end(result)
    KMonsTerrain.terrain = 0
    kyon_kmk_scn_battle_battle_end(result)
  end
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.

#2KMonstersTerrain XP Empty Re: KMonstersTerrain XP el Mar Ago 20, 2019 4:28 am

kyonides

kyonides
Bueno he regresado para publicar una nueva versión que corrige un error en el parser alias script de configuración y para agregar una característica nueva en el script principal. Esta es que ahora los monstruos pueden aprender nuevas técnicas (llamadas acciones en los scripts originales) si y solo si el terreno elegido con la técnica especial está incluido en el listado de terrenos favorables. De lo contrario es como si este script no existiera y la técnica fallara... :S

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.