Holy87

Equip Sets - VX Ace

May 3rd, 2020
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.08 KB | None | 0 0
  1. #===============================================================================
  2. # SET EQUIPAGGIAMENTI
  3. #===============================================================================
  4. # Autore: Holy87
  5. # Versione: 2.0
  6. # Difficoltà utente: ★★
  7. #-------------------------------------------------------------------------------
  8. # In molti giochi di ruolo occidentali, se riesci a trovare ed a indossare
  9. # tutti i pezzi di uno stesso equipaggiamento ottieni svariati bonus. Ad esempio,
  10. # trovare l'armatura del drago + guanti del drago + elmo del drago + scudo del
  11. # drago potrebbe conferirti immunità al fuoco e maggiore attacco se indossati
  12. # tutti insieme. In questo modo si dà più importanza alle armors di quanto se
  13. # ne fosse data in passato.
  14. # È anche possibile fare un set se due armi specifiche sono equipaggiate insieme
  15. # (ovviamente il personaggio deve poter equipaggiare due armi).
  16. # Lo script assegna uno stato alterato specifico all'eroe quando viene attivato
  17. # uno specifico set. Installare uno script che estende le possibilità degli
  18. # stati alterati renderebbe molto più utile questo script.
  19. # * ATTENZIONE * lo script è stato concepito per attivare 1 solo bonus set
  20. # armatura, per bonus set multipli viene preso quello con ID più alto.
  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.   Armors =   {
  41.       #Configura i vari set. A sinistra lo stato da attivare, nell'array tutti gli
  42.       #equipaggiamenti necessari.
  43.       #Stato => [Armatura1,Armatura2,Armatura3,...]
  44.       17 => [32, 37],   # Elmo e Armatura di Ferro attivano Corpo di Ferro
  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.   Weapons = {
  51.  
  52.   }
  53.  
  54. end #configurazione
  55.  
  56. $imported = {} if $imported == nil
  57. $imported["H87_EquipArmorss"] = 2.0
  58.  
  59. #===============================================================================
  60. # ** classe Game_Actor
  61. #===============================================================================
  62. class Game_Actor < Game_Battler
  63.   alias change_equip_set change_equip unless $@
  64.  
  65.   # restituisce il set soddisfatto o nil.
  66.   def armor_set
  67.     armor_ids = armors.compact.map{|a| a.id}
  68.     SETS::Armors.select{|k,v| (v - armor_ids).empty? }.keys.max
  69.   end
  70.  
  71.   # restituisce il set soddisfatto dell'arma con maggiore priorità
  72.   # o nil se nessuno è soddisfatto
  73.   def weapon_set
  74.     weapon_ids = weapons.compact.map { |w| w.id }
  75.     SETS::Weapons.select{|k,v| (v - weapon_ids).empty? }.keys.max
  76.   end
  77.  
  78.   # cambia l'equipaggiamento dell'eroe
  79.   # @param [Integer] slot_id
  80.   # @param [RPG::Weapon, RPG::Armor] item
  81.   def change_equip(slot_id, item)
  82.     change_equip_set(slot_id, item,)
  83.     apply_bonus_set
  84.   end
  85.  
  86.   # ricalcola i bonus set dopo il cambio equipaggiamenti
  87.   def apply_bonus_set
  88.     init_bonus_sets
  89.     add_set_bonus(armor_set)
  90.     add_set_bonus(weapon_set)
  91.   end
  92.  
  93.   # aggiunge il bonus del set all'eroe. Ignora se bonus è nil
  94.   # @param [Integer] bonus
  95.   def add_set_bonus(bonus)
  96.     return if bonus.nil?
  97.     return if @set_bonuses.include?(bonus)
  98.     @set_bonuses.push(bonus)
  99.   end
  100.  
  101.   # inizializza i bonus set e cancella tutti
  102.   def init_bonus_sets
  103.     @set_bonuses = []
  104.   end
  105.  
  106.   # restituisce i bonus set attivati
  107.   # @return [Array<RPG::State>]
  108.   def set_bonuses
  109.     init_bonus_sets if @set_bonuses.nil?
  110.     @set_bonuses.compact.map { |state_id| $data_states[state_id] }
  111.   end
  112. end #game_actor
  113.  
  114. #===============================================================================
  115. # ** classe Game_Enemy
  116. #===============================================================================
  117. class Game_Enemy < Game_Battler
  118.   # restituisce i bonus set attivati
  119.   # @return [Array<RPG::State>]
  120.   def set_bonuses
  121.     [] # array vuoto perché non hanno equip
  122.   end
  123. end
  124.  
  125. #===============================================================================
  126. # ** classe Game_Battler
  127. #===============================================================================
  128. class Game_BattlerBase
  129.   alias no_set_states states unless $@
  130.  
  131.   # restituisce gli status attuali + bonus set attivati
  132.   # @return [Array<RPG::State>]
  133.   def states
  134.     no_set_states + set_bonuses
  135.   end
  136. end #game_battler
Add Comment
Please, Sign In to add comment