¡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.]

#1 KSummon XP el Vie Oct 12, 2018 6:13 am

kyonides

avatar
KSummon XP


Versiones Kiwi y Mango


por Kyonides-Arkanthes

Introducción

[gruñón] ¡Vete al diablo! [/gruñón] No, ¡es broma! Ópalo Sonrisa Grande

Este corto script les permitirá configurar una invocación de una arma o armadura mediante una técnica o skill. Le permitirá a un mago o clérigo invocarla para ayudar a un camarada (no commie) en batalla a mejorar sus estadísticas de ataque, etc. Aún así deben saber que puede fallar y dejar al camarada (nunca ruso) en una difícil situación al no equiparse una arma decente o lo que sea, si la había...

Según un fanático furry de Elder Scrolls, se le conoce como Bound Weapons o Bound Armors (¿Armas enlazadas? ¿Armaduras enlazadas?). Nunca lo he jugado así que me era imposible imaginarme que eso pudiera ser popular ahí.

Además es posible permitir que un sprite salte justo cuando tuvo éxito la invocación al darles el nombre de dicha arma. (Sin embargo, yo detesto esa opción para serles franco.)


Compatibilidad



  • Sistema de Batallas del XP
  • Brenda's Visual Battlers
  • Action Cost System
  • Agility Based Battlesystem
  • MakirouAru's ATB
  • ParaDog's ATB
  • XRXS65
  • Cogwheel's RTAB (sin aviso de la nueva arma)
  • ???


Los Tan Esperados Scripts

Versión Kiwi

Código:
# * KSummon XP - Versión Kiwi alias Edición Armas y Armaduras
#   Scripter : Kyonides-Arkanthes
#   2018-10-12

# Este script corto les permitirá usar una habilidad o skill para invocar una
# arma o armadura, pasándole por encima a las limitaciones de la base de datos
# que por lo general les impedirían hacer tal cosa.

# Por favor noten que el valor de retorno por defecto para hashes de WEAPONS y
# otros es el ID de arma o pieza de equipo para el héroe aliado de fallar esto.

module KSummon
  # ¿Usa un sprite saltarín para contarle al jugador del éxito de la invocación?
  USE_POP_UP_LABEL = true # true - ¡Muéstralo!, nil - ¡Ni te atrevas!
  WEAPON_SKILL = 81 # No puede ser igual a BODY_ARMOR_SKILL
  WEAPONS = {} # ¡No debes tocar esto!
  WEAPONS.default = 0 # Debe ser 0 o superior si es de una arma existente
  WEAPONS[1] = (33..38).to_a # Agrega IDs de Espadas para Alexis
  WEAPONS[2] = (39..44).to_a # Agrega IDs de Lanzas para Basilio
  BODY_ARMOR_SKILL = 82 # No puede ser igual a WEAPON_SKILL
  BODY_ARMORS = {} # ¡No debes tocar esto!
  BODY_ARMORS.default = 0 # Debe ser 0 o superior si es de una arm. existente
  BODY_ARMORS[1] = (33..38).to_a # Agrega IDs de Armaduras para Alexis
  BODY_ARMORS[2] = (39..44).to_a # Agrega IDs de Armaduras para Basilio
  # Fin de la Sección de Configuración #
  module_function
  def clear_equipment
    @weapons.clear
    @body_armors.clear
  end
  def weapons() @weapons end
  def body_armors() @body_armors end
  @weapons = {}
  @body_armors = {}
end

class Game_Battler
  alias gm_b_skill_effect skill_effect
  def skill_effect(user, skill)
    result = gm_b_skill_effect(user, skill)
    case skill.id
    when KSummon::WEAPON_SKILL
      force_change_equip(:weapon, true)
      if KSummon::USE_POP_UP_LABEL and @weapon_id != 0
        self.damage = $data_weapons[@weapon_id].name
      end
    when KSummon::BODY_ARMOR_SKILL
      force_change_equip(:body, true)
      if KSummon::USE_POP_UP_LABEL and @armor3_id != 0
        self.damage = $data_armors[@armor3_id].name
      end
    end
    return result
  end
end

class Game_Actor
  def force_change_equip(kind, set_equipment)
    case kind
    when :weapon
      if set_equipment
        KSummon.weapons[@actor_id] = @weapon_id
        ary = KSummon::WEAPONS[@class_id]
        return @weapon_id = ary[rand(ary.size)]
      else
        weapons = KSummon.weapons
        return unless weapons.keys.include?(@actor_id)
        @weapon_id = weapons[@actor_id]
        return KSummon.weapons.delete(@actor_id)
      end
    when :body
      if set_equipment
        KSummon.body_armors[@actor_id] = @armor3_id
        ary = KSummon::BODY_ARMORS[@class_id]
        return @armor3_id = ary[rand(ary.size)]
      else
        armors = KSummon.body_armors
        return unless armors.keys.include?(@actor_id)
        @armor3_id = KSummon.body_armors[@actor_id]
        return KSummon.body_armors.delete(@actor_id)
      end
    end
  end
end

class Scene_Battle
  alias kyon_ksummon_scn_battle_end battle_end
  def battle_end(result)
    $game_party.actors.each do |actor|
      actor.force_change_equip(:weapon, nil)
      actor.force_change_equip(:body, nil)
    end
    KSummon.clear_equipment
    kyon_ksummon_scn_battle_end(result)
  end
end

Versión Mango
Código:
# * KSummon XP - Versión Mango
#   alias Edición Armas Armaduras y Accesorios
#   Scripter : Kyonides-Arkanthes
#   2018-10-12

# Este script corto les permitirá usar una habilidad o skill para invocar una
# arma o armadura, pasándole por encima a las limitaciones de la base de datos
# que por lo general les impedirían hacer tal cosa.

# Por favor noten que el valor de retorno por defecto para hashes de WEAPONS y
# otros es el ID de arma o pieza de equipo para el héroe aliado de fallar esto.

# * ¿Cómo funciona el DONT_LOSE_EQUIP_RATE exclusivo de Mango?

#   NA   : Número Aleatorio - entre 0 y 100
#   DLER : DONT_LOSE_EQUIP_RATE[clase_de_equipo]
#   ML   : Nivel del Mago * MAGE_LVL_MULTIPLIER (Multiplicador)

# El script hace el siguiente chequeo de fallar la invocación:
#   Si NA es mayor que DLER + ML
# Posibles Resultados:
#   Mayor que - ¡Sí, olvídate de lo concerniente a esa pieza de equipo, amigo!
#   Igual o Menor que - Te quedas con tu tonta pieza. Viva...

