SHARE
TWEET

Equip Sets VX

Holy87 Jul 12th, 2013 45 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top