Advertisement
Zetu

StealAce v1.01

Dec 7th, 2011
3,071
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.16 KB | None | 0 0
  1. module Z05
  2.  
  3.   STEAL_SKILL = /<steal>/i
  4.   STEAL_OBJ   = /<steal[:]*\s*(WEAPON|ITEM|ARMOR|GOLD)\s*(\d+)>/i
  5.  
  6.   NO_STEALS     = "%s has nothing to steal."
  7.   STEAL_GOLD    = "Stole %s gold from %s."
  8.   STEAL_ITEM    = "Stole %s from %s."
  9.  
  10.  end
  11.  
  12. class Window_BattleLog < Window_Selectable
  13.  
  14.   def display_steal(target)
  15.     item = target.last_stolen_item
  16.     print item;print "\n"
  17.     if item.nil?
  18.       add_text(sprintf(Z05::NO_STEALS, target.name))
  19.       print "Nothing to Steal\n"
  20.     elsif item.is_a?(Integer)
  21.       add_text(sprintf(Z05::STEAL_GOLD, item, target.name))
  22.       print "Stole #{item} Gold\n"
  23.     else
  24.       add_text(sprintf(Z05::STEAL_ITEM, item.name, target.name))
  25.       print "Stole #{item.name}\n"
  26.     end
  27.     target.reset_steal_item
  28.   end
  29.  
  30.   alias z05dd display_damage
  31.   def display_damage(target, item)
  32.     z05dd(target, item)
  33.     display_steal(target) if item.steal?
  34.   end
  35.  
  36. end
  37.  
  38. class RPG::UsableItem < RPG::BaseItem
  39.   def steal?
  40.     self.note.scan(Z05::STEAL_SKILL){return true}
  41.     return false
  42.   end
  43. end
  44.  
  45. class Game_Enemy < Game_Battler
  46.     attr_reader :last_stolen_item
  47.  
  48.   alias z05_initialize initialize
  49.   def initialize(index, enemy_id)
  50.     z05_initialize(index, enemy_id)
  51.     z05_start
  52.   end
  53.  
  54.   def z05_start
  55.     @steal_data = []
  56.     self.enemy.note.scan(Z05::STEAL_OBJ){|type, id|
  57.       case type
  58.       when /item/i
  59.         @steal_data.push($data_items[id.to_i])
  60.       when /weapon/i
  61.         @steal_data.push($data_weapons[id.to_i])
  62.       when /armor/i
  63.         @steal_data.push($data_armors[id.to_i])
  64.       when /gold/i
  65.         @steal_data.push(id.to_i)
  66.       end
  67.     }
  68.   end
  69.  
  70.   def apply_steal_effect
  71.     return nil if @steal_data.size==0
  72.     return @last_stolen_item=@steal_data.delete_at(rand(@steal_data.size))
  73.   end
  74.  
  75.   def item_apply(user, item)
  76.     super
  77.     add_item_steal_effect if item.steal? unless @result.missed
  78.   end
  79.  
  80.   def add_item_steal_effect
  81.     @stolenitem = apply_steal_effect
  82.     return if @stolenitem.nil?
  83.     if @stolenitem.is_a?(Integer)
  84.       $game_party.gain_gold(@stolenitem)
  85.     else
  86.       $game_party.gain_item(@stolenitem, 1)
  87.     end
  88.   end
  89.  
  90.   def reset_steal_item
  91.     @last_stolen_item=nil
  92.   end
  93.  
  94. end
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement