Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $imported = {} if $imported == nil
- $imported["H87_EquipSets"] = true
- #===============================================================================
- # SET EQUIPAGGIAMENTI
- #===============================================================================
- # Autore: Holy87
- # Versione: 1.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 armature 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.
- #-------------------------------------------------------------------------------
- # 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_BattlerBase -> Alias del metodo states
- # Game_Actor -> Alias del metodo change_equip
- #-------------------------------------------------------------------------------
- #===============================================================================
- # ** Impostazioni
- #===============================================================================
- module SETS
- Set = {
- #Configura i vari set. A sinistra lo stato da attivare, nell'array tutti gli
- #equipaggiamenti necessari.
- #Stato => [Armatura1,Armatura2,Armatura3,...]
- 21=>[30,35,50]#armatura di drago
- }
- #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]
- Armi = {
- }
- end #configurazione
- #===============================================================================
- # ** classe Game_Actor
- #===============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # * restituisce true se nell'array 2 sono contenuti tutti gli elementi dell'1
- #--------------------------------------------------------------------------
- def array_uno_incluso_in_due?(arr1,arr2)
- #arr1: Array del set
- #arr2: Array dell'equipaggiamento dell'eroe
- for i in 0..arr1.size-1
- return false unless arr2.include?($data_armors[arr1[i]])
- end
- return true
- end
- #--------------------------------------------------------------------------
- # * restituisce true se nell'array 2 sono contenuti tutti gli elementi dell'1
- #--------------------------------------------------------------------------
- def array_arma_uno_incluso_in_due?(arr1,arr2)
- for i in 0..arr1.size-1
- return false unless arr2.include?($data_weapons[arr1[i]])
- end
- return true
- end
- #--------------------------------------------------------------------------
- # * restituisce il set soddisfatto. 0 se non ci sono set.
- #--------------------------------------------------------------------------
- def verifica_set
- armature = self.armors #assegna l'array delle armature equipaggiate
- sets = [0]
- SETS::Set.each_key do |key| #vede tutti i set attivabili
- sets.push(key) if array_uno_incluso_in_due?(SETS::Set[key],armature)
- end
- return sets.max #restituisce il set con priorità più alta
- end
- #--------------------------------------------------------------------------
- # * restituisce il bonus 2 armi da attivare.
- #--------------------------------------------------------------------------
- def verifica_set_arma
- armi = self.weapons #assegna l'array delle armature equipaggiate
- SETS::Armi.each_key do |key| #restituisce true se si fa un set
- return key if array_arma_uno_incluso_in_due?(SETS::Armi[key],armi)
- end
- return 0
- end
- #--------------------------------------------------------------------------
- # * alias del metodo change_equip
- #--------------------------------------------------------------------------
- alias cambiaequip change_equip
- def change_equip(slot_id, item)
- cambiaequip(slot_id, item) #equipaggia come di solito
- applica_bonus #controlla e applica il bonus set
- end
- #--------------------------------------------------------------------------
- # * applica il bonus al set
- #--------------------------------------------------------------------------
- def applica_bonus
- bonus = verifica_set #controlla se c'è un set e restituisce l'ID dello stato
- self.add_set_bonus(bonus) if bonus != 0 #assegna il bonus set se c'è
- togli_altri_set_tranne(bonus) #elimina tutti gli altri bonus precedenti
- bonus = verifica_set_arma
- self.add_set_bonus(bonus) if bonus != 0 #assegna il bonus set se c'è
- togli_altri_set_tranne_arma(bonus) #elimina tutti gli altri bonus precedenti
- end
- #--------------------------------------------------------------------------
- # * rimuove tutti gli altri set attivati tranne il bonus
- #--------------------------------------------------------------------------
- def togli_altri_set_tranne(bonus)
- SETS::Set.each_key do |key|
- self.remove_set_bonus(key) if key != bonus
- end
- end
- #--------------------------------------------------------------------------
- # * rimuove tutti i bonus armi tranne l'attuale
- #--------------------------------------------------------------------------
- def togli_altri_set_tranne_arma(bonus)
- SETS::Armi.each_key do |key|
- self.remove_set_bonus(key) if key != bonus
- end
- end
- #--------------------------------------------------------------------------
- # * aggiunge il bonus del set all'eroe
- #--------------------------------------------------------------------------
- def add_set_bonus(bonus)
- @set_bonuses = [] if @set_bonuses == nil
- @set_bonuses.push(bonus) unless @set_bonuses.include?(bonus)
- @set_bonuses.sort!
- end
- #--------------------------------------------------------------------------
- # * rimuove il bonus del set all'eroe
- #--------------------------------------------------------------------------
- def remove_set_bonus(bonus)
- @set_bonuses = [] if @set_bonuses == nil
- @set_bonuses.delete(bonus)
- end
- #--------------------------------------------------------------------------
- # * restituisce i bonus set attivati
- #--------------------------------------------------------------------------
- def set_bonuses
- bonus_states = []
- @set_bonuses = [] if @set_bonuses == nil
- for state_id in @set_bonuses
- state = $data_states[state_id]
- next if state == nil
- bonus_states.push(state)
- end
- return bonus_states
- end
- end #game_actor
- #===============================================================================
- # ** classe Game_Battler
- #===============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # * restituisce gli status attuali + bonus attivati
- #--------------------------------------------------------------------------
- alias normal_states states unless $@
- def states
- all_states = normal_states
- all_states |= self.set_bonuses if self.actor?
- return all_states
- end
- end #game_battler
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement