Save-Point
ArmorKlass VX + ACE - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker VX/VXAce (RGSS2/3) Engines (https://www.save-point.org/forum-117.html)
+---- Thread: ArmorKlass VX + ACE (/thread-9674.html)



ArmorKlass VX + ACE - kyonides - 09-27-2024

ArmorKlass VX + ACE

by Kyonides


Introduction

Change your Hero's class by changing his Body Armor! Shocked

Setup Process
  • You will need to define a Default Class for the Hero.
  • All body armors should be available for everybody.
  • Leave a very specific note in all of the existing body armors!

VX Script

Code:
# * ArmorKlass VX * #
#  Scripter : Kyonides Arkanthes
#  2023-01-02

# Change a Hero's Class by changing his Body Armor!
# You will need to define a Default Class for the Hero.
# All body armors should be available for everybody.

# * Armor Note - N stands for a Class ID.
# <class id: N>

module ArmorKlass
  REGEX = /<class id: (\d+)>/i
  DEFAULT_CLASS_ID = 1
end

class Game_Actor
  alias :kyon_armor_klass_gm_actor_ch_eq :change_equip
  alias :kyon_armor_klass_gm_actor_disc_eq :discard_equip
  def set_equip_class(equip_type, item, force=nil)
    return if force.nil? and (item.nil? or equip_type != 3)
    item.note[ArmorKlass::REGEX] unless force
    klass_id = $1 ? $1.to_i : ArmorKlass::DEFAULT_CLASS_ID
    self.class_id = klass_id if @class_id != klass_id
  end

  def change_equip(equip_type, item, test=false)
    kyon_armor_klass_gm_actor_ch_eq(equip_type, item, test)
    set_equip_class(equip_type, item) unless test
  end

  def discard_equip(item)
    kyon_armor_klass_gm_actor_disc_eq(item)
    return unless item.is_a?(RPG::Armor) and @armor2_id == item.id
    set_equip_class(2, item, true)
  end
end

ACE Script

Code:
# * ArmorKlass ACE * #
#  Scripter : Kyonides Arkanthes
#  2023-01-02

# Change a Hero's Class by changing his Body Armor!
# You will need to define a Default Class for the Hero.
# All body armors should be available for everybody.

# * Armor Note - N stands for a Class ID.
# <class id: N>

module ArmorKlass
  REGEX = /<class id: (\d+)>/i
  DEFAULT_CLASS_ID = 1
end

class Game_Actor
  alias :kyon_armor_klass_gm_actor_ch_eq :change_equip
  alias :kyon_armor_klass_gm_actor_force_ch_eq :force_change_equip
  alias :kyon_armor_klass_gm_actor_disc_eq :discard_equip
  def set_equip_class(slot_id, item, force=nil)
    return if force.nil? and (item.nil? or slot_id != 3)
    item.note[ArmorKlass::REGEX] unless force
    klass_id = $1 ? $1.to_i : ArmorKlass::DEFAULT_CLASS_ID
    change_class(klass_id) if @class_id != klass_id
  end

  def change_equip(slot_id, item)
    kyon_armor_klass_gm_actor_ch_eq(slot_id, item)
    set_equip_class(slot_id, item)
  end

  def force_change_equip(slot_id, item)
    kyon_armor_klass_gm_actor_force_ch_eq(slot_id, item)
    set_equip_class(slot_id, item)
  end

  def discard_equip(item)
    kyon_armor_klass_gm_actor_disc_eq(item)
    set_equip_class(slot_id, item, true) if slot_id == 3
  end
end



Terms & Conditions

Free for use anywhere.
Just mention me in your game credits.
I really hope this won't be the only script of mine that you will include in your game project.