#=============================================================================== # SET EQUIPAGGIAMENTI #=============================================================================== # Autore: Holy87 # Versione: 2.0 # Difficoltà utente: ★★ #------------------------------------------------------------------------------- # In molti giochi di ruolo occidentali, se riesci a trovare ed a indossare # tutti i pezzi di uno stesso equipaggiamento ottieni svariati bonus. Ad esempio, # trovare l'armatura del drago + guanti del drago + elmo del drago + scudo del # drago potrebbe conferirti immunità al fuoco e maggiore attacco se indossati # tutti insieme. In questo modo si dà più importanza alle armors di quanto se # ne fosse data in passato. # È anche possibile fare un set se due armi specifiche sono equipaggiate insieme # (ovviamente il personaggio deve poter equipaggiare due armi). # Lo script assegna uno stato alterato specifico all'eroe quando viene attivato # uno specifico set. Installare uno script che estende le possibilità degli # stati alterati renderebbe molto più utile questo script. # * ATTENZIONE * lo script è stato concepito per attivare 1 solo bonus set # armatura, per bonus set multipli viene preso quello con ID più alto. #------------------------------------------------------------------------------- # Istruzioni: # Copiare lo script sotto Materials, prima del Main. # Configurare in basso i set con i relativi equipaggiamenti richiesti. Ricordati # che se vengono soddisfatte le condizioni per due set diversi, solo quello con # ID più alto viene soddisfatto. # In questo modo puoi impostare diversi bonus a seconda se l'equipaggiamento è # completo oppure no. # #------------------------------------------------------------------------------- # Compatibilità: # Game_Battler -> Alias del metodo states # Game_Actor -> Alias del metodo change_equip #------------------------------------------------------------------------------- #=============================================================================== # ** Impostazioni #=============================================================================== module SETS Armors = { #Configura i vari set. A sinistra lo stato da attivare, nell'array tutti gli #equipaggiamenti necessari. #Stato => [Armatura1,Armatura2,Armatura3,...] 17 => [32, 37], # Elmo e Armatura di Ferro attivano Corpo di Ferro } #Configura le coppie di armi. A sinistra lo stato da attivare, nell'array #le coppie di armi necessarie per attivare il bonus. #Stato => [Arma1, Arma2] Weapons = { } end #configurazione $imported = {} if $imported == nil $imported["H87_EquipArmorss"] = 2.0 #=============================================================================== # ** classe Game_Actor #=============================================================================== class Game_Actor < Game_Battler alias change_equip_set change_equip unless $@ # restituisce il set soddisfatto o nil. def armor_set armor_ids = armors.compact.map{|a| a.id} SETS::Armors.select{|k,v| (v - armor_ids).empty? }.keys.max end # restituisce il set soddisfatto dell'arma con maggiore priorità # o nil se nessuno è soddisfatto def weapon_set weapon_ids = weapons.compact.map { |w| w.id } SETS::Weapons.select{|k,v| (v - weapon_ids).empty? }.keys.max end # cambia l'equipaggiamento dell'eroe # @param [Integer] slot_id # @param [RPG::Weapon, RPG::Armor] item def change_equip(slot_id, item) change_equip_set(slot_id, item,) apply_bonus_set end # ricalcola i bonus set dopo il cambio equipaggiamenti def apply_bonus_set init_bonus_sets add_set_bonus(armor_set) add_set_bonus(weapon_set) end # aggiunge il bonus del set all'eroe. Ignora se bonus è nil # @param [Integer] bonus def add_set_bonus(bonus) return if bonus.nil? return if @set_bonuses.include?(bonus) @set_bonuses.push(bonus) end # inizializza i bonus set e cancella tutti def init_bonus_sets @set_bonuses = [] end # restituisce i bonus set attivati # @return [Array] def set_bonuses init_bonus_sets if @set_bonuses.nil? @set_bonuses.compact.map { |state_id| $data_states[state_id] } end end #game_actor #=============================================================================== # ** classe Game_Enemy #=============================================================================== class Game_Enemy < Game_Battler # restituisce i bonus set attivati # @return [Array] def set_bonuses [] # array vuoto perché non hanno equip end end #=============================================================================== # ** classe Game_Battler #=============================================================================== class Game_BattlerBase alias no_set_states states unless $@ # restituisce gli status attuali + bonus set attivati # @return [Array] def states no_set_states + set_bonuses end end #game_battler