Holy87

Equip Sets VX

Jul 12th, 2013
87
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $imported = {} if $imported == nil
  2. $imported["H87_EquipSets"] = true
  3. #===============================================================================
  4. # SET EQUIPAGGIAMENTI
  5. #===============================================================================
  6. # Autore: Holy87
  7. # Versione: 1.0
  8. # Difficoltà utente: ★★
  9. #-------------------------------------------------------------------------------
  10. # In molti giochi di ruolo occidentali, se riesci a trovare ed a indossare
  11. # tutti i pezzi di uno stesso equipaggiamento ottieni svariati bonus. Ad esempio,
  12. # trovare l'armatura del drago + guanti del drago + elmo del drago + scudo del
  13. # drago potrebbe conferirti immunità al fuoco e maggiore attacco se indossati
  14. # tutti insieme. In questo modo si dà più importanza alle armature di quanto se
  15. # ne fosse data in passato.
  16. # È anche possibile fare un set se due armi specifiche sono equipaggiate insieme
  17. # (ovviamente, il personaggio deve poter equipaggiare due armi).
  18. # Lo script assegna uno stato alterato specifico all'eroe quando viene attivato
  19. # uno specifico set. Installare uno script che estende le possibilità degli
  20. # stati alterati renderebbe molto più utile questo script.
  21. #-------------------------------------------------------------------------------
  22. # Istruzioni:
  23. # Copiare lo script sotto Materials, prima del Main.
  24. # Configurare in basso i set con i relativi equipaggiamenti richiesti. Ricordati
  25. # che se vengono soddisfatte le condizioni per due set diversi, solo quello con
  26. # ID più alto viene soddisfatto.
  27. # In questo modo puoi impostare diversi bonus a seconda se l'equipaggiamento è
  28. # completo oppure no.
  29. #
  30. #-------------------------------------------------------------------------------
  31. # Compatibilità:
  32. # Game_Battler -> Alias del metodo states
  33. # Game_Actor   -> Alias del metodo change_equip
  34. #-------------------------------------------------------------------------------
  35.  
  36. #===============================================================================
  37. # ** Impostazioni
  38. #===============================================================================
  39. module SETS
  40.   Set =   {
  41.   #Configura i vari set. A sinistra lo stato da attivare, nell'array tutti gli
  42.   #equipaggiamenti necessari.
  43.   #id_stato => [Armatura1,Armatura2,Armatura3,...],
  44.   #id_stato => [Armatura1,Armatura2,Armatura3,...],
  45.   #id_stato => [Armatura1,Armatura2,Armatura3,...],    
  46.           }
  47.          
  48.     #Configura le coppie di armi. A sinistra lo stato da attivare, nell'array
  49.     #le coppie di armi necessarie per attivare il bonus.
  50.     #Stato => [Arma1, Arma2]
  51.     Armi = {
  52.    
  53.     }
  54.  
  55. end #configurazione
  56.  
  57. #===============================================================================
  58. # ** classe Game_Actor
  59. #===============================================================================
  60. class Game_Actor < Game_Battler
  61.  
  62.   #--------------------------------------------------------------------------
  63.   # * restituisce true se nell'array 2 sono contenuti tutti gli elementi dell'1
  64.   #--------------------------------------------------------------------------
  65.   def array_uno_incluso_in_due?(arr1,arr2)
  66.     #arr1: Array del set
  67.     #arr2: Array dell'equipaggiamento dell'eroe
  68.     for i in 0..arr1.size-1
  69.       return false unless arr2.include?($data_armors[arr1[i]])
  70.     end
  71.     return true
  72.   end
  73.  
  74.   #--------------------------------------------------------------------------
  75.   # * restituisce true se nell'array 2 sono contenuti tutti gli elementi dell'1
  76.   #--------------------------------------------------------------------------
  77.   def array_arma_uno_incluso_in_due?(arr1,arr2)
  78.     for i in 0..arr1.size-1
  79.       return false unless arr2.include?($data_weapons[arr1[i]])
  80.     end
  81.     return true
  82.   end
  83.  
  84.   #--------------------------------------------------------------------------
  85.   # * restituisce il set soddisfatto. 0 se non ci sono set.
  86.   #--------------------------------------------------------------------------
  87.   def verifica_set
  88.     armature = self.armors #assegna l'array delle armature equipaggiate
  89.     sets = [0]
  90.     SETS::Set.each_key do |key| #vede tutti i set attivabili
  91.       sets.push(key) if array_uno_incluso_in_due?(SETS::Set[key],armature)
  92.     end
  93.     return sets.max #restituisce il set con priorità più alta
  94.   end
  95.  
  96.   #--------------------------------------------------------------------------
  97.   # * restituisce il bonus 2 armi da attivare.
  98.   #--------------------------------------------------------------------------
  99.   def verifica_set_arma
  100.     armi = self.weapons #assegna l'array delle armature equipaggiate
  101.     SETS::Armi.each_key do |key| #restituisce true se si fa un set
  102.       return key if array_arma_uno_incluso_in_due?(SETS::Armi[key],armi)
  103.     end
  104.     return 0
  105.   end
  106.  
  107.   #--------------------------------------------------------------------------
  108.   # * alias del metodo change_equip
  109.   #--------------------------------------------------------------------------
  110.   alias cambiaequip change_equip
  111.   def change_equip(equip_type, item, test = false)
  112.     cambiaequip(equip_type, item, test) #equipaggia come di solito
  113.     applica_bonus #controlla e applica il bonus set
  114.   end
  115.  
  116.   #--------------------------------------------------------------------------
  117.   # * applica il bonus al set
  118.   #--------------------------------------------------------------------------
  119.   def applica_bonus
  120.     bonus = verifica_set #controlla se c'è un set e restituisce l'ID dello stato
  121.     self.add_set_bonus(bonus) if bonus != 0 #assegna il bonus set se c'è
  122.     togli_altri_set_tranne(bonus) #elimina tutti gli altri bonus precedenti
  123.     bonus = verifica_set_arma
  124.     self.add_set_bonus(bonus) if bonus != 0 #assegna il bonus set se c'è
  125.     togli_altri_set_tranne_arma(bonus) #elimina tutti gli altri bonus precedenti
  126.   end
  127.  
  128.   #--------------------------------------------------------------------------
  129.   # * rimuove tutti gli altri set attivati tranne il bonus
  130.   #--------------------------------------------------------------------------
  131.   def togli_altri_set_tranne(bonus)
  132.     SETS::Set.each_key do |key|
  133.       self.remove_set_bonus(key) if key != bonus
  134.     end
  135.   end
  136.  
  137.   #--------------------------------------------------------------------------
  138.   # * rimuove tutti i bonus armi tranne l'attuale
  139.   #--------------------------------------------------------------------------
  140.   def togli_altri_set_tranne_arma(bonus)
  141.     SETS::Armi.each_key do |key|
  142.       self.remove_set_bonus(key) if key != bonus
  143.     end
  144.   end
  145.  
  146.   #--------------------------------------------------------------------------
  147.   # * aggiunge il bonus del set all'eroe
  148.   #--------------------------------------------------------------------------
  149.   def add_set_bonus(bonus)
  150.     @set_bonuses = [] if @set_bonuses == nil
  151.     @set_bonuses.push(bonus) unless @set_bonuses.include?(bonus)
  152.     @set_bonuses.sort!
  153.   end
  154.  
  155.   #--------------------------------------------------------------------------
  156.   # * rimuove il bonus del set all'eroe
  157.   #--------------------------------------------------------------------------
  158.   def remove_set_bonus(bonus)
  159.     @set_bonuses = [] if @set_bonuses == nil
  160.     @set_bonuses.delete(bonus)
  161.   end
  162.  
  163.   #--------------------------------------------------------------------------
  164.   # * restituisce i bonus set attivati
  165.   #--------------------------------------------------------------------------
  166.   def set_bonuses
  167.     bonus_states = []
  168.     @set_bonuses = [] if @set_bonuses == nil
  169.     for state_id in @set_bonuses
  170.       state = $data_states[state_id]
  171.       next if state == nil
  172.       bonus_states.push(state)
  173.     end
  174.     return bonus_states
  175.   end
  176.  
  177. end #game_actor
  178.  
  179. #===============================================================================
  180. # ** classe Game_Battler
  181. #===============================================================================
  182. class Game_Battler
  183.  
  184.   #--------------------------------------------------------------------------
  185.   # * restituisce gli status attuali + bonus attivati
  186.   #--------------------------------------------------------------------------
  187.   alias normal_states states unless $@
  188.   def states
  189.     all_states = normal_states
  190.     all_states |= self.set_bonuses if self.actor?
  191.     return all_states
  192.   end
  193.  
  194. end #game_battler
RAW Paste Data