View difference between Paste ID: p9uEXuFc and
SHOW: | | - or go back to the newest paste.
1-
1+
###--------------------------------------------------------------------------###
2
#  Slo-mo script                                                               #
3
#  Version 1.0                                                                 #
4
#                                                                              #
5
#      Credits:                                                                #
6
#  Original code by: Neonblack                                                 #
7
#  Modified by:                                                                #
8
#                                                                              #
9
#  This work is licensed under the Creative Commons Attribution-NonCommercial  #
10
#  3.0 Unported License. To view a copy of this license, visit                 #
11
#  http://creativecommons.org/licenses/by-nc/3.0/.                             #
12
#  Permissions beyond the scope of this license are available at               #
13
#  http://cphouseset.wordpress.com/liscense-and-terms-of-use/.                 #
14
#                                                                              #
15
#      Contact:                                                                #
16
#  NeonBlack - neonblack23@live.com (e-mail) or "neonblack23" on skype         #
17
###--------------------------------------------------------------------------###
18
19
###--------------------------------------------------------------------------###
20
#      Revision information:                                                   #
21
#  V1.0 - 10.29.2011                                                           #
22
#   Wrote and debugged main script                                             #
23
###--------------------------------------------------------------------------###
24
25
###--------------------------------------------------------------------------###
26
#      Compatibility:                                                          #
27
#  Alias       - Game_System: initialize, update                               #
28
#                Sprite_Character: update                                      #
29
#                Scene_Map: perform_battle_transition                          #
30
#                Scene_Menu: initialize                                        #
31
#  New Classes - Game_FrameRate                                                #
32
#  New Objects - Game_FrameRate: initialize, update, glitch_test               #
33
###--------------------------------------------------------------------------###
34
35
###--------------------------------------------------------------------------###
36
#      Instructions:                                                           #
37
#  Place this script in the "Materials" section of the scripts above main.     #
38
#  This script is pretty much plug and play with a few options available to    #
39
#  change below.  Using the script is as simple as changing a single           #
40
#  variable.  To enter slo-mo, simply change the pre-defined variable.         #
41
#  Since changing the framerate affects pretty much everything on screen and   #
42
#  everything in an event, caution is advised when using this script.          #
43
###--------------------------------------------------------------------------###
44
45
###--------------------------------------------------------------------------###
46
#      Config:                                                                 #
47
#  These are the default values used by several of the functions in the        #
48
#  script.  You may change these values as you find your game requires in      #
49
#  order to give the player a better playing experience based on your game.    #
50
#                                                                              #
51
# The default variable used for the frame rate.  Changing this variable at     #
52
# any time in game will result in a modified frame rate.                       #
53
SET_FPS_VARIABLE = 27 # Default = 27                                           #
54
#                                                                              #
55
# The default "slow" value.  While the framerate is this value or below, all   #
56
# events on screen change to "add" blending mode to make slo-mo mode a little  #
57
# more fancy.  Set this value to 9 or below to disable it.                     #
58
SLOMO_BLEND_EFFECT = 30 # Default = 30                                         #
59
#                                                                              #
60
# The default min and max values for FPS.  These limit what your min and max   #
61
# values can be in game to prevent large scale bugs.  Even if you set them     #
62
# higher or lower, the RGSS2 core engine cannot use frame rates lower than 10  #
63
# or higher than 120.                                                          #
64
LIMIT_FPS_MAX = 60 # Default = 60                                              #
65
LIMIT_FPS_MIN = 30 # Default = 30                                              #
66
#                                                                              #
67
###--------------------------------------------------------------------------###
68
69
70
###--------------------------------------------------------------------------###
71
#  The following lines are the actual core code of the script.  While you are  #
72
#  certainly invited to look, modifying it may result in undesirable results.  #
73
#  Modify at your own risk!                                                    #
74
###--------------------------------------------------------------------------###
75
76
77
# New class  -  Controls the framerate in game if it is changed by a controller.
78
class Game_FrameRate
79
  def initialize
80
    # Nothing here!  Is that even allowed?  In any case, this is a placeholder.
81
  end
82
  
83
  def update
84
    new_fps = $game_variables[SET_FPS_VARIABLE]
85
    new_fps = 60 if new_fps < 10
86
    new_fps = glitch_test(new_fps)
87
    if not $scene.is_a?(Scene_Battle) && $scene != Scene_Menu
88
      Graphics.frame_rate = new_fps if Graphics.frame_rate != new_fps
89
    end
90
    $game_variables[SET_FPS_VARIABLE] = new_fps
91
  end
92
93
# New object  -  Called by the "update" object.  Used to check the new FPS
94
#                value and limit it if needed.
95
  def glitch_test(fps)
96
    fps = LIMIT_FPS_MAX if fps > LIMIT_FPS_MAX
97
    fps = LIMIT_FPS_MIN if fps < LIMIT_FPS_MIN
98
    return fps
99
  end
100
end
101
102
class Game_System
103
# Alias method  -  Used to initialize frame rate.
104
  alias initialize_with_framerate initialize
105
  def initialize
106
    $cp_framerate = Game_FrameRate.new
107
    initialize_with_framerate
108
  end
109
110
# Alias method  -  Used to update the frame rate.
111
  alias update_with_framerate update
112
  def update
113
    update_with_framerate
114
    $cp_framerate.update
115
  end
116
end
117
118
class Sprite_Character < Sprite_Base
119
# Alias method  -  Used to change sprite blending.
120
  alias update_with_framerate update
121
  def update
122
    update_with_framerate
123
    self.blend_type = Graphics.frame_rate <= SLOMO_BLEND_EFFECT ? 1 : 0
124
  end
125
end
126
127
class Scene_Map < Scene_Base
128
# Alias method  -  Used to return the framerate to 60 in battle.
129
  alias perform_battle_transition_with_framerate perform_battle_transition
130
  def perform_battle_transition
131
    Graphics.frame_rate = 60
132
    perform_battle_transition_with_framerate
133
  end
134
end
135
136
class Scene_Menu < Scene_Base
137
# Alias method  -  Used to return the framerate to 60 in the menu.
138
  alias initialize_with_framerate initialize
139
  def initialize(menu_index = 0)
140
    Graphics.frame_rate = 60
141
    initialize_with_framerate(menu_index)
142
  end
143
end