Advertisement
Guest User

Untitled

a guest
Jan 3rd, 2014
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 26.50 KB | None | 0 0
  1. if true
  2. #==============================================================================
  3. # +++ MOG - Weather EX (v1.7) +++
  4. #==============================================================================
  5. # By Moghunter
  6. # http://www.atelier-rgss.com/
  7. #==============================================================================
  8. # Sistema de clima com efeitos animados.
  9. #==============================================================================
  10. # As imagens usadas pelo sistema do clima devem ser gravadas na pasta
  11. #
  12. # GRAPHICS/WEATHER/
  13. #
  14. #==============================================================================
  15. # UTILIZAÇÃO
  16. #
  17. # Use o comando abaixo através da função chamar script.*(Evento)
  18. #
  19. # weather(TYPE, POWER, IMAGE_FILE)
  20. #
  21. # TYPE - Tipo de clima. (de 0 a 6)
  22. # POWER - Quantidade de partículas na tela. (de 1 a 10)
  23. # IMAGE_FILE - Nome da imagem.
  24. #
  25. # Exemplo (Eg)
  26. #
  27. # weather(0, 5, "Leaf")
  28. #
  29. #==============================================================================
  30. # Tipos de Clima.
  31. #
  32. # O sistema vem com 7 climas pré-configurados, que podem ser testados na demo
  33. # que vem com esse script.
  34. #
  35. # 0 - (Rain)  
  36. # 1 - (Wind)
  37. # 2 - (Fog)  
  38. # 3 - (Light)
  39. # 4 - (Snow)
  40. # 5 - (Spark)
  41. # 6 - (Random)
  42. #
  43. #==============================================================================
  44. # NOTA
  45. #
  46. # Evite de usar imagens muito pesadas ou de tamanho grande, caso for usar
  47. # diminua o poder do clima para evitar lag.
  48. #
  49. #==============================================================================
  50. #==============================================================================
  51. # Para parar o clima use o comando abaixo.
  52. #
  53. # weather_stop
  54. #
  55. #==============================================================================
  56. # Para parar reativar o clima com as caracteríticas préviamente usadas use o
  57. # comando abaixo.
  58. #
  59. # weather_restore
  60. #==============================================================================
  61. # Se você precisar ativar um novo clima mas deseja gravar as caracteríticas
  62. # do clima atual para ser reativado depois use os códigos abaixo.
  63. #
  64. # weather_store
  65. # weather_restore_store
  66. #
  67. #==============================================================================
  68.  
  69. #==============================================================================
  70. # ● Histórico (Version History)
  71. #==============================================================================
  72. # v 1.7 - Melhoria na codificação.
  73. #==============================================================================
  74. module MOG_WEATHER_EX
  75.   #Prioridade do clima na tela.
  76.   WEATHER_SCREEN_Z = 50
  77.   #Definição da eficiência do poder do clima.
  78.   #NOTA -  Um valor muito alto pode causar lag, dependendo do tipo de clima e
  79.   #        imagem usada.
  80.   WEATHER_POWER_EFIC = 5
  81.   #Ativar o clima no sistema de batalha.
  82.   WEATHER_BATTLE = true
  83. end
  84.  
  85. #==============================================================================
  86. # ■ Cache
  87. #==============================================================================
  88. module Cache
  89.  
  90.   #--------------------------------------------------------------------------
  91.   # ● Weather
  92.   #--------------------------------------------------------------------------
  93.   def self.weather(filename)
  94.       load_bitmap("Graphics/Weather/", filename)
  95.   end
  96.  
  97. end
  98.  
  99. #==============================================================================
  100. # ■ Game System
  101. #==============================================================================
  102. class Game_System
  103.  
  104.   attr_accessor :weather
  105.   attr_accessor :weather_restore
  106.   attr_accessor :weather_record_set
  107.   attr_accessor :weather_temp
  108.  
  109.   #--------------------------------------------------------------------------
  110.   # ● Initialize
  111.   #--------------------------------------------------------------------------  
  112.   alias weather_ex_initialize initialize  
  113.   def initialize
  114.       @weather = [-1,0,""]
  115.       @weather_restore = [-1,0,""]
  116.       @weather_temp = [-1,0,""]
  117.       @weather_record_set = [-1,0,""]
  118.       weather_ex_initialize
  119.   end  
  120.  
  121. end  
  122.  
  123. #==============================================================================
  124. # ■ Game Temp
  125. #==============================================================================
  126. class Game_Temp
  127.  
  128.   attr_accessor :weather_ex_set
  129.   attr_accessor :weather_fade
  130.  
  131.   #--------------------------------------------------------------------------
  132.   # ● Initialize
  133.   #--------------------------------------------------------------------------  
  134.   alias mog_weather_ex_temp_initialize initialize
  135.   def initialize
  136.       @weather_ex_set = []
  137.       @weather_fade = false
  138.       mog_weather_ex_temp_initialize
  139.   end  
  140.  
  141. end
  142.  
  143. #==============================================================================
  144. # ■ Game Interpreter
  145. #==============================================================================
  146. class Game_Interpreter
  147.  
  148.   #--------------------------------------------------------------------------
  149.   # ● Weather
  150.   #--------------------------------------------------------------------------    
  151.   def weather(type = -1, power = 0, image = "")
  152.       $game_temp.weather_fade = false
  153.       $game_system.weather.clear
  154.       $game_system.weather = [type,power,image]
  155.   end
  156.  
  157.   #--------------------------------------------------------------------------
  158.   # ● Weather Stop
  159.   #--------------------------------------------------------------------------    
  160.   def weather_stop
  161.       $game_temp.weather_fade = false
  162.       $game_system.weather.clear
  163.       $game_system.weather = [-1,0,""]
  164.       $game_system.weather_restore  = [-1,0,""]
  165.       $game_system.weather_temp = [-1,0,""]      
  166.   end
  167.  
  168.   #--------------------------------------------------------------------------
  169.   # ● Weather Restore
  170.   #--------------------------------------------------------------------------      
  171.   def weather_restore
  172.       $game_temp.weather_fade = false
  173.       if $game_system.weather[0] != -1
  174.          w = $game_system.weather
  175.          $game_system.weather_restore = [w[0],w[1],w[2]]
  176.          $game_system.weather.clear
  177.          $game_system.weather = [-1,0,""]
  178.          return
  179.       end
  180.       w = $game_system.weather_restore
  181.       weather(w[0],w[1],w[2])
  182.   end
  183.  
  184.   #--------------------------------------------------------------------------
  185.   # ● Weather Fade
  186.   #--------------------------------------------------------------------------        
  187.   def weather_fade(value)
  188.       $game_temp.weather_fade = value
  189.   end
  190.  
  191.   #--------------------------------------------------------------------------
  192.   # ● Weather Store
  193.   #--------------------------------------------------------------------------          
  194.   def weather_store
  195.       w = $game_system.weather
  196.       $game_system.weather_record_set = [w[0],w[1],w[2]]
  197.   end  
  198.  
  199.   #--------------------------------------------------------------------------
  200.   # ● Weather Restore Store
  201.   #--------------------------------------------------------------------------          
  202.   def weather_restore_store
  203.       w = $game_system.weather_record_set
  204.       weather(w[0],w[1],w[2])      
  205.   end    
  206.  
  207. end  
  208.  
  209. #==============================================================================
  210. # ■ Weather_EX
  211. #==============================================================================
  212. class Weather_EX < Sprite
  213.  
  214.   #--------------------------------------------------------------------------
  215.   # ● Initialize
  216.   #--------------------------------------------------------------------------  
  217.   def initialize(viewport = nil ,type = 0, image_name = "",index = 0,nx,ny)
  218.       super(viewport)
  219.       self.bitmap = Cache.weather(image_name.to_s)
  220.       self.opacity = 0
  221.       @cw = self.bitmap.width
  222.       @ch = self.bitmap.height
  223.       @angle_speed = 0
  224.       @x_speed = 0
  225.       @y_speed = 0
  226.       @zoom_speed = 0
  227.       @opacity_speed = 0
  228.       @type = type
  229.       @index = index
  230.       @old_nx = nx
  231.       @old_ny = ny
  232.       type_setup(nx,ny)
  233.   end
  234.  
  235.   #--------------------------------------------------------------------------
  236.   # ● Dispose Weather
  237.   #--------------------------------------------------------------------------      
  238.   def dispose_weather
  239.       return if self.bitmap == nil
  240.       self.bitmap.dispose
  241.       self.bitmap = nil
  242.   end
  243.  
  244.   #--------------------------------------------------------------------------
  245.   # ● Pre Values
  246.   #--------------------------------------------------------------------------    
  247.   def pre_values(index)
  248.       return if  $game_temp.weather_ex_set[index] == nil
  249.       self.x = $game_temp.weather_ex_set[index][0]
  250.       self.y = $game_temp.weather_ex_set[index][1]
  251.       self.opacity = $game_temp.weather_ex_set[index][2]
  252.       self.angle = $game_temp.weather_ex_set[index][3]
  253.       self.zoom_x = $game_temp.weather_ex_set[index][4]
  254.       self.zoom_y = $game_temp.weather_ex_set[index][4]
  255.       $game_temp.weather_ex_set[index].clear
  256.       $game_temp.weather_ex_set[index] = nil
  257.   end  
  258.  
  259.   #--------------------------------------------------------------------------
  260.   # ● Type Setup
  261.   #--------------------------------------------------------------------------      
  262.   def type_setup(nx = 0, ny = 0)
  263.       @cw2 = [(672 + @cw) + nx, -(96 + @cw) + nx]
  264.       @ch2 = [(576 + @ch) + ny, -(96 + @ch) + ny]
  265.       check_weather_type
  266.       pre_values(@index)
  267.       @opacity_speed = -1 if $game_temp.weather_fade
  268.   end
  269.  
  270.   #--------------------------------------------------------------------------
  271.   # ● Update
  272.   #--------------------------------------------------------------------------    
  273.   def update_weather(nx = 0, ny = 0)
  274.       self.x += @x_speed
  275.       self.y += @y_speed
  276.       self.opacity += @opacity_speed
  277.       self.angle += @angle_speed
  278.       self.zoom_x += @zoom_speed
  279.       self.zoom_y += @zoom_speed
  280.       check_loop_map(nx,ny)
  281.       type_setup(nx,ny) if can_reset_setup?
  282.   end  
  283.  
  284.   #--------------------------------------------------------------------------
  285.   # ● Check Loop Map
  286.   #--------------------------------------------------------------------------        
  287.   def check_loop_map(nx,ny)
  288.       if (@old_nx - nx).abs > 32
  289.          @cw2 = [(672 + @cw) + nx, -(96 + @cw) + nx]
  290.          self.x += nx
  291.          self.x -= @old_nx if nx == 0
  292.       end  
  293.       if (@old_ny - ny).abs > 32
  294.          @ch2 = [(576 + @ch) + ny, -(96 + @ch) + ny]
  295.          self.y += ny
  296.          self.y -= @old_ny if ny == 0
  297.       end        
  298.       @old_nx = nx
  299.       @old_ny = ny    
  300.   end  
  301.    
  302.   #--------------------------------------------------------------------------
  303.   # ● Can Reset Setup
  304.   #--------------------------------------------------------------------------      
  305.   def can_reset_setup?
  306.       return true if self.x > @cw2[0] or self.x <  @cw2[1]
  307.       return true if self.y > @ch2[0]  or self.y < @ch2[1]
  308.       return true if self.opacity == 0
  309.       return true if self.zoom_x > 2.0 or self.zoom_x < 0.5
  310.       return false
  311.   end
  312.  
  313.  #--------------------------------------------------------------------------
  314.  # ● Check Weather Type
  315.  #--------------------------------------------------------------------------                        
  316.  def check_weather_type
  317.      case @type
  318.          when 0;   rain
  319.          when 1;   wind  
  320.          when 2;   fog
  321.          when 3;   light
  322.          when 4;   snow
  323.          when 5;   spark
  324.          when 6;   random                  
  325.       end
  326.  end
  327.    
  328.  #--------------------------------------------------------------------------
  329.  # ● Snow
  330.  #--------------------------------------------------------------------------                          
  331.  def snow
  332.      self.angle = rand(360)
  333.      self.x = rand(@cw2[0])
  334.      self.y = rand(@ch2[0])
  335.      self.opacity = 1
  336.      self.zoom_x = (rand(100) + 50) / 100.0
  337.      self.zoom_y = self.zoom_x
  338.      @y_speed = [[rand(5), 1].max, 5].min
  339.      @opacity_speed = 5
  340.      @angle_speed = rand(3)
  341.  end  
  342.  
  343.  #--------------------------------------------------------------------------
  344.  # ● Spark
  345.  #--------------------------------------------------------------------------                          
  346.  def spark
  347.      self.angle = rand(360)
  348.      self.x = rand(@cw2[0])
  349.      self.y = rand(@ch2[0])
  350.      self.opacity = 1
  351.      self.zoom_x = (rand(100) + 100) / 100.0
  352.      self.zoom_y = self.zoom_x
  353.      self.blend_type = 1    
  354.      @opacity_speed = 10
  355.      @zoom_speed = -0.01
  356.  end
  357.  
  358.  #--------------------------------------------------------------------------
  359.  # ● Rain
  360.  #--------------------------------------------------------------------------                          
  361.  def rain
  362.      self.x = rand(@cw2[0])      
  363.      if @start == nil
  364.         self.y = rand(@ch2[0])
  365.         @start = true
  366.      else
  367.         self.y = @ch2[1]        
  368.      end  
  369.      self.opacity = 1
  370.      self.zoom_y = (rand(50) + 100) / 100.0
  371.      self.zoom_x = (rand(25) + 100) / 100.0
  372.      @y_speed = [[rand(10) + 10, 10].max, 20].min
  373.      @opacity_speed = 10
  374.  end    
  375.  
  376.  #--------------------------------------------------------------------------
  377.  # ● Fog
  378.  #--------------------------------------------------------------------------                            
  379.  def fog
  380.      rand_angle = rand(2)
  381.      self.angle = rand_angle == 1 ? 180 : 0
  382.      self.x = rand(@cw2[0])
  383.      self.y = rand(@ch2[0])
  384.      self.opacity = 1
  385.      self.zoom_x = (rand(100) + 50) / 100.0
  386.      self.zoom_y = self.zoom_x
  387.      @x_speed = [[rand(10), 1].max, 10].min
  388.      @opacity_speed = 10
  389.  end
  390.  
  391.  #--------------------------------------------------------------------------
  392.  # ● Light
  393.  #--------------------------------------------------------------------------                          
  394.  def light
  395.      self.angle = rand(360)
  396.      self.x = rand(@cw2[0])
  397.      self.y = rand(@ch2[0])
  398.      self.opacity = 1
  399.      self.zoom_x = (rand(100) + 50) / 100.0
  400.      self.zoom_y = self.zoom_x
  401.      self.blend_type = 1
  402.      @angle_speed = [[rand(3), 1].max, 3].min
  403.      @y_speed = -[[rand(10), 1].max, 10].min
  404.      @opacity_speed = 2
  405.  end
  406.  
  407.  #--------------------------------------------------------------------------
  408.  # ● Wind
  409.  #--------------------------------------------------------------------------                          
  410.  def wind
  411.      self.angle = rand(360)
  412.      self.x = rand(@cw2[0])
  413.      self.y = rand(@ch2[0])
  414.      self.opacity = 1
  415.      self.zoom_x = (rand(100) + 50) / 100.0
  416.      self.zoom_y = self.zoom_x
  417.      @x_speed = [[rand(10), 1].max, 10].min
  418.      @y_speed = [[rand(10), 1].max, 10].min
  419.      @opacity_speed = 10
  420.  end  
  421.      
  422.  #--------------------------------------------------------------------------
  423.  # ● Random
  424.  #--------------------------------------------------------------------------                          
  425.  def random
  426.      self.angle = rand(360)
  427.      self.x = rand(@cw2[0])
  428.      self.y = rand(@ch2[0])
  429.      self.opacity = 1
  430.      self.zoom_x = (rand(100) + 50) / 100.0
  431.      self.zoom_y = self.zoom_x
  432.      x_s = [[rand(10), 1].max, 10].min
  433.      y_s = [[rand(10), 1].max, 10].min
  434.      rand_x = rand(2)
  435.      rand_y = rand(2)
  436.      @x_speed = rand_x == 1 ? x_s : -x_s
  437.      @y_speed = rand_y == 1 ? y_s : -y_s      
  438.      @opacity_speed = 10
  439.  end    
  440.  
  441. end
  442.  
  443. #==============================================================================
  444. # ■ Module Weather EX
  445. #==============================================================================
  446. module Module_Weather_EX
  447.  
  448.  #--------------------------------------------------------------------------
  449.  # ● Create Weather EX
  450.  #--------------------------------------------------------------------------                  
  451.   def create_weather_ex
  452.       dispose_weather_ex
  453.       create_weather_viewport
  454.       create_weather_sprite    
  455.   end
  456.  
  457.  #--------------------------------------------------------------------------
  458.  # ● Dispose Wheater EX
  459.  #--------------------------------------------------------------------------                    
  460.   def dispose_weather_ex
  461.       dispose_weather_ex_sprite
  462.       dispose_weather_ex_viewport
  463.   end
  464.  
  465.  #--------------------------------------------------------------------------
  466.  # ● Create Weather Viewport
  467.  #--------------------------------------------------------------------------                    
  468.   def create_weather_viewport
  469.       dispose_weather_ex_viewport
  470.       @viewport_weather_ex = Viewport.new(-32, -32, 576, 448)
  471.       @viewport_weather_ex.z = MOG_WEATHER_EX::WEATHER_SCREEN_Z
  472.       @viewport_weather_ex.ox = ($game_map.display_x * 32)
  473.       @viewport_weather_ex.oy = ($game_map.display_y * 32)      
  474.   end  
  475.  
  476.  #--------------------------------------------------------------------------
  477.  # ● Create Weather Sprite
  478.  #--------------------------------------------------------------------------                      
  479.   def create_weather_sprite
  480.       dispose_weather_ex_sprite
  481.       @old_weather = $game_system.weather
  482.       return if $game_system.weather == [] or $game_system.weather[0] == -1
  483.       @weather_ex = []
  484.       index = 0
  485.       power_efic = MOG_WEATHER_EX::WEATHER_POWER_EFIC
  486.       power_efic = 1 if power_efic < 1
  487.       power = [[$game_system.weather[1] * power_efic, power_efic].max, 999].min
  488.       for i in 0...power
  489.           @weather_ex.push(Weather_EX.new(@viewport_weather_ex,$game_system.weather[0],$game_system.weather[2],index, @viewport_weather_ex.ox, @viewport_weather_ex.oy))
  490.           index += 1
  491.       end            
  492.   end
  493.  
  494.  #--------------------------------------------------------------------------
  495.  # ● Dispose Weather EX Viewport
  496.  #--------------------------------------------------------------------------                      
  497.   def dispose_weather_ex_viewport
  498.       return if @viewport_weather_ex == nil
  499.       @viewport_weather_ex.dispose
  500.   end  
  501.  
  502.  #--------------------------------------------------------------------------
  503.  # ● Dispose Weather EX
  504.  #--------------------------------------------------------------------------                  
  505.   def dispose_weather_ex_sprite
  506.       return if @weather_ex == nil
  507.       index = 0
  508.       for i in @weather_ex
  509.           $game_temp.weather_ex_set[index] = [] if $game_temp.weather_ex_set[index] == nil
  510.           $game_temp.weather_ex_set[index].push(i.x,i.y,i.opacity,i.angle,i.zoom_x)
  511.           i.dispose
  512.           index += 1
  513.       end
  514.       @weather_ex.each {|sprite| sprite.dispose}  
  515.       @weather_ex = nil
  516.   end
  517.  
  518.  #--------------------------------------------------------------------------
  519.  # ● Dispose Refresh
  520.  #--------------------------------------------------------------------------                    
  521.   def dispose_refresh
  522.       $game_temp.weather_ex_set.clear
  523.       return if @weather_ex == nil
  524.       @weather_ex.each {|sprite| sprite.dispose_weather}
  525.       @weather_ex = nil
  526.   end  
  527.  
  528.  #--------------------------------------------------------------------------
  529.  # ● Update Weather EX
  530.  #--------------------------------------------------------------------------                  
  531.   def update_weather_ex
  532.       refresh_weather_ex
  533.       update_weather_ex_viewport
  534.       return if @weather_ex == nil
  535.       @weather_ex.each {|sprite| sprite.update_weather(@viewport_weather_ex.ox,@viewport_weather_ex.oy)}
  536.   end
  537.  
  538.  #--------------------------------------------------------------------------
  539.  # ● Update Weather Ex Viewport
  540.  #--------------------------------------------------------------------------                    
  541.   def update_weather_ex_viewport
  542.       return if @viewport_weather_ex == nil
  543.       @viewport_weather_ex.ox = ($game_map.display_x * 32)
  544.       @viewport_weather_ex.oy = ($game_map.display_y * 32)
  545.   end
  546.  
  547.  #--------------------------------------------------------------------------
  548.  # ● Refresh Weather EX
  549.  #--------------------------------------------------------------------------                    
  550.   def refresh_weather_ex
  551.       return if @old_weather == nil
  552.       return if @old_weather == $game_system.weather
  553.       dispose_refresh
  554.       create_weather_sprite
  555.   end  
  556. end  
  557.  
  558. #==============================================================================
  559. # ■ Spriteset Map
  560. #==============================================================================
  561. class Spriteset_Map
  562.    include Module_Weather_EX  
  563.    
  564.  #--------------------------------------------------------------------------
  565.  # ● Initialize
  566.  #--------------------------------------------------------------------------                  
  567.   alias mog_weather_ex_initialize initialize
  568.   def initialize
  569.       dispose_weather_ex    
  570.       mog_weather_ex_initialize
  571.       create_weather_ex
  572.   end
  573.  
  574.  #--------------------------------------------------------------------------
  575.  # ● Dispose
  576.  #--------------------------------------------------------------------------                  
  577.   alias mog_weather_ex_dispose dispose
  578.   def dispose
  579.       dispose_weather_ex    
  580.       mog_weather_ex_dispose
  581.   end  
  582.  
  583.  #--------------------------------------------------------------------------
  584.  # ● Update
  585.  #--------------------------------------------------------------------------                  
  586.   alias mog_weather_ex_update update
  587.   def update
  588.       mog_weather_ex_update
  589.       update_weather_ex
  590.   end  
  591.    
  592. end
  593.  
  594. if MOG_WEATHER_EX::WEATHER_BATTLE
  595. #==============================================================================
  596. # ■ Spriteset Battle
  597. #==============================================================================
  598. class Spriteset_Battle
  599.  
  600.    include Module_Weather_EX  
  601.    
  602.  #--------------------------------------------------------------------------
  603.  # ● Initialize
  604.  #--------------------------------------------------------------------------                  
  605.   alias mog_weather_ex_initialize initialize
  606.   def initialize
  607.       dispose_weather_ex    
  608.       mog_weather_ex_initialize
  609.       create_weather_ex
  610.   end
  611.  
  612.  #--------------------------------------------------------------------------
  613.  # ● Dispose
  614.  #--------------------------------------------------------------------------                  
  615.   alias mog_weather_ex_dispose dispose
  616.   def dispose
  617.       mog_weather_ex_dispose
  618.       dispose_weather_ex
  619.   end  
  620.  
  621.  #--------------------------------------------------------------------------
  622.  # ● Update
  623.  #--------------------------------------------------------------------------                  
  624.   alias mog_weather_ex_update update
  625.   def update
  626.       mog_weather_ex_update
  627.       update_weather_ex
  628.   end  
  629.    
  630. end
  631.  
  632. end
  633.  
  634. #=============================================================================
  635. # ■ Scene Base
  636. #=============================================================================
  637. class Scene_Base
  638.  
  639.   #--------------------------------------------------------------------------
  640.   # ● Weather Recover Data
  641.   #--------------------------------------------------------------------------  
  642.   def weather_recover_data
  643.       if $game_system.weather.empty? or
  644.           $game_system.weather[0] == -1
  645.           if !$game_system.weather_restore.empty? and
  646.              $game_system.weather_restore[0] != -1
  647.              v = $game_system.weather_restore
  648.              $game_system.weather = [v[0],v[1],v[2]]
  649.           end
  650.       end        
  651.   end
  652.  
  653.   #--------------------------------------------------------------------------
  654.   # ● Weather Restore
  655.   #--------------------------------------------------------------------------      
  656.   def weather_recover_scene
  657.       return if $game_system.weather_temp.empty?
  658.       return if $game_system.weather_temp[0] == -1
  659.       w = $game_system.weather_temp
  660.       $game_system.weather = [w[0],w[1],w[2]]
  661.       $game_system.weather_temp.clear
  662.       $game_system.weather_temp = [-1,0,""]
  663.   end  
  664.  
  665.   #--------------------------------------------------------------------------
  666.   # ● Main
  667.   #--------------------------------------------------------------------------        
  668.   alias mog_weather_ex_main main
  669.   def main
  670.       dispose_weather_ex_base
  671.       weather_recover_scene if can_recover_weather_scene?
  672.       mog_weather_ex_main
  673.   end    
  674.  
  675.   #--------------------------------------------------------------------------
  676.   # ● Can Recover Weather Scene
  677.   #--------------------------------------------------------------------------        
  678.   def can_recover_weather_scene?
  679.       return true if SceneManager.scene_is?(Scene_Map)
  680.       return true if SceneManager.scene_is?(Scene_Battle)
  681.       return false
  682.   end  
  683.  
  684.   #--------------------------------------------------------------------------
  685.   # ● terminate
  686.   #--------------------------------------------------------------------------        
  687.   alias mog_weather_ex_terminate_base terminate
  688.   def terminate
  689.       mog_weather_ex_terminate_base
  690.       dispose_weather_ex_base      
  691.   end  
  692.  
  693.   #--------------------------------------------------------------------------
  694.   # ● Dispose Weather EX Base
  695.   #--------------------------------------------------------------------------          
  696.   def dispose_weather_ex_base
  697.       return if @spriteset == nil
  698.       @spriteset.dispose_weather_ex rescue nil
  699.   end        
  700.  
  701. end
  702.  
  703. #=============================================================================
  704. # ■ Scene Load
  705. #=============================================================================
  706. class Scene_Load < Scene_File
  707.  
  708.   #--------------------------------------------------------------------------
  709.   # ● On Load Success
  710.   #--------------------------------------------------------------------------
  711.   alias mog_weather_ex_on_load_success on_load_success
  712.   def on_load_success
  713.       mog_weather_ex_on_load_success
  714.       weather_recover_data
  715.   end
  716. end
  717.  
  718. #=============================================================================
  719. # ■ Scene Manager
  720. #=============================================================================
  721. class << SceneManager
  722.  
  723.   #--------------------------------------------------------------------------
  724.   # ● Call
  725.   #--------------------------------------------------------------------------        
  726.   alias mog_weather_ex_call call
  727.   def call(scene_class)
  728.       weather_dispose
  729.       mog_weather_ex_call(scene_class)
  730.   end
  731.  
  732.   #--------------------------------------------------------------------------
  733.   # ● Weather Restore
  734.   #--------------------------------------------------------------------------      
  735.   def weather_dispose
  736.       return if $game_system.weather.empty?
  737.       return if $game_system.weather[0] == -1
  738.       w = $game_system.weather
  739.       $game_system.weather_temp = [w[0],w[1],w[2]]
  740.       $game_system.weather.clear
  741.       $game_system.weather = [-1,0,""]
  742.   end    
  743.  
  744. end
  745.  
  746. $mog_rgss3_weather_ex = true
  747.  
  748. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement