instinct04
Member
Can i request for a script that enchants the user of the weapon a new skill when the when is equiped and when it is inequiped the skill will be deleted?
module RPG
class Weapon
#weapon_id => skill_id
#look at these IDs in the database
#strip out the leading zeroes
#separate each input by commas as example:
SKILL_WEAPONS =
{
1 => 1,
2 => 7
}
end
class Armor
#armor_id => skill_id
#look at these IDs in the database
#strip out the leading zeroes
#separate each input by commas as example:
SKILL_ARMORS =
{
1 => 16,
2 => 22,
5 => 6
}
end
end
class Game_Actor < Game_Battler
attr_accessor :old_weapon_id,:old_armor1_id,:old_armor2_id,:old_armor3_id,:old_armor4_id
#learn skill when equipping weapon
def set_weapon_attr(weapon_index)
skill_id = RPG::Weapon::SKILL_WEAPONS[weapon_index]
#set skill
unless skill_id == nil
#skill already learnt?
unless skills.include?(skill_id)
learn_skill(skill_id)
end
end
end
def remove_weapon_attr(weapon_index)
unless weapon_index == 0
skill_id = RPG::Weapon::SKILL_WEAPONS[weapon_index]
#remove skills
unless skill_id == nil
if skills.include?(skill_id)
forget_skill(skill_id)
end
end
end
end
#learn skill when equipping armor
def set_armor_attr(armor_index)
skill_id = RPG::Armor::SKILL_ARMORS[armor_index]
#set skill
unless skill_id == nil
#skill already learnt?
unless skills.include?(skill_id)
learn_skill(skill_id)
end
end
end
def remove_armor_attr(armor_index)
unless armor_index == 0
skill_id = RPG::Armor::SKILL_ARMORS[armor_index]
#remove skills
unless skill_id == nil
if skills.include?(skill_id)
forget_skill(skill_id)
end
end
end
end
alias skilled_setup setup
def setup(actor_id)
skilled_setup(actor_id)
#set skills for initial equipment, if any
set_weapon_attr(@weapon_id) unless @weapon_id == 0
set_armor_attr(@armor1_id) unless @armor1_id == 0
set_armor_attr(@armor2_id) unless @armor2_id == 0
set_armor_attr(@armor3_id) unless @armor3_id == 0
set_armor_attr(@armor4_id) unless @armor4_id == 0
@old_weapon_id = @weapon_id
@old_armor1_id = @armor1_id
@old_armor2_id = @armor2_id
@old_armor3_id = @armor3_id
@old_armor4_id = @armor4_id
end
def equip(equip_type, id)
case equip_type
when 0 # Weapon
if id == 0 or $game_party.weapon_number(id) > 0
$game_party.gain_weapon(@weapon_id, 1)
@old_weapon_id = @weapon_id
@weapon_id = id
$game_party.lose_weapon(id, 1)
end
when 1 # Shield
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor1_id], $data_armors[id])
$game_party.gain_armor(@armor1_id, 1)
@old_armor1_id = @armor1_id
@armor1_id = id
$game_party.lose_armor(id, 1)
end
when 2 # Head
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor2_id], $data_armors[id])
$game_party.gain_armor(@armor2_id, 1)
@old_armor2_id = @armor2_id
@armor2_id = id
$game_party.lose_armor(id, 1)
end
when 3 # Body
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor3_id], $data_armors[id])
$game_party.gain_armor(@armor3_id, 1)
@old_armor3_id = @armor3_id
@armor3_id = id
$game_party.lose_armor(id, 1)
end
when 4 # Accessory
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor4_id], $data_armors[id])
$game_party.gain_armor(@armor4_id, 1)
@old_armor4_id = @armor4_id
@armor4_id = id
$game_party.lose_armor(id, 1)
end
end
end
end
class Scene_Equip
alias skilled_update_item update_item
def update_item
skilled_update_item
case @right_window.index
when 0 #weapon
#remove weapon?
if @actor.weapon_id != @actor.old_weapon_id
weap_index = @actor.old_weapon_id
@actor.remove_weapon_attr(weap_index)
end
#set weapon?
unless @actor.weapon_id == 0 then
weap_index = @actor.weapon_id
#set skills
unless weap_index == 0
@actor.set_weapon_attr(weap_index)
end
end
when 1 #armor #1
#remove armor1?
if @actor.old_armor1_id != @actor.armor1_id then
armor_index = @actor.old_armor1_id
@actor.remove_armor_attr(armor_index)
end
#set armor1?
if @actor.armor1_id != 0 then
armor_index = @actor.armor1_id
#sets skills
@actor.set_armor_attr(armor_index)
end
when 2 #armor #2
#remove armor2?
if @actor.old_armor2_id != @actor.armor2_id then
armor_index = @actor.old_armor2_id
@actor.remove_armor_attr(armor_index)
end
#set armor2?
if @actor.armor2_id != 0 then
armor_index = @actor.armor2_id
#sets skills
@actor.set_armor_attr(armor_index)
end
when 3 #armor #3
#remove armor3?
if @actor.old_armor3_id != @actor.armor3_id then
armor_index = @actor.old_armor3_id
@actor.remove_armor_attr(armor_index)
end
#set armor3?
if @actor.armor3_id != 0 then
armor_index = @actor.armor3_id
#sets skills
@actor.set_armor_attr(armor_index)
end
when 4 #armor #4
#remove armor4?
if @actor.old_armor4_id != @actor.armor4_id then
armor_index = @actor.old_armor4_id
@actor.remove_armor_attr(armor_index)
end
#set armor4?
if @actor.armor4_id != 0 then
armor_index = @actor.armor4_id
#sets skills
@actor.set_armor_attr(armor_index)
end
end
end
end