SYDONAY

WS - CES Character and Event Shadows script V4.1

Apr 19th, 2014
1,684
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #=============================================================================#
  2. # WyreScript (SYDONAY) - Character Shadow                                     #
  3. # Last Updated: 2019 - October - 28                                           #
  4. # 2012 - September - 07 (Release date)                                        #
  5. # Version updates 2.0+ by Vindaca                                             #
  6. # This script adds shadows to your player character and followers.            #
  7. # Outdated versions: 1.0, 2.0, 2.1, 2.5, 3.0, 3.1, 4.1                        #
  8. # Current version: 4.1                                                        #
  9. #-----------------------------------------------------------------------------#
  10. # ** How To Use                                                               #
  11. #-----------------------------------------------------------------------------#
  12. #                                                                             #
  13. #  * This script is Plug & Play after you have shadow image in system foulder #
  14. #                                                                             #
  15. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  16. #                                                                             #
  17. #  * Shadows can be turned on and off as soon as the map loads by making a    #
  18. #  comment with one of the following commands on the event pages first line.  #
  19. #                                                                             #
  20. #    shadow_on                                                                #
  21. #    shadow_off                                                               #
  22. #                                                                             #
  23. #  * Additional Shadows can be turned on and off by using these script calls. #
  24. #                                                                             #
  25. #    shadow_on                                                                #
  26. #    shadow_off                                                               #
  27. #                                                                             #
  28. #-----------------------------------------------------------------------------#
  29. #==============================================================================
  30. $imported = {} if $imported.nil?
  31. $imported["Ws-CharacterShadow"] = true
  32. #==============================================================================
  33. # ** SYDOSHADOW
  34. #------------------------------------------------------------------------------
  35. #  This module manages the Shadow module.
  36. #==============================================================================
  37. module SYDOSHADOW
  38. #==============================================================================
  39. # ** Shadow
  40. #------------------------------------------------------------------------------
  41. #  This module manages the cutomizable features for the shadows.
  42. #==============================================================================
  43.   module SHADOW
  44. #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#
  45. #                                                                              #
  46. #                           Start Customizable Area.                           #
  47. #                                                                              #
  48. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  49. #                                                                              #
  50. #                        ONLY EDIT THE DESIGNATED AREAS.                       #
  51. #                                                                              #
  52. #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#
  53.  
  54.  
  55.  
  56.   #=============================================================================
  57.   # * Shadow Graphic Name
  58.   #=============================================================================
  59.     SHADOW_GRAPHIC = "Shadow"
  60.    
  61.   #=============================================================================
  62.   # * Default Settings For Shadows
  63.   #=============================================================================
  64.     DEFAULT_ON_PLAYER       = true # Shadow on player
  65.     DEFAULT_ON_FOLLOWER     = true # Shadow on players party members when following
  66.     DEFAULT_ON_EVENT        = true # Shadow in all events
  67.      
  68.   #=============================================================================
  69.   # * Additional Settings For Shadows
  70.   #=============================================================================
  71.     Shadow_Off_In_Bush      = true # Shadow turns off if you walk into a bush automatically
  72.     Use_Shadow_Off_Regions  = true # Shadow turns off if you walk into Regions below automatically
  73.     Shadow_Off_Region_Ids   = [1, 2, 3] # Shadow turns off if you walk into Regions in array automatically
  74.     Character_Shadow_Match_Opacity   = true # Shadow matchs Character Opacity
  75.      
  76.   #=============================================================================
  77.   # * Sticky Shadows~ Shadows stick to ground when you jump.
  78.   #=============================================================================
  79.     Sticky_Shadows = true
  80.     Use_Region_Sticky_Shadow_Size = true
  81.     Small_Shadow_Regions = [4]
  82.     Large_Shadow_Regions = [5]
  83.     #---------------------------------------------------------------------------
  84.     # This is overwritten if Use_Region_Sticky_Shadow_Size is equal to true
  85.     # This acts as a default size if you do not want to use regions.
  86.     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  87.     # * 0 ~ Normal Size Shadows When Jumping
  88.     # * 1 ~ Over Sized Shadows When Jumping
  89.     # * 2 ~ Small Size Shadows When Jumping
  90.     #---------------------------------------------------------------------------
  91.     Sticky_Shadow_Size = 1
  92.      
  93. #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#
  94. #                                                                              #
  95. #         DO NOT EDIT PAST THIS POINT UNLESS YOU KNOW WHAT YOUR DOING.         #
  96. #                                                                              #
  97. #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.   end #<--- End of Shadow Module===============================================
  120.  
  121. end #<--- End of SYDOSHADOW Module=============================================
  122.  
  123.  
  124. #==============================================================================
  125. # ** Sprite_Character
  126. #------------------------------------------------------------------------------
  127. #  This sprite is used to display characters. It observes an instance of the
  128. # Game_Character class and automatically changes sprite state.
  129. #==============================================================================
  130.  
  131. class Sprite_Character < Sprite_Base
  132.  
  133.   #--------------------------------------------------------------------------
  134.   # * alias method update
  135.   #--------------------------------------------------------------------------
  136.   alias :shadow_sprite_character_update :update
  137.   def update
  138.     shadow_sprite_character_update
  139.     update_shadow
  140.   end
  141.  
  142.   #--------------------------------------------------------------------------
  143.   # * alias method dispose
  144.   #--------------------------------------------------------------------------
  145.   alias :shadow_sprite_character_dispose :dispose
  146.   def dispose
  147.     dispose_shadow
  148.     shadow_sprite_character_dispose
  149.   end
  150.  
  151.   #--------------------------------------------------------------------------
  152.   # * start_shadow : draw and initialize
  153.   #--------------------------------------------------------------------------
  154.   def start_shadow
  155.     dispose_shadow
  156.     @shadow_sprite = ::Sprite.new(viewport)
  157.     @shadow_sprite.bitmap = Cache.system(SYDOSHADOW::SHADOW::SHADOW_GRAPHIC)
  158.     @shadow_sprite.z = self.z - 1
  159.     @shadow_sprite.ox = 16
  160.     @shadow_sprite.oy = -4
  161.     @shadow_sprite.zoom_x = (@cw / @shadow_sprite.width).to_f
  162.     @shadow_sprite.opacity = @character.opacity if SYDOSHADOW::SHADOW::Character_Shadow_Match_Opacity
  163.     @shadow_size = 0
  164.     update_shadow
  165.   end
  166.  
  167.   #--------------------------------------------------------------------------
  168.   # * update_shadow : validate, draw if necessary, adjust position, destroy
  169.   #--------------------------------------------------------------------------
  170.   def update_shadow
  171.     @shadow_size = 0
  172.     if @character.shadow and !@character.transparent
  173.       if @character.is_a?(Game_Follower) and !@character.visible?
  174.         dispose_shadow if @shadow_sprite
  175.         return
  176.       end
  177.       start_shadow unless @shadow_sprite
  178.       @shadow_sprite.x = x
  179.       @shadow_sprite.z = z - 1
  180.       @shadow_sprite.opacity = @character.opacity if SYDOSHADOW::SHADOW::Character_Shadow_Match_Opacity
  181.       if @character.jumping?
  182.         if SYDOSHADOW::SHADOW::Sticky_Shadows
  183.           @shadow_sprite.y = (y - @shadow_sprite.height) + @character.jump_height
  184.           if SYDOSHADOW::SHADOW::Use_Region_Sticky_Shadow_Size == true
  185.             SYDOSHADOW::SHADOW::Small_Shadow_Regions.each { |i|
  186.               if i == $game_map.region_id((@shadow_sprite.x / 32).to_i, (@shadow_sprite.y / 32).to_i)
  187.                 @shadow_size = 1
  188.               end
  189.             }
  190.             SYDOSHADOW::SHADOW::Large_Shadow_Regions.each { |i|
  191.               if i == $game_map.region_id((@shadow_sprite.x / 32).to_i, (@shadow_sprite.y / 32).to_i)
  192.                 @shadow_size = 2
  193.               end
  194.             }
  195.             case @shadow_size
  196.             when 0
  197.               @shadow_sprite.zoom_x = ((@cw / @shadow_sprite.width).to_f)
  198.             when 1
  199.               @shadow_sprite.zoom_x = ((@cw / @shadow_sprite.width).to_f) / 2
  200.             when 2
  201.               @shadow_sprite.zoom_x = ((@cw / @shadow_sprite.width).to_f) * 1.5
  202.             end
  203.           else
  204.             case SYDOSHADOW::SHADOW::Sticky_Shadow_Size
  205.             when 0
  206.               @shadow_sprite.zoom_x = ((@cw / @shadow_sprite.width).to_f)
  207.             when 1
  208.               @shadow_sprite.zoom_x = ((@cw / @shadow_sprite.width).to_f) / 2
  209.             when 2
  210.               @shadow_sprite.zoom_x = ((@cw / @shadow_sprite.width).to_f) * 2
  211.             end
  212.           end
  213.         else
  214.           @shadow_sprite.y = y - @shadow_sprite.height
  215.           @shadow_sprite.zoom_x = (@cw / @shadow_sprite.width).to_f
  216.           @shadow_sprite.zoom_y = @shadow_height
  217.         end
  218.       else
  219.         @shadow_sprite.y = y - @shadow_sprite.height
  220.         @shadow_sprite.zoom_x = (@cw / @shadow_sprite.width).to_f
  221.       end
  222.     else
  223.       dispose_shadow if @shadow_sprite
  224.     end
  225.   end
  226.  
  227.   #--------------------------------------------------------------------------
  228.   # * dispose_shadow : destroy
  229.   #--------------------------------------------------------------------------
  230.   def dispose_shadow
  231.     if @shadow_sprite
  232.       @shadow_sprite.dispose
  233.       @shadow_sprite = nil
  234.     end
  235.   end
  236.    
  237. end #<--- End of Sprite_Character Class========================================
  238.  
  239.  
  240. #==============================================================================
  241. # ** Game_CharacterBase
  242. #------------------------------------------------------------------------------
  243. #  This base class handles characters. It retains basic information, such as
  244. # coordinates and graphics, shared by all characters.
  245. #==============================================================================
  246.  
  247. class Game_CharacterBase
  248.  
  249.   #--------------------------------------------------------------------------
  250.   # * Public Instance Variables
  251.   #--------------------------------------------------------------------------
  252.   attr_accessor :shadow_on #check for character to see if it should have a shadow
  253.   attr_accessor :shadow
  254.   attr_accessor :shadow_size
  255.  
  256.   #--------------------------------------------------------------------------
  257.   # * Initialize Public Member Variables
  258.   #--------------------------------------------------------------------------
  259.   alias :sydoshadow_shadow_game_characterbase_init_public_members :init_public_members
  260.   def init_public_members
  261.     sydoshadow_shadow_game_characterbase_init_public_members
  262.     case
  263.     when self.is_a?(Game_Player)
  264.       @shadow = SYDOSHADOW::SHADOW::DEFAULT_ON_PLAYER
  265.     when self.is_a?(Game_Follower)
  266.       @shadow = SYDOSHADOW::SHADOW::DEFAULT_ON_FOLLOWER
  267.     when self.is_a?(Game_Event)
  268.       @shadow = SYDOSHADOW::SHADOW::DEFAULT_ON_EVENT
  269.     end
  270.     @shadow = false if @shadow.nil?
  271.     @shadow_on = @shadow
  272.     @shadow_size = 0
  273.   end
  274.  
  275.   #--------------------------------------------------------------------------
  276.   # * Frame Update
  277.   #--------------------------------------------------------------------------
  278.   alias :v_shadow_game_characterbase_update65465432 :update
  279.   def update
  280.     v_shadow_game_characterbase_update65465432
  281.     if @shadow_on
  282.       (bush? ? @shadow = false : @shadow = true) if SYDOSHADOW::SHADOW::Shadow_Off_In_Bush
  283.       if @shadow == true
  284.         if SYDOSHADOW::SHADOW::Use_Shadow_Off_Regions == true
  285.           SYDOSHADOW::SHADOW::Shadow_Off_Region_Ids.each { |i|
  286.             if region_id == i
  287.               @shadow = false
  288.             end
  289.           }
  290.         end
  291.       end
  292.     end
  293.   end
  294.  
  295. end #<--- End of Game_CharacterBase Class======================================
  296.  
  297.  
  298. #==============================================================================
  299. # ** Game_Event
  300. #------------------------------------------------------------------------------
  301. #  This class handles events. Functions include event page switching via
  302. # condition determinants and running parallel process events. Used within the
  303. # Game_Map class.
  304. #==============================================================================
  305.  
  306. class Game_Event < Game_Character
  307.  
  308.   #--------------------------------------------------------------------------
  309.   # * Aliased Method: Set Up Event Page Settings
  310.   #--------------------------------------------------------------------------
  311.   alias :gesps35435435 :setup_page_settings
  312.  
  313.   #--------------------------------------------------------------------------
  314.   # * Set Up Event Page Settings
  315.   #--------------------------------------------------------------------------
  316.   def setup_page_settings
  317.     gesps35435435
  318.     if @list[0].code == 108
  319.       @shadow = true if @list[0].parameters[0] == "shadow_on"
  320.       @shadow = false if @list[0].parameters[0] == "shadow_off"
  321.       @shadow_on = @shadow
  322.     end
  323.   end
  324.  
  325. end #<--- End of Game_Event Class==============================================
  326.  
  327.  
  328. #==============================================================================
  329. # ** Game_Interpreter
  330. #------------------------------------------------------------------------------
  331. #  An interpreter for executing event commands. This class is used within the
  332. # Game_Map, Game_Troop, and Game_Event classes.
  333. #==============================================================================
  334.  
  335. class Game_Interpreter
  336.  
  337.   #--------------------------------------------------------------------------
  338.   # * Shadow On
  339.   #--------------------------------------------------------------------------
  340.   def shadow_on
  341.     $game_map.events[@event_id].shadow = true
  342.     $game_map.events[@event_id].shadow_on = true
  343.   end
  344.  
  345.   #--------------------------------------------------------------------------
  346.   # * Shadow Off
  347.   #--------------------------------------------------------------------------
  348.   def shadow_off
  349.     $game_map.events[@event_id].shadow = false
  350.     $game_map.events[@event_id].shadow_on = false
  351.   end
  352.  
  353. end #<--- End of Game_Interpreter Class========================================
RAW Paste Data