SHARE
TWEET

Equip Sets ACE

Holy87 Jul 25th, 2013 264 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
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