module KSummon
  # ¿Usa un sprite saltarín para contarle al jugador del éxito de la invocación?
  USE_POP_UP_LABEL = true # true - ¡Muéstralo!, nil - ¡Ni te atrevas!
  # ¿Quédate con el equipo invocado por el mago hasta el final de la batalla?
  KEEP_EQUIPMENT_TILL_BATTLE_ENDS = nil # Values: true - keep it, nil - no way!
  MAGE_LVL_MULTIPLIER = 1 # Nivel del Mago * Multiplicador
  # Probabilidad de Prevenir Pérdida de Equipo: Armas, Petos y Accesorios
  # entre 1 y 100 (Porcentaje) sin incluir Nivel del Mago por su Multiplicador
  DONT_LOSE_EQUIP_RATE = { :weapon => 50, :body => 65, :accessory => 75 }
  # Turnos para Armas, Petos y Accesorios entre 1 y 1000
  TURNS = { :weapon => 5, :body => 7, :accessory => 10 }
  WEAPON_SKILL = 81 # No puede ser igual a BODY_ARMOR_SKILL ni al otro SKILL
  WEAPONS = {} # ¡No debes tocar esto!
  WEAPONS.default = 0 # Debe ser 0 o superior si es de una arma existente
  WEAPONS[1] = (33..38).to_a # Agrega IDs de Espadas para Alexis
  WEAPONS[2] = (39..44).to_a # Agrega IDs de Lanzas para Basilio
  BODY_ARMOR_SKILL = 82 # No puede ser igual a BODY_ARMOR_SKILL ni al otro SKILL
  BODY_ARMORS = {} # ¡No debes tocar esto!
  BODY_ARMORS.default = 0 # Debe ser 0 o superior si es de una arm. existente
  BODY_ARMORS[1] = (33..38).to_a # Agrega IDs de Armaduras para Alexis
  BODY_ARMORS[2] = (39..44).to_a # Agrega IDs de Armaduras para Basilio
  ACCESSORY_SKILL = 83 # No puede ser igual a BODY_ARMOR_SKILL ni al otro SKILL
  ACCESSORIES = {} # ¡No debes tocar esto!
  ACCESSORIES.default = 0 # Debe ser 0 o superior si es de un acces. existente
  ACCESSORIES[1] = (33..38).to_a # Agrega IDs de Accesorios para Alexis
  ACCESSORIES[2] = (39..44).to_a # Agrega IDs de Accesorios para Basilio
  # Fin de la Sección de Configuración #
  class Equip
    attr_reader :id, :kind
    def initialize(equip_id, kind)
      @id = equip_id
      @kind = kind
      @turns = TURNS[kind]
    end
    def no_turns() @turns == 0 end
    def decrease_turn() @turns -= 1 end
  end
  module_function
  def decrease_turn
    return if KEEP_EQUIPMENT_TILL_BATTLE_ENDS
    @weapons.each do |k, e|
      e.decrease_turn
      reset_equip(:weapon, k) if e.no_turns
    end
    @body_armors.each do |k, e|
      e.decrease_turn
      reset_equip(:body, k) if e.no_turns
    end
    @accessor.each do |k, e|
      e.decrease_turn
      reset_equip(:accessory, k) if e.no_turns
    end
  end

  def reset_equip(kind, key)
    $game_actors[key].force_reset_equip(kind) rescue nil
    case kind
    when :weapon then @weapons.delete(key)
    when :body then @body_armors.delete(key)
    when :accessory then @accessor.delete(key)
    end
  end

  def clear_equipment
    @weapons.clear
    @body_armors.clear
    @accessor.clear
  end
  def equip_lost?(kind)
    rand(100) > DONT_LOSE_EQUIP_RATE[kind] + @mage_lvl * MAGE_LVL_MULTIPLIER
  end
  def store_weapon(hid, wid) @weapons[hid] = Equip.new(wid, :weapon) end
  def store_body_armor(hid, bid) @body_armors[hid] = Equip.new(bid, :body) end
  def store_accessory(hid, aid) @accessor[hid] = Equip.new(aid, :accessory) end
  def weapons() @weapons end
  def body_armors() @body_armors end
  def accessories() @accessor end
  def mage_lvl=(level) @mage_lvl = level end
  @weapons = Hash.new{ Equip.new(0, :weapon) }
  @body_armors = Hash.new{ Equip.new(0, :body) }
  @accessor = Hash.new{ Equip.new(0, :accessory) }
end

class Game_Battler
  alias gm_b_skill_effect skill_effect
  def skill_effect(user, skill)
    result = gm_b_skill_effect(user, skill)
    case skill.id
    when KSummon::WEAPON_SKILL
      force_set_equip(:weapon, result, user.level)
      if KSummon::USE_POP_UP_LABEL and @weapon_id != 0
        self.damage = $data_weapons[@weapon_id].name
      end
    when KSummon::BODY_ARMOR_SKILL
      force_set_equip(:body, result, user.level)
      if KSummon::USE_POP_UP_LABEL and @armor3_id != 0
        self.damage = $data_armors[@armor3_id].name
      end
    when KSummon::ACCESSORY_SKILL
      force_set_equip(:accessory, result, user.level)
      if KSummon::USE_POP_UP_LABEL and @armor4_id != 0
        self.damage = $data_armors[@armor4_id].name
      end
    end
    return result
  end
