Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Request! Plss help be

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?
 
Once I fulfilled this request, but I lost track of which thread was it >.< but here it is:

Code:
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
It will also work for armors, so if you don't want it, leave SKILL_ARMORS hash empty.

I really should reorganize my signature...
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top