rgss3_default_scripts 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/README.md +9 -0
  5. data/Rakefile +2 -0
  6. data/lib/rgss3_default_scripts.rb +109 -0
  7. data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
  8. data/lib/rgss3_default_scripts/Cache.rb +134 -0
  9. data/lib/rgss3_default_scripts/DataManager.rb +267 -0
  10. data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
  11. data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
  12. data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
  13. data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
  14. data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
  15. data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
  16. data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
  17. data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
  18. data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
  19. data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
  20. data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
  21. data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
  22. data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
  23. data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
  24. data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
  25. data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
  26. data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
  27. data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
  28. data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
  29. data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
  30. data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
  31. data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
  32. data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
  33. data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
  34. data/lib/rgss3_default_scripts/Game_System.rb +122 -0
  35. data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
  36. data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
  37. data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
  38. data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
  39. data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
  40. data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
  41. data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
  42. data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
  43. data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
  44. data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
  45. data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
  46. data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
  47. data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
  48. data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
  49. data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
  50. data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
  51. data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
  52. data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
  53. data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
  54. data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
  55. data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
  56. data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
  57. data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
  58. data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
  59. data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
  60. data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
  61. data/lib/rgss3_default_scripts/Sound.rb +135 -0
  62. data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
  63. data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
  64. data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
  65. data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
  66. data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
  67. data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
  68. data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
  69. data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
  70. data/lib/rgss3_default_scripts/Vocab.rb +145 -0
  71. data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
  72. data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
  73. data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
  74. data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
  75. data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
  76. data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
  77. data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
  78. data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
  79. data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
  80. data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
  81. data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
  82. data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
  83. data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
  84. data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
  85. data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
  86. data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
  87. data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
  88. data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
  89. data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
  90. data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
  91. data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
  92. data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
  93. data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
  94. data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
  95. data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
  96. data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
  97. data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
  98. data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
  99. data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
  100. data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
  101. data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
  102. data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
  103. data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
  104. data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
  105. data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
  106. data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
  107. data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
  108. data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
  109. data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
  110. data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
  111. data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
  112. data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
  113. data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
  114. data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
  115. data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
  116. data/rgss3_default_scripts.gemspec +23 -0
  117. metadata +186 -0
