Holy87

xinput-vibration

Dec 20th, 2016
153
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #===============================================================================
  2. # Vibrazione in battaglia di Holy87
  3. # Difficoltà utente: ★
  4. # Versione 1.1
  5. # Licenza: CC. Chiunque può scaricare, modificare, distribuire e utilizzare
  6. # lo script nei propri progetti, sia amatoriali che commerciali. Vietata
  7. # l'attribuzione impropria.
  8. #===============================================================================
  9. # Questo script farà vibrare automaticamente il controller con attacchi critici
  10. # in battaglia o attraverso animazioni con un determinato timing.
  11. #===============================================================================
  12. # Istruzioni: inserire lo script sotto Materials prima del Main.
  13. #
  14. # Se si vuole assegnare un effetto speciale all'animazione, aggiungere una
  15. # nuova voce in Tempismo SE e Flash dell'animazione, selezionare il frame
  16. # desiderato, impostare flash su bersaglio e COLORE ROSSO A 1.
  17. # Quindi, modificare Forza (del colore) per modificare la forza della vibrazione
  18. # e durata per la durata.
  19. # Novità della versione 1.1:
  20. # Puoi impostare separatamente la forza della vibrazione destra o sinistra!
  21. # Regola il colore verde nell'FX per la vibrazione sinistra e il colore blu
  22. # per la vibrazione destra!
  23. #
  24. # Sotto è possibile configurare i testi per le voci e i comandi personalizzabili.
  25. #===============================================================================
  26.  
  27.  
  28. #===============================================================================
  29. # ** IMPOSTAZIONI SCRIPT
  30. #===============================================================================
  31. module VibrationConfig
  32.   # Vibrazione con critico su nemico | Forza SX | Forza DX | Durata
  33.   CRITICAL_ENEMY                  = [    100,       100,       30   ]
  34.   # Vibrazione con critico su alleato
  35.   CRITICAL_ALLY                   = [     75,        75,       30   ]
  36.   #--------------------------------------------------------------------------
  37.   # * Valore di rosso che determinerà il timing della vibrazione nella
  38.   #   sequenza di animazione
  39.   #--------------------------------------------------------------------------
  40.   VIBRATION_ACTIVATE = 1
  41. end
  42.  
  43. #===============================================================================
  44. # ** ATTENZIONE: NON MODIFICARE SOTTO QUESTO SCRIPT SE NON SAI COSA TOCCARE! **
  45. #===============================================================================
  46.  
  47.  
  48.  
  49. $imported = {} if $imported == nil
  50. $imported['H87-Vibration'] = 1.1
  51. #===============================================================================
  52. # ** RPG::Animation
  53. #-------------------------------------------------------------------------------
  54. # Vibration info
  55. #===============================================================================
  56. module RPG
  57.   class Animation
  58.     #===============================================================================
  59.     # ** RPG::Animation::Vibration_Info
  60.     #-------------------------------------------------------------------------------
  61.     # Vibration info
  62.     #===============================================================================
  63.     class Vibration_Info
  64.       attr_accessor :left_force
  65.       attr_accessor :right_force
  66.       attr_accessor :neutral_force
  67.       #---------------------------------------------------------------------
  68.       # * Object initialization
  69.       # @param [Color] color
  70.       #---------------------------------------------------------------------
  71.       def initialize(color = nil)
  72.         @left_force = 0
  73.         @right_force = 0
  74.         @neutral_force = 0
  75.         set_vibration(color) if color
  76.       end
  77.       #---------------------------------------------------------------------
  78.       # * Set vibration info
  79.       # @param [Color] color
  80.       #---------------------------------------------------------------------
  81.       def set_vibration(color)
  82.         self.left_force = color.green * 100 / 255
  83.         self.right_force = color.blue * 100 / 255
  84.         self.neutral_force = color.alpha * 100 / 255
  85.       end
  86.       #---------------------------------------------------------------------
  87.       # * Returns the total amount of vibration
  88.       #---------------------------------------------------------------------
  89.       def total_vibration; @right_force + @left_force + @neutral_force; end
  90.     end
  91.  
  92.     #===============================================================================
  93.     # ** RPG::Animation::Timing
  94.     #-------------------------------------------------------------------------------
  95.     # adding vibration method
  96.     #===============================================================================
  97.     class Timing
  98.       #---------------------------------------------------------------------
  99.       # * Returns vibration strenght and cancels the flash target
  100.       # @return [Vibration_Info]
  101.       #---------------------------------------------------------------------
  102.       def vibration
  103.         if @vibration.nil?
  104.           @vibration = Vibration_Info.new
  105.           if @flash_scope == 1 && @flash_color.red == VibrationConfig::VIBRATION_ACTIVATE
  106.             @vibration.set_vibration(@flash_color)
  107.             @flash_scope = 0
  108.           end
  109.         end
  110.         @vibration
  111.       end
  112.     end
  113.   end
  114. end
  115.  
  116. #===============================================================================
  117. # ** Game_Battler
  118. #-------------------------------------------------------------------------------
  119. # Vibration on critical damage
  120. #===============================================================================
  121. class Game_Battler < Game_BattlerBase
  122.   alias h87vib_apply_critical apply_critical unless $@
  123.   #--------------------------------------------------------------------------
  124.   # * Apply critical
  125.   #--------------------------------------------------------------------------
  126.   def apply_critical(damage)
  127.     apply_vibration
  128.     h87vib_apply_critical(damage)
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # * Apply vibration on critical damage
  132.   #--------------------------------------------------------------------------
  133.   def apply_vibration
  134.     str = actor? ? VibrationConfig::CRITICAL_ALLY : VibrationConfig::CRITICAL_ENEMY
  135.     Input.vibrate(str[0], str[1], str[2])
  136.   end
  137. end
  138.  
  139. #===============================================================================
  140. # ** Sprite_Base
  141. #-------------------------------------------------------------------------------
  142. # Vibration on animation timing
  143. #===============================================================================
  144. class Sprite_Base < Sprite
  145.   alias h87vibr_apt animation_process_timing unless $@
  146.   #--------------------------------------------------------------------------
  147.   # * Adds vibration check to the animation
  148.   # @param [RPG::Animation::Timing] timing
  149.   #--------------------------------------------------------------------------
  150.   def animation_process_timing(timing)
  151.     if timing && timing.vibration.total_vibration > 0
  152.       left_v = timing.vibration.left_force + timing.vibration.neutral_force
  153.       right_v = timing.vibration.right_force + timing.vibration.neutral_force
  154.       left_v, right_v = right_v, left_v if @ani_mirror
  155.       Input.vibrate(left_v, right_v, timing.flash_duration * @ani_rate)
  156.     end
  157.     h87vibr_apt(timing)
  158.   end
  159. end
RAW Paste Data