This requires scripting, yet also possible eventing.
Basically, what you would want to do (making things as simple as I can), is to make an event when a weapon/armor is gained which goes as follows:
Change Weapons: [Sword], + 1
Change Skills: [Aluxes], + [Slice]
This will make the player learn the skill as the weapon is gained.
Now, the next step, to make things simple, is to go into Game_System. Below line 22 (unless modified), add:
attr_accessor :weapon_skill
attr_accessor :armor_skill
Below line 37, add:
@weapon_skill = []
@armor_skill = []
Below the @armor_skill = [] line you can add all weapons and armor to skills. An example:
@weapon_skill[15] = 1
@armor_skill[20] = 1
To explain this code, skill number 15 (from the database) requires weapon number 1 to be equipped.
Skill number 20 requires armor number 20 to be equipped.
Next step is to fix the color for the skill if weapons are equipped, and allow/disallow it being used.
Unless modified, go into Window_Skill, and add this right below line 67:
if $game_system.weapon_skill[skill.id] != nil or $game_system.armor_skill[skill.id] != nil
if @actor.weapon_id == $game_system.weapon_skill[skill.id]
self.contents.font.color = normal_color
elsif @actor.armor1_id == $game_system.armor_skill[skill.id] or @actor.armor2_id == $game_system.armor_skill[skill.id] or @actor.armor3_id == $game_system.armor_skill[skill.id] or @actor.armor4_id == $game_system.armor_skill[skill.id]
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
else
self.contents.font.color = disabled_color
end
That code is pretty messy, but it should work.
Now, as you can still use skills, we need to disallow or allow skills to be used based on such conditions.
Go into Scene_Skill. Right below line 95, add:
if $game_system.weapon_skill[skill.id] != nil or $game_system.armor_skill[skill.id] != nil
if @actor.weapon_id != $game_system.weapon_skill[skill.id]
$game_system.se_play($data_system.buzzer_se)
return
elsif @actor.armor1_id != $game_system.armor_skill[skill.id] or @actor.armor2_id != $game_system.armor_skill[skill.id] or @actor.armor3_id != $game_system.armor_skill[skill.id] or @actor.armor4_id != $game_system.armor_skill[skill.id]
$game_system.se_play($data_system.buzzer_se)
return
end
else
$game_system.se_play($data_system.buzzer_se)
return
end
Still a bit messy, but it should work perfectly fine.
If you experience any errors, please report them here.
Hope this helps.