Advertisement
LiTTleDRAgo

[RGSS] Custom Resolution - Tilemap Tone Changer

Jan 26th, 2014
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.80 KB | None | 0 0
  1. #==============================================================================
  2. # ** Custom Resolution - Tilemap Tone Changer
  3. # Version : 1.12
  4. # Author : LiTTleDRAgo
  5. #==============================================================================
  6. #
  7. # Introduction :
  8. #
  9. #     This script is made for F0's Custom Resolution, it can change the
  10. #     tilemap's tone along with the selected character.
  11. #
  12. # How to Use :
  13. #
  14. #   Script :
  15. #      change_tilemap_tone(TONE,*CHARACTER)     # change tilemap tone
  16. #      change_character_tone(TONE,*CHARACTER)   # change character tone without
  17. #                                                changing the tilemap
  18. #
  19. #   TONE      = [R,G,B,A] or Tone.new(R,G,B,A)
  20. #
  21. #   CHARACTER = $game_map.events.values # all events
  22. #             = $game_map.events.keys   # all events
  23. #             = $game_player            # player
  24. #             = -1                      # player
  25. #             = 0                       # this event
  26. #             = [2,3,4,6]               # events with selected id
  27. #             = [-1,2,3,4,6]            # player & events with selected id
  28. #             = [0,2,3,4,6]             # this event & events with selected id
  29. #             = (1..99)                 # events in range
  30. #             = [(1..8),20,25,(30..42)] # events in range
  31. #
  32. #    * will not change the character tone if left out
  33. #
  34. #
  35. # Example :
  36. #
  37. #   Script : tone = Tone.new(20,20,20,160)
  38. #            char = $game_map.events.values
  39. #            change_tilemap_tone(tone,char)
  40. #
  41. #===============================================================================
  42. ($imported ||= {})[:drg_tilemap_tone_changer] = 1.12
  43.  
  44. core = "This script needs Drago - Core Engine ver 1.43 or above"
  45. reso = "This script needs F0's Custom Resolution"
  46. rmxp = "This script only for RMXP"
  47.  
  48. $imported[:drg_core_engine] || raise(core)
  49. $resolution                 || raise(reso)
  50. LiTTleDRAgo::XP             || raise(rmxp)
  51. #==============================================================================
  52. # ** Spriteset_Map
  53. #------------------------------------------------------------------------------
  54. #  This class brings together map screen sprites, tilemaps, etc.
  55. #  It's used within the Scene_Map class.
  56. #==============================================================================
  57.  
  58. class Spriteset_Map
  59.   #---------------------------------------------------------------------------
  60.   # * Public Instance Variables
  61.   #---------------------------------------------------------------------------
  62.   attr_reader :viewport1, :viewport2, :viewport3
  63.   #---------------------------------------------------------------------------
  64.   # * New method: viewport_sprite
  65.   #---------------------------------------------------------------------------
  66.   def viewport_sprite(*v)
  67.     v.collect! {|s| s.is_a?(Symbol) ? instance_variable_get(:"@#{s}") : s }
  68.     v.reject!  {|s| s.not.is_a?(Viewport)}
  69.     all = instance_variables.map {|s| instance_variable_get("#{s}")}.flatten
  70.     all.select {|s| s.respond_to?(:viewport) && v.include?(s.viewport)}
  71.   end
  72. end
  73.  
  74. #==============================================================================
  75. # ** Interpreter
  76. #------------------------------------------------------------------------------
  77. #  This interpreter runs event commands. This class is used within the
  78. #  Game_System class and the Game_Event class.
  79. #==============================================================================
  80. class Interpreter
  81.   #---------------------------------------------------------------------------
  82.   # * New method: change_tilemap_tone
  83.   #---------------------------------------------------------------------------
  84.   def change_tilemap_tone(tone, *char)
  85.     sprite = $game_map.spriteset.viewport_sprite(:viewport1)
  86.     sprite.reject! {|s| s.is_a?(Sprite_Character)}
  87.     sprite.each do |s|
  88.       if tone.is_a?(Array) && (3..4) === tone.size
  89.         s.tone = Tone.new(*tone)
  90.       elsif tone.is_a?(Tone)
  91.         s.tone = tone
  92.       end
  93.     end
  94.     change_character_tone(tone, *char) unless char.empty?
  95.   end
  96.   #---------------------------------------------------------------------------
  97.   # * New method: change_character_tone
  98.   #---------------------------------------------------------------------------
  99.   def change_character_tone(tone, *char)
  100.     char = char.collect {|c| c.is_a?(Range) ? c.to_a : c}.flatten
  101.     char = char.collect {|c| c.is_a?(Range) ? c.to_a : c}.flatten
  102.     char.collect! {|c| c.is_a?(Game_Character) ? c : get_character(c)}
  103.     sprite = $game_map.spriteset.viewport_sprite(:viewport1)
  104.     sprite.reject! {|s| s.not.is_a?(Sprite_Character) }
  105.     sprite.reject! {|s| char.not.include?(s.character)}
  106.     if tone.is_a?(Array) && (3..4) === tone.size
  107.       sprite.tone(:tone=, Tone.new(*tone))
  108.     elsif tone.is_a?(Tone)
  109.       sprite.send(:tone=, tone)
  110.     end
  111.   end
  112. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement