Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def self.optimize_equip( actor, equips )
- valid_equips = equips.compact.inject([]) { |r, eq|
- r << eq if actor.equippable?( eq ) ; r }
- equip_types = Scene_Equip::EQUIP_TYPE_MAX
- equips_by_type = Array.new( equip_types+1 ).map! { Array.new() }
- last_equips = []
- for i in 0..equip_types
- last_equips[i] = actor.equips[i]
- actor.change_equip( i, nil )
- end
- valid_equips += last_equips.compact
- valid_equips.each { |eq|
- case eq
- when RPG::Weapon
- equips_by_type[0] << eq
- when RPG::Armor
- equips_by_type[eq.kind+1] << eq unless eq.kind == 3
- end
- }
- #//.sort! { |a, b| a.atk <=> b.atk } # // Weapons
- equips_by_type[0].each { |wp|
- dup_actor = Marshal.load( Marshal.dump( actor ) )
- dup_actor.change_equip_by_id( 0, wp.id, true )
- if dup_actor.atk > actor.atk
- dup_actor.change_equip_by_id( 0, 0, true )
- actor.change_equip_by_id( 0, 0, false )
- actor.change_equip_by_id( 0, wp.id, false )
- end
- dup_actor.change_equip( 0, 0, true )
- if actor.two_swords_style
- dup_actor.change_equip_by_id( 1, wp.id, true )
- if dup_actor.atk > actor.atk
- dup_actor.change_equip_by_id( 1, 0, true )
- actor.change_equip_by_id( 1, 0 )
- actor.change_equip_by_id( 1, wp.id )
- end
- dup_actor.change_equip_by_id( 1, 0, true )
- end
- }
- rng = actor.two_swords_style ? 2..equip_types : 1..equip_types
- for i in rng
- #.sort! { |a, b| a.def <=> b.def } # // Armor
- equips_by_type[i].each { |ar|
- dup_actor = Marshal.load( Marshal.dump( actor ) )
- dup_actor.change_equip( i, ar )
- if dup_actor.def > actor.def
- dup_actor.change_equip( i, nil ) ; actor.change_equip( i, ar )
- end
- dup_actor.change_equip( i, nil )
- }
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment