Holy87

Equip Sets ACE

Jul 25th, 2013
313
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_BattlerBase -> 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.   #Stato => [Armatura1,Armatura2,Armatura3,...]
  44.           21=>[30,35,50]#armatura di drago
  45.           }
  46.          
  47.     #Configura le coppie di armi. A sinistra lo stato da attivare, nell'array
  48.     #le coppie di armi necessarie per attivare il bonus.
  49.     #Stato => [Arma1, Arma2]
  50.     Armi = {
  51.     }
  52.  
  53. end #configurazione
  54.  
  55. #===============================================================================
  56. # ** classe Game_Actor
  57. #===============================================================================
  58. class Game_Actor < Game_Battler
  59.  
  60.   #--------------------------------------------------------------------------
  61.   # * restituisce true se nell'array 2 sono contenuti tutti gli elementi dell'1
  62.   #--------------------------------------------------------------------------
  63.   def array_uno_incluso_in_due?(arr1,arr2)
  64.     #arr1: Array del set
  65.     #arr2: Array dell'equipaggiamento dell'eroe
  66.     for i in 0..arr1.size-1
  67.       return false unless arr2.include?($data_armors[arr1[i]])
  68.     end
  69.     return true
  70.   end
  71.  
  72.   #--------------------------------------------------------------------------
  73.   # * restituisce true se nell'array 2 sono contenuti tutti gli elementi dell'1
  74.   #--------------------------------------------------------------------------
  75.   def array_arma_uno_incluso_in_due?(arr1,arr2)
  76.     for i in 0..arr1.size-1
  77.       return false unless arr2.include?($data_weapons[arr1[i]])
  78.     end
  79.     return true
  80.   end
  81.  
  82.   #--------------------------------------------------------------------------
  83.   # * restituisce il set soddisfatto. 0 se non ci sono set.
  84.   #--------------------------------------------------------------------------
  85.   def verifica_set
  86.     armature = self.armors #assegna l'array delle armature equipaggiate
  87.     sets = [0]
  88.     SETS::Set.each_key do |key| #vede tutti i set attivabili
  89.       sets.push(key) if array_uno_incluso_in_due?(SETS::Set[key],armature)
  90.     end
  91.     return sets.max #restituisce il set con priorità più alta
  92.   end
  93.  
  94.   #--------------------------------------------------------------------------
  95.   # * restituisce il bonus 2 armi da attivare.
  96.   #--------------------------------------------------------------------------
  97.   def verifica_set_arma
  98.     armi = self.weapons #assegna l'array delle armature equipaggiate
  99.     SETS::Armi.each_key do |key| #restituisce true se si fa un set
  100.       return key if array_arma_uno_incluso_in_due?(SETS::Armi[key],armi)
  101.     end
  102.     return 0
  103.   end
  104.  
  105.   #--------------------------------------------------------------------------
  106.   # * alias del metodo change_equip
  107.   #--------------------------------------------------------------------------
  108.   alias cambiaequip change_equip
  109.   def change_equip(slot_id, item)
  110.     cambiaequip(slot_id, item) #equipaggia come di solito
  111.     applica_bonus #controlla e applica il bonus set
  112.   end
  113.  
  114.   #--------------------------------------------------------------------------
  115.   # * applica il bonus al set
  116.   #--------------------------------------------------------------------------
  117.   def applica_bonus
  118.     bonus = verifica_set #controlla se c'è un set e restituisce l'ID dello stato
  119.     self.add_set_bonus(bonus) if bonus != 0 #assegna il bonus set se c'è
  120.     togli_altri_set_tranne(bonus) #elimina tutti gli altri bonus precedenti
  121.     bonus = verifica_set_arma
  122.     self.add_set_bonus(bonus) if bonus != 0 #assegna il bonus set se c'è
  123.     togli_altri_set_tranne_arma(bonus) #elimina tutti gli altri bonus precedenti
  124.   end
  125.  
  126.   #--------------------------------------------------------------------------
  127.   # * rimuove tutti gli altri set attivati tranne il bonus
  128.   #--------------------------------------------------------------------------
  129.   def togli_altri_set_tranne(bonus)
  130.     SETS::Set.each_key do |key|
  131.       self.remove_set_bonus(key) if key != bonus
  132.     end
  133.   end
  134.  
  135.   #--------------------------------------------------------------------------
  136.   # * rimuove tutti i bonus armi tranne l'attuale
  137.   #--------------------------------------------------------------------------
  138.   def togli_altri_set_tranne_arma(bonus)
  139.     SETS::Armi.each_key do |key|
  140.       self.remove_set_bonus(key) if key != bonus
  141.     end
  142.   end
  143.  
  144.   #--------------------------------------------------------------------------
  145.   # * aggiunge il bonus del set all'eroe
  146.   #--------------------------------------------------------------------------
  147.   def add_set_bonus(bonus)
  148.     @set_bonuses = [] if @set_bonuses == nil
  149.     @set_bonuses.push(bonus) unless @set_bonuses.include?(bonus)
  150.     @set_bonuses.sort!
  151.   end
  152.  
  153.   #--------------------------------------------------------------------------
  154.   # * rimuove il bonus del set all'eroe
  155.   #--------------------------------------------------------------------------
  156.   def remove_set_bonus(bonus)
  157.     @set_bonuses = [] if @set_bonuses == nil
  158.     @set_bonuses.delete(bonus)
  159.   end
  160.  
  161.   #--------------------------------------------------------------------------
  162.   # * restituisce i bonus set attivati
  163.   #--------------------------------------------------------------------------
  164.   def set_bonuses
  165.     bonus_states = []
  166.     @set_bonuses = [] if @set_bonuses == nil
  167.     for state_id in @set_bonuses
  168.       state = $data_states[state_id]
  169.       next if state == nil
  170.       bonus_states.push(state)
  171.     end
  172.     return bonus_states
  173.   end
  174.  
  175. end #game_actor
  176.  
  177. #===============================================================================
  178. # ** classe Game_Battler
  179. #===============================================================================
  180. class Game_Battler
  181.  
  182.   #--------------------------------------------------------------------------
  183.   # * restituisce gli status attuali + bonus attivati
  184.   #--------------------------------------------------------------------------
  185.   alias normal_states states unless $@
  186.   def states
  187.     all_states = normal_states
  188.     all_states |= self.set_bonuses if self.actor?
  189.     return all_states
  190.   end
  191.  
  192. end #game_battler
RAW Paste Data