module Z05 STEAL_SKILL = //i STEAL_OBJ = //i NO_STEALS = "%s has nothing to steal." STEAL_GOLD = "Stole %s gold from %s." STEAL_ITEM = "Stole %s from %s." end class Window_BattleLog < Window_Selectable def display_steal(target) item = target.last_stolen_item print item;print "\n" if item.nil? add_text(sprintf(Z05::NO_STEALS, target.name)) print "Nothing to Steal\n" elsif item.is_a?(Integer) add_text(sprintf(Z05::STEAL_GOLD, item, target.name)) print "Stole #{item} Gold\n" else add_text(sprintf(Z05::STEAL_ITEM, item.name, target.name)) print "Stole #{item.name}\n" end target.reset_steal_item end alias z05dd display_damage def display_damage(target, item) z05dd(target, item) display_steal(target) if item.steal? end end class RPG::UsableItem < RPG::BaseItem def steal? self.note.scan(Z05::STEAL_SKILL){return true} return false end end class Game_Enemy < Game_Battler attr_reader :last_stolen_item alias z05_initialize initialize def initialize(index, enemy_id) z05_initialize(index, enemy_id) z05_start end def z05_start @steal_data = [] self.enemy.note.scan(Z05::STEAL_OBJ){|type, id| case type when /item/i @steal_data.push($data_items[id.to_i]) when /weapon/i @steal_data.push($data_weapons[id.to_i]) when /armor/i @steal_data.push($data_armors[id.to_i]) when /gold/i @steal_data.push(id.to_i) end } end def apply_steal_effect return nil if @steal_data.size==0 return @last_stolen_item=@steal_data.delete_at(rand(@steal_data.size)) end def item_apply(user, item) super add_item_steal_effect if item.steal? unless @result.missed end def add_item_steal_effect @stolenitem = apply_steal_effect return if @stolenitem.nil? if @stolenitem.is_a?(Integer) $game_party.gain_gold(@stolenitem) else $game_party.gain_item(@stolenitem, 1) end end def reset_steal_item @last_stolen_item=nil end end