IceDragon200

Optimize Equipment

Dec 4th, 2011
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.00 KB | None | 0 0
  1.    
  2.     def self.optimize_equip( actor, equips )
  3.       valid_equips = equips.compact.inject([]) { |r, eq|
  4.         r << eq if actor.equippable?( eq ) ; r }
  5.       equip_types = Scene_Equip::EQUIP_TYPE_MAX
  6.       equips_by_type = Array.new( equip_types+1 ).map! { Array.new() }
  7.       last_equips = []
  8.       for i in 0..equip_types
  9.         last_equips[i] = actor.equips[i]
  10.         actor.change_equip( i, nil )
  11.       end
  12.       valid_equips += last_equips.compact
  13.       valid_equips.each { |eq|
  14.         case eq
  15.         when RPG::Weapon
  16.           equips_by_type[0]  << eq
  17.         when RPG::Armor
  18.           equips_by_type[eq.kind+1] << eq unless eq.kind == 3
  19.         end
  20.       }
  21.       #//.sort! { |a, b| a.atk <=> b.atk } # // Weapons
  22.       equips_by_type[0].each { |wp|
  23.         dup_actor = Marshal.load( Marshal.dump( actor ) )
  24.         dup_actor.change_equip_by_id( 0, wp.id, true )
  25.         if dup_actor.atk > actor.atk
  26.           dup_actor.change_equip_by_id( 0, 0, true )
  27.           actor.change_equip_by_id( 0, 0, false )
  28.           actor.change_equip_by_id( 0, wp.id, false )
  29.         end  
  30.         dup_actor.change_equip( 0, 0, true )
  31.         if actor.two_swords_style
  32.           dup_actor.change_equip_by_id( 1, wp.id, true )
  33.           if dup_actor.atk > actor.atk
  34.             dup_actor.change_equip_by_id( 1, 0, true )
  35.             actor.change_equip_by_id( 1, 0 )
  36.             actor.change_equip_by_id( 1, wp.id )
  37.           end
  38.           dup_actor.change_equip_by_id( 1, 0, true )
  39.         end  
  40.       }
  41.       rng = actor.two_swords_style ? 2..equip_types : 1..equip_types
  42.       for i in rng
  43.         #.sort! { |a, b| a.def <=> b.def } # // Armor
  44.         equips_by_type[i].each { |ar|
  45.           dup_actor = Marshal.load( Marshal.dump( actor ) )
  46.           dup_actor.change_equip( i, ar )
  47.           if dup_actor.def > actor.def
  48.             dup_actor.change_equip( i, nil ) ; actor.change_equip( i, ar )
  49.           end
  50.           dup_actor.change_equip( i, nil )
  51.         }
  52.       end
  53.     end
  54.    
  55.  
Advertisement
Add Comment
Please, Sign In to add comment