Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # Szyu's Item's Class Restriction
- # Version 1.2
- # By Szyu
- #
- # About:
- # Easily specify items, weapons and armors, which can only be used/equipped
- # by certain classes
- #
- # Instructions:
- # - Place below "▼ Materials" but above "▼ Main Process".
- #
- # How to Use:
- # - An item's note have to contain one of these:
- # <classes: x> # This will allow specified classes to use this item
- # <!classes: x> # This will forbit specified classes to use this item
- #
- # Seperate multiple classes with ','!
- # Allowed Database Items, which can be restricted by this script:
- # - Items
- # - Weapons
- # - Armors
- #
- # If There is none of those tags in the items note, every class is permitted to
- # use or equip this item
- #
- #
- # Requires:
- # - RPG Maker VX Ace
- #
- # Terms of Use:
- # - Free for commercal and non-commercial use. Please list me
- # in the credits to support my work.
- #
- #
- # Changelog:
- # - Same syntax can now be used to restrict for actors:
- # <actors: x>
- # <!actors: x>
- # - Added Use Restriction for battles too. Restricted classes and actors can no
- # longer use restricted items in battle
- #
- #
- #
- # Pastebin:
- # http://adf.ly/rYIZm
- #
- #
- #==============================================================
- # * Game_BattlerBase
- #==============================================================
- class Game_BattlerBase
- alias sz_iucr_equippable? equippable?
- def equippable?(item)
- return false unless item.is_a?(RPG::EquipItem)
- return false if self.is_a?(Game_Actor) &&
- (item.forbid_classes.include?(self.class_id) || item.forbid_actors.include?(self.id))
- return sz_iucr_equippable?(item)
- end
- end
- #==============================================================
- # * Game_Battler
- #==============================================================
- class Game_Battler < Game_BattlerBase
- alias sz_iucr_item_test item_test
- def item_test(user, item)
- return false if item.is_a?(RPG::Item) &&
- (item.forbid_classes.include?(self.class_id) || item.forbid_actors.include?(self.id))
- return sz_iucr_item_test(user, item)
- end
- end
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- #==============================================================
- # * Initialize BaseItems
- #==============================================================
- module DataManager
- class << self
- alias load_db_iucr_sz load_database
- end
- def self.load_database
- load_db_iucr_sz
- load_iucr_items
- end
- def self.load_iucr_items
- groups = [$data_items, $data_weapons, $data_armors]
- for group in groups
- for obj in group
- next if obj.nil?
- obj.load_iucr_notetags_sz
- end
- end
- end
- end
- #==============================================================================
- # ** Window_BattleActor
- #------------------------------------------------------------------------------
- # This window is for selecting an actor's action target on the battle screen.
- #==============================================================================
- class Window_BattleActor < Window_BattleStatus
- #--------------------------------------------------------------------------
- # * Get Activation State of Selection Item
- #--------------------------------------------------------------------------
- def current_item_enabled?
- return false if !BattleManager.actor.input.item.is_a?(RPG::UsableItem) ||
- BattleManager.actor.input.item.forbid_classes.include?(BattleManager.actor.input.subject.class_id) ||
- BattleManager.actor.input.item.forbid_actors.include?(BattleManager.actor.input.subject.id)
- return true
- end
- end
- #==============================================================
- # * Content of Recycling Items
- #==============================================================
- class RPG::BaseItem
- attr_accessor :forbid_classes
- attr_accessor :forbid_actors
- def load_iucr_notetags_sz
- @forbid_classes = []
- @forbid_actors = []
- self.note.split(/[\r\n]+/).each do |line|
- # Forbid Classes
- if line =~ /<classes:([\d+,?\s*]+)>/i
- $data_classes.each do |cl|
- @forbid_classes.push(cl.id) if cl
- end
- $1.scan(/\s*,?\d+,?\s*/i).each do |cl|
- @forbid_classes.delete(cl.to_i)
- end
- elsif line =~ /<!classes:([\d+,?\s*]+)>/i
- $1.scan(/\s*,?\d+,?\s*/i).each do |cl|
- @forbid_classes.push(cl.to_i)
- end
- # Forbid Actors
- elsif line =~ /<actors:([\d+,?\s*]+)>/i
- $data_actors.each do |ac|
- @forbid_actors.push(ac.id) if ac
- end
- $1.scan(/\s*,?\d+,?\s*/i).each do |ac|
- @forbid_actors.delete(ac.to_i)
- end
- elsif line =~ /<!actors:([\d+,?\s*]+)>/i
- $1.scan(/\s*,?\d+,?\s*/i).each do |ac|
- @forbid_actors.push(ac.to_i)
- end
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement