ArmorKlass - kyonides - 01-02-2023
ArmorKlass
XP + VX + ACE
by Kyonides Arkanthes
Introduction
Change your Hero's class by changing his Body Armor!
Setup Process
- You will need to define a Default Class for the Hero.
- All body armors should be available for everybody.
VX & ACE
- Leave a very specific note in all of the existing body armors!
XP
- Set the Range of Valid Element IDs that represent all of the available Classes!
XP Script
Code: # * ArmorKlass XP * #
# 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.
# Create as many Extra Elements as the existing Classes.
# In the ELEMENT_IDS Constant set the Range of Element IDs.
module ArmorKlass
ELEMENT_IDS = 17..25
DEFAULT_CLASS_ID = 1
end
class Game_Actor
alias :kyon_armor_klass_gm_actor_equip :equip
def set_equip_class(equip_type, eid)
return if equip_type != 3
element_ids = ArmorKlass::ELEMENT_IDS
if eid > 0
element_set = $data_armors[@armor3_id].guard_element_set
ary = element_ids.to_a & element_set
klass_id = ary[0] - element_ids.first + 1
else
klass_id = ArmorKlass::DEFAULT_CLASS_ID
end
self.class_id = klass_id if @class_id != klass_id
end
def equip(equip_type, eid)
kyon_armor_klass_gm_actor_equip(equip_type, eid)
set_equip_class(equip_type, eid)
end
end
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.
RE: ArmorKlass - kyonides - 01-03-2023
Some Light Armored Update!
Well guys, I had to come back to this very same thread to make sure that all of the RGSS based Makers had their own version of my ArmorKlass script available here. And just before people would start complaining about not understanding such a simple script, I have uploaded 3 demos to Mediafire already.
Happy New Year!
|