SHARE
TWEET

Equip Sets - VX Ace

Holy87 May 3rd, 2020 (edited) 39 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
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