#--------------------------------# # Dramatic Lightning Co Presents: # Bondage Armor System 1.5 #--------------------------------# # This script will make some equipment act like bondage items. # In other words, you can't equip or remove a bodybag unless # you have someone else who's not bound. #--------------------------------# # Use or on equipment. # The numbers can cover other equipment slots. # Bondage Equipment will be red. #--------------------------------# # You can also use on equipment. # Everyone can wear these kinds of knee boots, # but they won't be easy to move around when bound. # These Equipment will be yellow. #--------------------------------# # Also, if you give an actor or class , # they can remove such equipment from themselves # and also equip it even if they're the remaining one! #--------------------------------# # Even for an escape artist, you can add on # and to various things, # making some equips harder to remove or # able to help you escape your self-bondage #--------------------------------# class RPG::BaseItem def disarm? return self.note.match(//i) end def disarm_extra? res = self.note.match(//i) if res return res[1].to_s end return nil end def disarm_level res = self.note.match(//i) if res return res[1].to_i end return 0 end def escape_artist_level res = self.note.match(//i) if res return res[1].to_i end return 0 end def disarm_dependent? return self.note.match(//i) end def escapeartist? return self.note.match(//i) end end class Game_Party < Game_Unit def party_disarmed? return all_members.all?{|member| member.is_disarmed?} end end class Game_Actor < Game_Battler def cannot_ea?(item) return true if !is_escape_artist? return false if item == nil return true unless item.disarm? or item.disarm_extra? or item.disarm_dependent? disarming = item.disarm_level + ds_level escaping = ea_level return disarming > escaping end def ds_level bob = 0 @states.each do |i| bob += $data_states[i].disarm_level end return bob end def ea_level bob = 0 @states.each do |i| bob += $data_states[i].escape_artist_level end weapons.each do |weapon| bob += weapon.escape_artist_level end armors.each do |armor| bob += armor.escape_artist_level end bob += actor.escape_artist_level bob += self.class.escape_artist_level return bob end def is_disarmed? return true if weapons.any? {|item| item.disarm_extra? != nil or item.disarm?} return true if armors.any? {|item| item.disarm_extra? != nil or item.disarm?} return false end def is_escape_artist? return true if self.class.escapeartist? return true if actor.escapeartist? return false end alias :dl_ce_change_equip :change_equip def change_equip(slot_id, item) bob = @equips[slot_id].object @equips[slot_id].object = item if $game_party.party_disarmed? @equips[slot_id].object = bob if is_escape_artist? dl_ce_change_equip(slot_id, item) elsif (bob and (bob.disarm_extra? != nil or bob.disarm? or bob.disarm_dependent?)) or (item and (item.disarm_extra? != nil or item.disarm? or item.disarm_dependent?)) Sound.play_buzzer else dl_ce_change_equip(slot_id, item) end else @equips[slot_id].object = bob dl_ce_change_equip(slot_id, item) end end def equip_change_ok?(slot_id) return false if equip_type_fixed?(equip_slots[slot_id]) return false if equip_type_sealed?(equip_slots[slot_id]) if self.is_disarmed? and $game_party.party_disarmed? armors.each do |equip| bob = equip.disarm_extra? next unless bob equip_slots.each do |slot| bob2 = slot.to_s if bob and bob.include?(bob2) and cannot_ea?(equip) return false if bob2.to_i == slot_id end end end bobby = @equips[slot_id].object return true if bobby == nil if cannot_ea?(bobby) return false if (bobby.disarm? or bobby.disarm_extra? != nil) return false if bobby.disarm_dependent? end end return true end end class Window_Base < Window def draw_item_name(item, x, y, enabled = true, width = 172) return unless item draw_icon(item.icon_index, x, y, enabled) bob = normal_color if item.is_a?(RPG::Armor) bob = Color.new(255, 180, 180,255) if item.disarm? or item.disarm_extra? bob = Color.new(255, 255, 180,255) if item.disarm_dependent? end change_color(bob, enabled) draw_text(x + 24, y, width, line_height, item.name) change_color(normal_color, enabled) end end