@@ -0,0 +1,145 @@
1
+ #==============================================================================
2
+ # ** Vocab
3
+ #------------------------------------------------------------------------------
4
+ # This module defines terms and messages. It defines some data as constant
5
+ # variables. Terms in the database are obtained from $data_system.
6
+ #==============================================================================
7
+
8
+ module Vocab
9
+
10
+ # Shop Screen
11
+ ShopBuy = "Buy"
12
+ ShopSell = "Sell"
13
+ ShopCancel = "Cancel"
14
+ Possession = "Possession"
15
+
16
+ # Status Screen
17
+ ExpTotal = "Current Exp"
18
+ ExpNext = "To Next %s"
19
+
20
+ # Save/Load Screen
21
+ SaveMessage = "Save to which file?"
22
+ LoadMessage = "Load which file?"
23
+ File = "File"
24
+
25
+ # Display when there are multiple members
26
+ PartyName = "%s's Party"
27
+
28
+ # Basic Battle Messages
29
+ Emerge = "%s emerged!"
30
+ Preemptive = "%s got the upper hand!"
31
+ Surprise = "%s was surprised!"
32
+ EscapeStart = "%s has started to escape!"
33
+ EscapeFailure = "However, it was unable to escape!"
34
+
35
+ # Battle Ending Messages
36
+ Victory = "%s was victorious!"
37
+ Defeat = "%s was defeated."
38
+ ObtainExp = "%s EXP received!"
39
+ ObtainGold = "%s\\G found!"
40
+ ObtainItem = "%s found!"
41
+ LevelUp = "%s is now %s %s!"
42
+ ObtainSkill = "%s learned!"
43
+
44
+ # Use Item
45
+ UseItem = "%s uses %s!"
46
+
47
+ # Critical Hit
48
+ CriticalToEnemy = "An excellent hit!!"
49
+ CriticalToActor = "A painful blow!!"
50
+
51
+ # Results for Actions on Actors
52
+ ActorDamage = "%s took %s damage!"
53
+ ActorRecovery = "%s recovered %s %s!"
54
+ ActorGain = "%s gained %s %s!"
55
+ ActorLoss = "%s lost %s %s!"
56
+ ActorDrain = "%s was drained of %s %s!"
57
+ ActorNoDamage = "%s took no damage!"
58
+ ActorNoHit = "Miss! %s took no damage!"
59
+
60
+ # Results for Actions on Enemies
61
+ EnemyDamage = "%s took %s damage!"
62
+ EnemyRecovery = "%s recovered %s %s!"
63
+ EnemyGain = "%s gained %s %s!"
64
+ EnemyLoss = "%s lost %s %s!"
65
+ EnemyDrain = "Drained %s %s from %s!"
66
+ EnemyNoDamage = "%s took no damage!"
67
+ EnemyNoHit = "Missed! %s took no damage!"
68
+
69
+ # Evasion/Reflection
70
+ Evasion = "%s evaded the attack!"
71
+ MagicEvasion = "%s nullified the magic!"
72
+ MagicReflection = "%s reflected the magic!"
73
+ CounterAttack = "%s counterattacked!"
74
+ Substitute = "%s protected %s!"
75
+
76
+ # Buff/Debuff
77
+ BuffAdd = "%s's %s went up!"
78
+ DebuffAdd = "%s's %s went down!"
79
+ BuffRemove = "%s's %s returned to normal."
80
+
81
+ # Skill or Item Had No Effect
82
+ ActionFailure = "There was no effect on %s!"
83
+
84
+ # Error Message
85
+ PlayerPosError = "Player's starting position is not set."
86
+ EventOverflow = "Common event calls exceeded the limit."
87
+
88
+ # Basic Status
89
+ def self.basic(basic_id)
90
+ $data_system.terms.basic[basic_id]
91
+ end
92
+
93
+ # Parameters
94
+ def self.param(param_id)
95
+ $data_system.terms.params[param_id]
96
+ end
97
+
98
+ # Equip Type
99
+ def self.etype(etype_id)
100
+ $data_system.terms.etypes[etype_id]
101
+ end
102
+
103
+ # Commands
104
+ def self.command(command_id)
105
+ $data_system.terms.commands[command_id]
106
+ end
107
+
108
+ # Currency Unit
109
+ def self.currency_unit
110
+ $data_system.currency_unit
111
+ end
112
+
113
+ #--------------------------------------------------------------------------
114
+ def self.level; basic(0); end # Level
115
+ def self.level_a; basic(1); end # Level (short)
116
+ def self.hp; basic(2); end # HP
117
+ def self.hp_a; basic(3); end # HP (short)
118
+ def self.mp; basic(4); end # MP
119
+ def self.mp_a; basic(5); end # MP (short)
120
+ def self.tp; basic(6); end # TP
121
+ def self.tp_a; basic(7); end # TP (short)
122
+ def self.fight; command(0); end # Fight
123
+ def self.escape; command(1); end # Escape
124
+ def self.attack; command(2); end # Attack
125
+ def self.guard; command(3); end # Guard
126
+ def self.item; command(4); end # Items
127
+ def self.skill; command(5); end # Skills
128
+ def self.equip; command(6); end # Equip
129
+ def self.status; command(7); end # Status
130
+ def self.formation; command(8); end # Change Formation
131
+ def self.save; command(9); end # Save
132
+ def self.game_end; command(10); end # Exit Game
133
+ def self.weapon; command(12); end # Weapons
134
+ def self.armor; command(13); end # Armor
135
+ def self.key_item; command(14); end # Key Items
136
+ def self.equip2; command(15); end # Change Equipment
137
+ def self.optimize; command(16); end # Ultimate Equipment
138
+ def self.clear; command(17); end # Remove All
139
+ def self.new_game; command(18); end # New Game
140
+ def self.continue; command(19); end # Continue
141
+ def self.shutdown; command(20); end # Shut Down
142
+ def self.to_title; command(21); end # Go to Title
143
+ def self.cancel; command(22); end # Cancel
144
+ #--------------------------------------------------------------------------
145
+ end
@@ -0,0 +1,78 @@
1
+ #==============================================================================
2
+ # ** Window_ActorCommand
3
+ #------------------------------------------------------------------------------
4
+ # This window is for selecting an actor's action on the battle screen.
5
+ #==============================================================================
6
+
7
+ class Window_ActorCommand < Window_Command
8
+ #--------------------------------------------------------------------------
9
+ # * Object Initialization
10
+ #--------------------------------------------------------------------------
11
+ def initialize
12
+ super(0, 0)
13
+ self.openness = 0
14
+ deactivate
15
+ @actor = nil
16
+ end
17
+ #--------------------------------------------------------------------------
18
+ # * Get Window Width
19
+ #--------------------------------------------------------------------------
20
+ def window_width
21
+ return 128
22
+ end
23
+ #--------------------------------------------------------------------------
24
+ # * Get Number of Lines to Show
25
+ #--------------------------------------------------------------------------
26
+ def visible_line_number
27
+ return 4
28
+ end
29
+ #--------------------------------------------------------------------------
30
+ # * Create Command List
31
+ #--------------------------------------------------------------------------
32
+ def make_command_list
33
+ return unless @actor
34
+ add_attack_command
35
+ add_skill_commands
36
+ add_guard_command
37
+ add_item_command
38
+ end
39
+ #--------------------------------------------------------------------------
40
+ # * Add Attack Command to List
41
+ #--------------------------------------------------------------------------
42
+ def add_attack_command
43
+ add_command(Vocab::attack, :attack, @actor.attack_usable?)
44
+ end
45
+ #--------------------------------------------------------------------------
46
+ # * Add Skill Command to List
47
+ #--------------------------------------------------------------------------
48
+ def add_skill_commands
49
+ @actor.added_skill_types.sort.each do |stype_id|
50
+ name = $data_system.skill_types[stype_id]
51
+ add_command(name, :skill, true, stype_id)
52
+ end
53
+ end
54
+ #--------------------------------------------------------------------------
55
+ # * Add Guard Command to List
56
+ #--------------------------------------------------------------------------
57
+ def add_guard_command
58
+ add_command(Vocab::guard, :guard, @actor.guard_usable?)
59
+ end
60
+ #--------------------------------------------------------------------------
61
+ # * Add Item Command to List
62
+ #--------------------------------------------------------------------------
63
+ def add_item_command
64
+ add_command(Vocab::item, :item)
65
+ end
66
+ #--------------------------------------------------------------------------
67
+ # * Setup
68
+ #--------------------------------------------------------------------------
69
+ def setup(actor)
70
+ @actor = actor
71
+ clear_command_list
72
+ make_command_list
73
+ refresh
74
+ select(0)
75
+ activate
76
+ open
77
+ end
78
+ end
@@ -0,0 +1,571 @@
1
+ #==============================================================================
2
+ # ** Window_Base
3
+ #------------------------------------------------------------------------------
4
+ # This is a super class of all windows within the game.
5
+ #==============================================================================
6
+
7
+ class Window_Base < Window
8
+ #--------------------------------------------------------------------------
9
+ # * Object Initialization
10
+ #--------------------------------------------------------------------------
11
+ def initialize(x, y, width, height)
12
+ super
13
+ self.windowskin = Cache.system("Window")
14
+ update_padding
15
+ update_tone
16
+ create_contents
17
+ @opening = @closing = false
18
+ end
19
+ #--------------------------------------------------------------------------
20
+ # * Free
21
+ #--------------------------------------------------------------------------
22
+ def dispose
23
+ contents.dispose unless disposed?
24
+ super
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Get Line Height
28
+ #--------------------------------------------------------------------------
29
+ def line_height
30
+ return 24
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Get Standard Padding Size
34
+ #--------------------------------------------------------------------------
35
+ def standard_padding
36
+ return 12
37
+ end
38
+ #--------------------------------------------------------------------------
39
+ # * Update Padding
40
+ #--------------------------------------------------------------------------
41
+ def update_padding
42
+ self.padding = standard_padding
43
+ end
44
+ #--------------------------------------------------------------------------
45
+ # * Calculate Width of Window Contents
46
+ #--------------------------------------------------------------------------
47
+ def contents_width
48
+ width - standard_padding * 2
49
+ end
50
+ #--------------------------------------------------------------------------
51
+ # * Calculate Height of Window Contents
52
+ #--------------------------------------------------------------------------
53
+ def contents_height
54
+ height - standard_padding * 2
55
+ end
56
+ #--------------------------------------------------------------------------
57
+ # * Calculate Height of Window Suited to Specified Number of Lines
58
+ #--------------------------------------------------------------------------
59
+ def fitting_height(line_number)
60
+ line_number * line_height + standard_padding * 2
61
+ end
62
+ #--------------------------------------------------------------------------
63
+ # * Update Tone
64
+ #--------------------------------------------------------------------------
65
+ def update_tone
66
+ self.tone.set($game_system.window_tone)
67
+ end
68
+ #--------------------------------------------------------------------------
69
+ # * Create Window Contents
70
+ #--------------------------------------------------------------------------
71
+ def create_contents
72
+ contents.dispose
73
+ if contents_width > 0 && contents_height > 0
74
+ self.contents = Bitmap.new(contents_width, contents_height)
75
+ else
76
+ self.contents = Bitmap.new(1, 1)
77
+ end
78
+ end
79
+ #--------------------------------------------------------------------------
80
+ # * Frame Update
81
+ #--------------------------------------------------------------------------
82
+ def update
83
+ super
84
+ update_tone
85
+ update_open if @opening
86
+ update_close if @closing
87
+ end
88
+ #--------------------------------------------------------------------------
89
+ # * Update Open Processing
90
+ #--------------------------------------------------------------------------
91
+ def update_open
92
+ self.openness += 48
93
+ @opening = false if open?
94
+ end
95
+ #--------------------------------------------------------------------------
96
+ # * Update Close Processing
97
+ #--------------------------------------------------------------------------
98
+ def update_close
99
+ self.openness -= 48
100
+ @closing = false if close?
101
+ end
102
+ #--------------------------------------------------------------------------
103
+ # * Open Window
104
+ #--------------------------------------------------------------------------
105
+ def open
106
+ @opening = true unless open?
107
+ @closing = false
108
+ self
109
+ end
110
+ #--------------------------------------------------------------------------
111
+ # * Close Window
112
+ #--------------------------------------------------------------------------
113
+ def close
114
+ @closing = true unless close?
115
+ @opening = false
116
+ self
117
+ end
118
+ #--------------------------------------------------------------------------
119
+ # * Show Window
120
+ #--------------------------------------------------------------------------
121
+ def show
122
+ self.visible = true
123
+ self
124
+ end
125
+ #--------------------------------------------------------------------------
126
+ # * Hide Window
127
+ #--------------------------------------------------------------------------
128
+ def hide
129
+ self.visible = false
130
+ self
131
+ end
132
+ #--------------------------------------------------------------------------
133
+ # * Activate Window
134
+ #--------------------------------------------------------------------------
135
+ def activate
136
+ self.active = true
137
+ self
138
+ end
139
+ #--------------------------------------------------------------------------
140
+ # * Deactivate Window
141
+ #--------------------------------------------------------------------------
142
+ def deactivate
143
+ self.active = false
144
+ self
145
+ end
146
+ #--------------------------------------------------------------------------
147
+ # * Get Text Color
148
+ # n : Text color number (0..31)
149
+ #--------------------------------------------------------------------------
150
+ def text_color(n)
151
+ windowskin.get_pixel(64 + (n % 8) * 8, 96 + (n / 8) * 8)
152
+ end
153
+ #--------------------------------------------------------------------------
154
+ # * Get Text Colors
155
+ #--------------------------------------------------------------------------
156
+ def normal_color; text_color(0); end; # Normal
157
+ def system_color; text_color(16); end; # System
158
+ def crisis_color; text_color(17); end; # Crisis
159
+ def knockout_color; text_color(18); end; # Knock out
160
+ def gauge_back_color; text_color(19); end; # Gauge background
161
+ def hp_gauge_color1; text_color(20); end; # HP gauge 1
162
+ def hp_gauge_color2; text_color(21); end; # HP gauge 2
163
+ def mp_gauge_color1; text_color(22); end; # MP gauge 1
164
+ def mp_gauge_color2; text_color(23); end; # MP gauge 2
165
+ def mp_cost_color; text_color(23); end; # TP cost
166
+ def power_up_color; text_color(24); end; # Equipment power up
167
+ def power_down_color; text_color(25); end; # Equipment power down
168
+ def tp_gauge_color1; text_color(28); end; # TP gauge 1
169
+ def tp_gauge_color2; text_color(29); end; # TP gauge 2
170
+ def tp_cost_color; text_color(29); end; # TP cost
171
+ #--------------------------------------------------------------------------
172
+ # * Get Background Color of Pending Item
173
+ #--------------------------------------------------------------------------
174
+ def pending_color
175
+ windowskin.get_pixel(80, 80)
176
+ end
177
+ #--------------------------------------------------------------------------
178
+ # * Get Alpha Value of Translucent Drawing
179
+ #--------------------------------------------------------------------------
180
+ def translucent_alpha
181
+ return 160
182
+ end
183
+ #--------------------------------------------------------------------------
184
+ # * Change Text Drawing Color
185
+ # enabled : Enabled flag. When false, draw semi-transparently.
186
+ #--------------------------------------------------------------------------
187
+ def change_color(color, enabled = true)
188
+ contents.font.color.set(color)
189
+ contents.font.color.alpha = translucent_alpha unless enabled
190
+ end
191
+ #--------------------------------------------------------------------------
192
+ # * Draw Text
193
+ # args : Same as Bitmap#draw_text.
194
+ #--------------------------------------------------------------------------
195
+ def draw_text(*args)
196
+ contents.draw_text(*args)
197
+ end
198
+ #--------------------------------------------------------------------------
199
+ # * Get Text Size
200
+ #--------------------------------------------------------------------------
201
+ def text_size(str)
202
+ contents.text_size(str)
203
+ end
204
+ #--------------------------------------------------------------------------
205
+ # * Draw Text with Control Characters
206
+ #--------------------------------------------------------------------------
207
+ def draw_text_ex(x, y, text)
208
+ reset_font_settings
209
+ text = convert_escape_characters(text)
210
+ pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
211
+ process_character(text.slice!(0, 1), text, pos) until text.empty?
212
+ end
213
+ #--------------------------------------------------------------------------
214
+ # * Reset Font Settings
215
+ #--------------------------------------------------------------------------
216
+ def reset_font_settings
217
+ change_color(normal_color)
218
+ contents.font.size = Font.default_size
219
+ contents.font.bold = Font.default_bold
220
+ contents.font.italic = Font.default_italic
221
+ end
222
+ #--------------------------------------------------------------------------
223
+ # * Preconvert Control Characters
224
+ # As a rule, replace only what will be changed into text strings before
225
+ # starting actual drawing. The character "\" is replaced with the escape
226
+ # character (\e).
227
+ #--------------------------------------------------------------------------
228
+ def convert_escape_characters(text)
229
+ result = text.to_s.clone
230
+ result.gsub!(/\\/) { "\e" }
231
+ result.gsub!(/\e\e/) { "\\" }
232
+ result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
233
+ result.gsub!(/\eV\[(\d+)\]/i) { $game_variables[$1.to_i] }
234
+ result.gsub!(/\eN\[(\d+)\]/i) { actor_name($1.to_i) }
235
+ result.gsub!(/\eP\[(\d+)\]/i) { party_member_name($1.to_i) }
236
+ result.gsub!(/\eG/i) { Vocab::currency_unit }
237
+ result
238
+ end
239
+ #--------------------------------------------------------------------------
240
+ # * Get Name of Actor Number n
241
+ #--------------------------------------------------------------------------
242
+ def actor_name(n)
243
+ actor = n >= 1 ? $game_actors[n] : nil
244
+ actor ? actor.name : ""
245
+ end
246
+ #--------------------------------------------------------------------------
247
+ # * Get Name of Party Member n
248
+ #--------------------------------------------------------------------------
249
+ def party_member_name(n)
250
+ actor = n >= 1 ? $game_party.members[n - 1] : nil
251
+ actor ? actor.name : ""
252
+ end
253
+ #--------------------------------------------------------------------------
254
+ # * Character Processing
255
+ # c : Characters
256
+ # text : A character string buffer in drawing processing (destructive)
257
+ # pos : Draw position {:x, :y, :new_x, :height}
258
+ #--------------------------------------------------------------------------
259
+ def process_character(c, text, pos)
260
+ case c
261
+ when "\n" # New line
262
+ process_new_line(text, pos)
263
+ when "\f" # New page
264
+ process_new_page(text, pos)
265
+ when "\e" # Control character
266
+ process_escape_character(obtain_escape_code(text), text, pos)
267
+ else # Normal character
268
+ process_normal_character(c, pos)
269
+ end
270
+ end
271
+ #--------------------------------------------------------------------------
272
+ # * Normal Character Processing
273
+ #--------------------------------------------------------------------------
274
+ def process_normal_character(c, pos)
275
+ text_width = text_size(c).width
276
+ draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)
277
+ pos[:x] += text_width
278
+ end
279
+ #--------------------------------------------------------------------------
280
+ # * New Line Character Processing
281
+ #--------------------------------------------------------------------------
282
+ def process_new_line(text, pos)
283
+ pos[:x] = pos[:new_x]
284
+ pos[:y] += pos[:height]
285
+ pos[:height] = calc_line_height(text)
286
+ end
287
+ #--------------------------------------------------------------------------
288
+ # * New Page Character Processing
289
+ #--------------------------------------------------------------------------
290
+ def process_new_page(text, pos)
291
+ end
292
+ #--------------------------------------------------------------------------
293
+ # * Destructively Get Control Code
294
+ #--------------------------------------------------------------------------
295
+ def obtain_escape_code(text)
296
+ text.slice!(/^[\$\.\|\^!><\{\}\\]|^[A-Z]+/i)
297
+ end
298
+ #--------------------------------------------------------------------------
299
+ # * Destructively Get Control Code Argument
300
+ #--------------------------------------------------------------------------
301
+ def obtain_escape_param(text)
302
+ text.slice!(/^\[\d+\]/)[/\d+/].to_i rescue 0
303
+ end
304
+ #--------------------------------------------------------------------------
305
+ # * Control Character Processing
306
+ # code : the core of the control character
307
+ # e.g. "C" in the case of the control character \C[1].
308
+ #--------------------------------------------------------------------------
309
+ def process_escape_character(code, text, pos)
310
+ case code.upcase
311
+ when 'C'
312
+ change_color(text_color(obtain_escape_param(text)))
313
+ when 'I'
314
+ process_draw_icon(obtain_escape_param(text), pos)
315
+ when '{'
316
+ make_font_bigger
317
+ when '}'
318
+ make_font_smaller
319
+ end
320
+ end
321
+ #--------------------------------------------------------------------------
322
+ # * Icon Drawing Process by Control Characters
323
+ #--------------------------------------------------------------------------
324
+ def process_draw_icon(icon_index, pos)
325
+ draw_icon(icon_index, pos[:x], pos[:y])
326
+ pos[:x] += 24
327
+ end
328
+ #--------------------------------------------------------------------------
329
+ # * Increase Font Size
330
+ #--------------------------------------------------------------------------
331
+ def make_font_bigger
332
+ contents.font.size += 8 if contents.font.size <= 64
333
+ end
334
+ #--------------------------------------------------------------------------
335
+ # * Decrease Font Size
336
+ #--------------------------------------------------------------------------
337
+ def make_font_smaller
338
+ contents.font.size -= 8 if contents.font.size >= 16
339
+ end
340
+ #--------------------------------------------------------------------------
341
+ # * Calculate Line Height
342
+ # restore_font_size : Return to original font size after calculating
343
+ #--------------------------------------------------------------------------
344
+ def calc_line_height(text, restore_font_size = true)
345
+ result = [line_height, contents.font.size].max
346
+ last_font_size = contents.font.size
347
+ text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc|
348
+ make_font_bigger if esc == "\e{"
349
+ make_font_smaller if esc == "\e}"
350
+ result = [result, contents.font.size].max
351
+ end
352
+ contents.font.size = last_font_size if restore_font_size
353
+ result
354
+ end
355
+ #--------------------------------------------------------------------------
356
+ # * Draw Gauge
357
+ # rate : Rate (full at 1.0)
358
+ # color1 : Left side gradation
359
+ # color2 : Right side gradation
360
+ #--------------------------------------------------------------------------
361
+ def draw_gauge(x, y, width, rate, color1, color2)
362
+ fill_w = (width * rate).to_i
363
+ gauge_y = y + line_height - 8
364
+ contents.fill_rect(x, gauge_y, width, 6, gauge_back_color)
365
+ contents.gradient_fill_rect(x, gauge_y, fill_w, 6, color1, color2)
366
+ end
367
+ #--------------------------------------------------------------------------
368
+ # * Draw Icon
369
+ # enabled : Enabled flag. When false, draw semi-transparently.
370
+ #--------------------------------------------------------------------------
371
+ def draw_icon(icon_index, x, y, enabled = true)
372
+ bitmap = Cache.system("Iconset")
373
+ rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
374
+ contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
375
+ end
376
+ #--------------------------------------------------------------------------
377
+ # * Draw Face Graphic
378
+ # enabled : Enabled flag. When false, draw semi-transparently.
379
+ #--------------------------------------------------------------------------
380
+ def draw_face(face_name, face_index, x, y, enabled = true)
381
+ bitmap = Cache.face(face_name)
382
+ rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, 96, 96)
383
+ contents.blt(x, y, bitmap, rect, enabled ? 255 : translucent_alpha)
384
+ bitmap.dispose
385
+ end
386
+ #--------------------------------------------------------------------------
387
+ # * Draw Character Graphic
388
+ #--------------------------------------------------------------------------
389
+ def draw_character(character_name, character_index, x, y)
390
+ return unless character_name
391
+ bitmap = Cache.character(character_name)
392
+ sign = character_name[/^[\!\$]./]
393
+ if sign && sign.include?('$')
394
+ cw = bitmap.width / 3
395
+ ch = bitmap.height / 4
396
+ else
397
+ cw = bitmap.width / 12
398
+ ch = bitmap.height / 8
399
+ end
400
+ n = character_index
401
+ src_rect = Rect.new((n%4*3+1)*cw, (n/4*4)*ch, cw, ch)
402
+ contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
403
+ end
404
+ #--------------------------------------------------------------------------
405
+ # * Get HP Text Color
406
+ #--------------------------------------------------------------------------
407
+ def hp_color(actor)
408
+ return knockout_color if actor.hp == 0
409
+ return crisis_color if actor.hp < actor.mhp / 4
410
+ return normal_color
411
+ end
412
+ #--------------------------------------------------------------------------
413
+ # * Get MP Text Color
414
+ #--------------------------------------------------------------------------
415
+ def mp_color(actor)
416
+ return crisis_color if actor.mp < actor.mmp / 4
417
+ return normal_color
418
+ end
419
+ #--------------------------------------------------------------------------
420
+ # * Get TP Text Color
421
+ #--------------------------------------------------------------------------
422
+ def tp_color(actor)
423
+ return normal_color
424
+ end
425
+ #--------------------------------------------------------------------------
426
+ # * Draw Actor Walking Graphic
427
+ #--------------------------------------------------------------------------
428
+ def draw_actor_graphic(actor, x, y)
429
+ draw_character(actor.character_name, actor.character_index, x, y)
430
+ end
431
+ #--------------------------------------------------------------------------
432
+ # * Draw Actor Face Graphic
433
+ #--------------------------------------------------------------------------
434
+ def draw_actor_face(actor, x, y, enabled = true)
435
+ draw_face(actor.face_name, actor.face_index, x, y, enabled)
436
+ end
437
+ #--------------------------------------------------------------------------
438
+ # * Draw Name
439
+ #--------------------------------------------------------------------------
440
+ def draw_actor_name(actor, x, y, width = 112)
441
+ change_color(hp_color(actor))
442
+ draw_text(x, y, width, line_height, actor.name)
443
+ end
444
+ #--------------------------------------------------------------------------
445
+ # * Draw Class
446
+ #--------------------------------------------------------------------------
447
+ def draw_actor_class(actor, x, y, width = 112)
448
+ change_color(normal_color)
449
+ draw_text(x, y, width, line_height, actor.class.name)
450
+ end
451
+ #--------------------------------------------------------------------------
452
+ # * Draw Nickname
453
+ #--------------------------------------------------------------------------
454
+ def draw_actor_nickname(actor, x, y, width = 180)
455
+ change_color(normal_color)
456
+ draw_text(x, y, width, line_height, actor.nickname)
457
+ end
458
+ #--------------------------------------------------------------------------
459
+ # * Draw Level
460
+ #--------------------------------------------------------------------------
461
+ def draw_actor_level(actor, x, y)
462
+ change_color(system_color)
463
+ draw_text(x, y, 32, line_height, Vocab::level_a)
464
+ change_color(normal_color)
465
+ draw_text(x + 32, y, 24, line_height, actor.level, 2)
466
+ end
467
+ #--------------------------------------------------------------------------
468
+ # * Draw State and Buff/Debuff Icons
469
+ #--------------------------------------------------------------------------
470
+ def draw_actor_icons(actor, x, y, width = 96)
471
+ icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
472
+ icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
473
+ end
474
+ #--------------------------------------------------------------------------
475
+ # * Draw Current Value/Maximum Value in Fractional Format
476
+ # current : Current value
477
+ # max : Maximum value
478
+ # color1 : Color of current value
479
+ # color2 : Color of maximum value
480
+ #--------------------------------------------------------------------------
481
+ def draw_current_and_max_values(x, y, width, current, max, color1, color2)
482
+ change_color(color1)
483
+ xr = x + width
484
+ if width < 96
485
+ draw_text(xr - 40, y, 42, line_height, current, 2)
486
+ else
487
+ draw_text(xr - 92, y, 42, line_height, current, 2)
488
+ change_color(color2)
489
+ draw_text(xr - 52, y, 12, line_height, "/", 2)
490
+ draw_text(xr - 42, y, 42, line_height, max, 2)
491
+ end
492
+ end
493
+ #--------------------------------------------------------------------------
494
+ # * Draw HP
495
+ #--------------------------------------------------------------------------
496
+ def draw_actor_hp(actor, x, y, width = 124)
497
+ draw_gauge(x, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2)
498
+ change_color(system_color)
499
+ draw_text(x, y, 30, line_height, Vocab::hp_a)
500
+ draw_current_and_max_values(x, y, width, actor.hp, actor.mhp,
501
+ hp_color(actor), normal_color)
502
+ end
503
+ #--------------------------------------------------------------------------
504
+ # * Draw MP
505
+ #--------------------------------------------------------------------------
506
+ def draw_actor_mp(actor, x, y, width = 124)
507
+ draw_gauge(x, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2)
508
+ change_color(system_color)
509
+ draw_text(x, y, 30, line_height, Vocab::mp_a)
510
+ draw_current_and_max_values(x, y, width, actor.mp, actor.mmp,
511
+ mp_color(actor), normal_color)
512
+ end
513
+ #--------------------------------------------------------------------------
514
+ # * Draw TP
515
+ #--------------------------------------------------------------------------
516
+ def draw_actor_tp(actor, x, y, width = 124)
517
+ draw_gauge(x, y, width, actor.tp_rate, tp_gauge_color1, tp_gauge_color2)
518
+ change_color(system_color)
519
+ draw_text(x, y, 30, line_height, Vocab::tp_a)
520
+ change_color(tp_color(actor))
521
+ draw_text(x + width - 42, y, 42, line_height, actor.tp.to_i, 2)
522
+ end
523
+ #--------------------------------------------------------------------------
524
+ # * Draw Simple Status
525
+ #--------------------------------------------------------------------------
526
+ def draw_actor_simple_status(actor, x, y)
527
+ draw_actor_name(actor, x, y)
528
+ draw_actor_level(actor, x, y + line_height * 1)
529
+ draw_actor_icons(actor, x, y + line_height * 2)
530
+ draw_actor_class(actor, x + 120, y)
531
+ draw_actor_hp(actor, x + 120, y + line_height * 1)
532
+ draw_actor_mp(actor, x + 120, y + line_height * 2)
533
+ end
534
+ #--------------------------------------------------------------------------
535
+ # * Draw Parameters
536
+ #--------------------------------------------------------------------------
537
+ def draw_actor_param(actor, x, y, param_id)
538
+ change_color(system_color)
539
+ draw_text(x, y, 120, line_height, Vocab::param(param_id))
540
+ change_color(normal_color)
541
+ draw_text(x + 120, y, 36, line_height, actor.param(param_id), 2)
542
+ end
543
+ #--------------------------------------------------------------------------
544
+ # * Draw Item Name
545
+ # enabled : Enabled flag. When false, draw semi-transparently.
546
+ #--------------------------------------------------------------------------
547
+ def draw_item_name(item, x, y, enabled = true, width = 172)
548
+ return unless item
549
+ draw_icon(item.icon_index, x, y, enabled)
550
+ change_color(normal_color, enabled)
551
+ draw_text(x + 24, y, width, line_height, item.name)
552
+ end
553
+ #--------------------------------------------------------------------------
554
+ # * Draw Number (Gold Etc.) with Currency Unit
555
+ #--------------------------------------------------------------------------
556
+ def draw_currency_value(value, unit, x, y, width)
557
+ cx = text_size(unit).width
558
+ change_color(normal_color)
559
+ draw_text(x, y, width - cx - 2, line_height, value, 2)
560
+ change_color(system_color)
561
+ draw_text(x, y, width, line_height, unit, 2)
562
+ end
563
+ #--------------------------------------------------------------------------
564
+ # * Get Parameter Change Color
565
+ #--------------------------------------------------------------------------
566
+ def param_change_color(change)
567
+ return power_up_color if change > 0
568
+ return power_down_color if change < 0
569
+ return normal_color
570
+ end
571
+ end