end

class Game_Actor
  def force_set_equip(kind, success, mage_level)
    KSummon.mage_lvl = mage_level
    case kind
    when :weapon
      if success
        KSummon.store_weapon(@actor_id, @weapon_id)
        ary = KSummon::WEAPONS[@class_id]
        return @weapon_id = ary[rand(ary.size)]
      else
        @weapon_id = 0 if KSummon.equip_lost?(kind)
        return 0
      end
    when :body
      if success
        KSummon.store_body_armor(@actor_id, @armor3_id)
        ary = KSummon::BODY_ARMORS[@class_id]
        return @armor3_id = ary[rand(ary.size)]
      else
        @armor3_id = 0 if KSummon.equip_lost?(kind)
        return 0
      end
    when :accessory
      if success
        KSummon.store_accessory(@actor_id, @armor4_id)
        ary = KSummon::ACCESSORIES[@class_id]
        return @armor4_id = ary[rand(ary.size)]
      else
        @armor4_id = 0 if KSummon.equip_lost?(kind)
        return 0
      end
    end
  end

  def force_reset_equip(*kinds)
    kinds.each do |kind|
      case kind
      when :weapon
        weapons = KSummon.weapons
        next unless weapons.keys.include?(@actor_id)
        @weapon_id = weapons[@actor_id].id
        next
      when :body
        armors = KSummon.body_armors
        next unless armors.keys.include?(@actor_id)
        @armor3_id = armors[@actor_id].id
        next
      when :accessory
        accessories = KSummon.accessories
        next unless accessories.keys.include?(@actor_id)
        @armor4_id = accessories[@actor_id].id
      end
    end
  end
end

class Scene_Battle
  alias kyon_ksummon_scn_battle_sp4 start_phase4
  alias kyon_ksummon_scn_battle_end battle_end
  def start_phase4
    KSummon.decrease_turn
    kyon_ksummon_scn_battle_sp4
  end

  def battle_end(result)
    if KSummon::KEEP_EQUIPMENT_TILL_BATTLE_ENDS
      team = $game_party.actors
      team.each {|actor| actor.force_reset_equip(:weapon, :body, :accessory) }
      KSummon.clear_equipment
    end
    kyon_ksummon_scn_battle_end(result)
  end
end


Preguntas Frecuentes o FAQ

P: ¿Por qué lo hiciste si... (seguido de alguna queja)?
R: Pues, no me interesa si les gusta o no les gusta, lo hice porque sí. Ópalo Tuerto

P: ¿Es compatible con mi sistema de batallas personalizado?
R: ¿Cómo rayos lo voy a saber?  Ópalo Tuerto Solo vayan y comprueben eso por sí mismos y luego envíenme un mp para contarme al respecto y así pueda yo agregarlo a la lista de compatibilidad de sistemas.

Duda Extra
P: ¿Por qué uno es Kiwi y otro es Mango?
R: Eso es porque el primero representa el sencillo y el segundo una versión más compleja. No pierdan el tiempo preguntando por qué los elegí en primer lugar.  Ópalo Tuerto  



Términos y Condiciones de Uso

Siempre deben darme el crédito por hacer el script.

Versión Kiwi - Libre de usarlo en proyectos comerciales y no comerciales.
Versión Mango - Libre de usarlo en proyectos no comerciales.

#2 Re: KSummon XP el Sáb Oct 13, 2018 5:11 am

kyonides

avatar
Les escribo para avisarles que ya se ha probado mi script con unos 7 sistemas de batallas o modificaciones del estándar. Para los que estén interesados en utilizarlo, pueden perderle el miedo si su sistema predilecto se encuentra en esa lista.

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.