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,56 @@
1
+ #==============================================================================
2
+ # ** Game_Timer
3
+ #------------------------------------------------------------------------------
4
+ # This class handles timers. Instances of this class are referenced by
5
+ # $game_timer.
6
+ #==============================================================================
7
+
8
+ class Game_Timer
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize
13
+ @count = 0
14
+ @working = false
15
+ end
16
+ #--------------------------------------------------------------------------
17
+ # * Frame Update
18
+ #--------------------------------------------------------------------------
19
+ def update
20
+ if @working && @count > 0
21
+ @count -= 1
22
+ on_expire if @count == 0
23
+ end
24
+ end
25
+ #--------------------------------------------------------------------------
26
+ # * Start
27
+ #--------------------------------------------------------------------------
28
+ def start(count)
29
+ @count = count
30
+ @working = true
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Stop
34
+ #--------------------------------------------------------------------------
35
+ def stop
36
+ @working = false
37
+ end
38
+ #--------------------------------------------------------------------------
39
+ # * Determine if Working
40
+ #--------------------------------------------------------------------------
41
+ def working?
42
+ @working
43
+ end
44
+ #--------------------------------------------------------------------------
45
+ # * Get Seconds
46
+ #--------------------------------------------------------------------------
47
+ def sec
48
+ @count / Graphics.frame_rate
49
+ end
50
+ #--------------------------------------------------------------------------
51
+ # * Processing When Timer Reaches 0
52
+ #--------------------------------------------------------------------------
53
+ def on_expire
54
+ BattleManager.abort
55
+ end
56
+ end
@@ -0,0 +1,205 @@
1
+ #==============================================================================
2
+ # ** Game_Troop
3
+ #------------------------------------------------------------------------------
4
+ # This class handles enemy groups and battle-related data. Also performs
5
+ # battle events. The instance of this class is referenced by $game_troop.
6
+ #==============================================================================
7
+
8
+ class Game_Troop < Game_Unit
9
+ #--------------------------------------------------------------------------
10
+ # * Characters to be added to the end of enemy names
11
+ #--------------------------------------------------------------------------
12
+ LETTER_TABLE_HALF = [' A',' B',' C',' D',' E',' F',' G',' H',' I',' J',
13
+ ' K',' L',' M',' N',' O',' P',' Q',' R',' S',' T',
14
+ ' U',' V',' W',' X',' Y',' Z']
15
+ LETTER_TABLE_FULL = ['A','B','C','D','E','F','G','H','I','J',
16
+ 'K','L','M','N','O','P','Q','R','S','T',
17
+ 'U','V','W','X','Y','Z']
18
+ #--------------------------------------------------------------------------
19
+ # * Public Instance Variables
20
+ #--------------------------------------------------------------------------
21
+ attr_reader :screen # battle screen state
22
+ attr_reader :interpreter # battle event interpreter
23
+ attr_reader :event_flags # battle event executed flag
24
+ attr_reader :turn_count # number of turns
25
+ attr_reader :name_counts # hash for enemy name appearance
26
+ #--------------------------------------------------------------------------
27
+ # * Object Initialization
28
+ #--------------------------------------------------------------------------
29
+ def initialize
30
+ super
31
+ @screen = Game_Screen.new
32
+ @interpreter = Game_Interpreter.new
33
+ @event_flags = {}
34
+ clear
35
+ end
36
+ #--------------------------------------------------------------------------
37
+ # * Get Members
38
+ #--------------------------------------------------------------------------
39
+ def members
40
+ @enemies
41
+ end
42
+ #--------------------------------------------------------------------------
43
+ # * Clear
44
+ #--------------------------------------------------------------------------
45
+ def clear
46
+ @screen.clear
47
+ @interpreter.clear
48
+ @event_flags.clear
49
+ @enemies = []
50
+ @turn_count = 0
51
+ @names_count = {}
52
+ end
53
+ #--------------------------------------------------------------------------
54
+ # * Get Troop Objects
55
+ #--------------------------------------------------------------------------
56
+ def troop
57
+ $data_troops[@troop_id]
58
+ end
59
+ #--------------------------------------------------------------------------
60
+ # * Setup
61
+ #--------------------------------------------------------------------------
62
+ def setup(troop_id)
63
+ clear
64
+ @troop_id = troop_id
65
+ @enemies = []
66
+ troop.members.each do |member|
67
+ next unless $data_enemies[member.enemy_id]
68
+ enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
69
+ enemy.hide if member.hidden
70
+ enemy.screen_x = member.x
71
+ enemy.screen_y = member.y
72
+ @enemies.push(enemy)
73
+ end
74
+ init_screen_tone
75
+ make_unique_names
76
+ end
77
+ #--------------------------------------------------------------------------
78
+ # * Initialize Screen Tone
79
+ #--------------------------------------------------------------------------
80
+ def init_screen_tone
81
+ @screen.start_tone_change($game_map.screen.tone, 0) if $game_map
82
+ end
83
+ #--------------------------------------------------------------------------
84
+ # * Add letters (ABC, etc) to enemy characters with the same name
85
+ #--------------------------------------------------------------------------
86
+ def make_unique_names
87
+ members.each do |enemy|
88
+ next unless enemy.alive?
89
+ next unless enemy.letter.empty?
90
+ n = @names_count[enemy.original_name] || 0
91
+ enemy.letter = letter_table[n % letter_table.size]
92
+ @names_count[enemy.original_name] = n + 1
93
+ end
94
+ members.each do |enemy|
95
+ n = @names_count[enemy.original_name] || 0
96
+ enemy.plural = true if n >= 2
97
+ end
98
+ end
99
+ #--------------------------------------------------------------------------
100
+ # * Get Text Table to Place Behind Enemy Name
101
+ #--------------------------------------------------------------------------
102
+ def letter_table
103
+ $game_system.japanese? ? LETTER_TABLE_FULL : LETTER_TABLE_HALF
104
+ end
105
+ #--------------------------------------------------------------------------
106
+ # * Frame Update
107
+ #--------------------------------------------------------------------------
108
+ def update
109
+ @screen.update
110
+ end
111
+ #--------------------------------------------------------------------------
112
+ # * Get Enemy Name Array
113
+ # For display at start of battle. Overlapping names are removed.
114
+ #--------------------------------------------------------------------------
115
+ def enemy_names
116
+ names = []
117
+ members.each do |enemy|
118
+ next unless enemy.alive?
119
+ next if names.include?(enemy.original_name)
120
+ names.push(enemy.original_name)
121
+ end
122
+ names
123
+ end
124
+ #--------------------------------------------------------------------------
125
+ # * Determine if Battle Event (Page) Conditions Are Met
126
+ #--------------------------------------------------------------------------
127
+ def conditions_met?(page)
128
+ c = page.condition
129
+ if !c.turn_ending && !c.turn_valid && !c.enemy_valid &&
130
+ !c.actor_valid && !c.switch_valid
131
+ return false # Conditions not set: not executed
132
+ end
133
+ if @event_flags[page]
134
+ return false # Executed
135
+ end
136
+ if c.turn_ending # At turn end
137
+ return false unless BattleManager.turn_end?
138
+ end
139
+ if c.turn_valid # Number of turns
140
+ n = @turn_count
141
+ a = c.turn_a
142
+ b = c.turn_b
143
+ return false if (b == 0 && n != a)
144
+ return false if (b > 0 && (n < 1 || n < a || n % b != a % b))
145
+ end
146
+ if c.enemy_valid # Enemy
147
+ enemy = $game_troop.members[c.enemy_index]
148
+ return false if enemy == nil
149
+ return false if enemy.hp_rate * 100 > c.enemy_hp
150
+ end
151
+ if c.actor_valid # Actor
152
+ actor = $game_actors[c.actor_id]
153
+ return false if actor == nil
154
+ return false if actor.hp_rate * 100 > c.actor_hp
155
+ end
156
+ if c.switch_valid # Switch
157
+ return false if !$game_switches[c.switch_id]
158
+ end
159
+ return true # Condition met
160
+ end
161
+ #--------------------------------------------------------------------------
162
+ # * Battle Event Setup
163
+ #--------------------------------------------------------------------------
164
+ def setup_battle_event
165
+ return if @interpreter.running?
166
+ return if @interpreter.setup_reserved_common_event
167
+ troop.pages.each do |page|
168
+ next unless conditions_met?(page)
169
+ @interpreter.setup(page.list)
170
+ @event_flags[page] = true if page.span <= 1
171
+ return
172
+ end
173
+ end
174
+ #--------------------------------------------------------------------------
175
+ # * Increase Turns
176
+ #--------------------------------------------------------------------------
177
+ def increase_turn
178
+ troop.pages.each {|page| @event_flags[page] = false if page.span == 1 }
179
+ @turn_count += 1
180
+ end
181
+ #--------------------------------------------------------------------------
182
+ # * Calculate Total Experience
183
+ #--------------------------------------------------------------------------
184
+ def exp_total
185
+ dead_members.inject(0) {|r, enemy| r += enemy.exp }
186
+ end
187
+ #--------------------------------------------------------------------------
188
+ # * Calculate Total Gold
189
+ #--------------------------------------------------------------------------
190
+ def gold_total
191
+ dead_members.inject(0) {|r, enemy| r += enemy.gold } * gold_rate
192
+ end
193
+ #--------------------------------------------------------------------------
194
+ # * Get Multiplier for Gold
195
+ #--------------------------------------------------------------------------
196
+ def gold_rate
197
+ $game_party.gold_double? ? 2 : 1
198
+ end
199
+ #--------------------------------------------------------------------------
200
+ # * Create Array of Dropped Items
201
+ #--------------------------------------------------------------------------
202
+ def make_drop_items
203
+ dead_members.inject([]) {|r, enemy| r += enemy.make_drop_items }
204
+ end
205
+ end
@@ -0,0 +1,131 @@
1
+ #==============================================================================
2
+ # ** Game_Unit
3
+ #------------------------------------------------------------------------------
4
+ # This class handles units. It's used as a superclass of the Game_Party and
5
+ # and Game_Troop classes.
6
+ #==============================================================================
7
+
8
+ class Game_Unit
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_reader :in_battle # in battle flag
13
+ #--------------------------------------------------------------------------
14
+ # * Object Initialization
15
+ #--------------------------------------------------------------------------
16
+ def initialize
17
+ @in_battle = false
18
+ end
19
+ #--------------------------------------------------------------------------
20
+ # * Get Members
21
+ #--------------------------------------------------------------------------
22
+ def members
23
+ return []
24
+ end
25
+ #--------------------------------------------------------------------------
26
+ # * Get Array of Living Members
27
+ #--------------------------------------------------------------------------
28
+ def alive_members
29
+ members.select {|member| member.alive? }
30
+ end
31
+ #--------------------------------------------------------------------------
32
+ # * Get Array of Incapacitated Members
33
+ #--------------------------------------------------------------------------
34
+ def dead_members
35
+ members.select {|member| member.dead? }
36
+ end
37
+ #--------------------------------------------------------------------------
38
+ # * Get Array of Movable Members
39
+ #--------------------------------------------------------------------------
40
+ def movable_members
41
+ members.select {|member| member.movable? }
42
+ end
43
+ #--------------------------------------------------------------------------
44
+ # * Clear all Members' Battle Actions
45
+ #--------------------------------------------------------------------------
46
+ def clear_actions
47
+ members.each {|member| member.clear_actions }
48
+ end
49
+ #--------------------------------------------------------------------------
50
+ # * Calculate Average Value of Agility
51
+ #--------------------------------------------------------------------------
52
+ def agi
53
+ return 1 if members.size == 0
54
+ members.inject(0) {|r, member| r += member.agi } / members.size
55
+ end
56
+ #--------------------------------------------------------------------------
57
+ # * Calculate Total Target Rate
58
+ #--------------------------------------------------------------------------
59
+ def tgr_sum
60
+ alive_members.inject(0) {|r, member| r + member.tgr }
61
+ end
62
+ #--------------------------------------------------------------------------
63
+ # * Random Selection of Target
64
+ #--------------------------------------------------------------------------
65
+ def random_target
66
+ tgr_rand = rand * tgr_sum
67
+ alive_members.each do |member|
68
+ tgr_rand -= member.tgr
69
+ return member if tgr_rand < 0
70
+ end
71
+ alive_members[0]
72
+ end
73
+ #--------------------------------------------------------------------------
74
+ # * Randomly Determine Target (K.O.)
75
+ #--------------------------------------------------------------------------
76
+ def random_dead_target
77
+ dead_members.empty? ? nil : dead_members[rand(dead_members.size)]
78
+ end
79
+ #--------------------------------------------------------------------------
80
+ # * Smooth Selection of Target
81
+ #--------------------------------------------------------------------------
82
+ def smooth_target(index)
83
+ member = members[index]
84
+ (member && member.alive?) ? member : alive_members[0]
85
+ end
86
+ #--------------------------------------------------------------------------
87
+ # * Smooth Selection of Target (K.O.)
88
+ #--------------------------------------------------------------------------
89
+ def smooth_dead_target(index)
90
+ member = members[index]
91
+ (member && member.dead?) ? member : dead_members[0]
92
+ end
93
+ #--------------------------------------------------------------------------
94
+ # * Clear Action Results
95
+ #--------------------------------------------------------------------------
96
+ def clear_results
97
+ members.select {|member| member.result.clear }
98
+ end
99
+ #--------------------------------------------------------------------------
100
+ # * Processing at Start of Battle
101
+ #--------------------------------------------------------------------------
102
+ def on_battle_start
103
+ members.each {|member| member.on_battle_start }
104
+ @in_battle = true
105
+ end
106
+ #--------------------------------------------------------------------------
107
+ # * Processing at End of Battle
108
+ #--------------------------------------------------------------------------
109
+ def on_battle_end
110
+ @in_battle = false
111
+ members.each {|member| member.on_battle_end }
112
+ end
113
+ #--------------------------------------------------------------------------
114
+ # * Create Battle Action
115
+ #--------------------------------------------------------------------------
116
+ def make_actions
117
+ members.each {|member| member.make_actions }
118
+ end
119
+ #--------------------------------------------------------------------------
120
+ # * Determine Everyone is Dead
121
+ #--------------------------------------------------------------------------
122
+ def all_dead?
123
+ alive_members.empty?
124
+ end
125
+ #--------------------------------------------------------------------------
126
+ # * Get Substitute Battler
127
+ #--------------------------------------------------------------------------
128
+ def substitute_battler
129
+ members.find {|member| member.substitute? }
130
+ end
131
+ end
@@ -0,0 +1,34 @@
1
+ #==============================================================================
2
+ # ** Game_Variables
3
+ #------------------------------------------------------------------------------
4
+ # This class handles variables. It's a wrapper for the built-in class "Array."
5
+ # The instance of this class is referenced by $game_variables.
6
+ #==============================================================================
7
+
8
+ class Game_Variables
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize
13
+ @data = []
14
+ end
15
+ #--------------------------------------------------------------------------
16
+ # * Get Variable
17
+ #--------------------------------------------------------------------------
18
+ def [](variable_id)
19
+ @data[variable_id] || 0
20
+ end
21
+ #--------------------------------------------------------------------------
22
+ # * Set Variable
23
+ #--------------------------------------------------------------------------
24
+ def []=(variable_id, value)
25
+ @data[variable_id] = value
26
+ on_change
27
+ end
28
+ #--------------------------------------------------------------------------
29
+ # * Processing When Setting Variables
30
+ #--------------------------------------------------------------------------
31
+ def on_change
32
+ $game_map.need_refresh = true
33
+ end
34
+ end
@@ -0,0 +1,193 @@
1
+ #==============================================================================
2
+ # ** Game_Vehicle
3
+ #------------------------------------------------------------------------------
4
+ # This class handles vehicles. It's used within the Game_Map class. If there
5
+ # are no vehicles on the current map, the coordinates are set to (-1,-1).
6
+ #==============================================================================
7
+
8
+ class Game_Vehicle < Game_Character
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_reader :altitude # altitude (for airships)
13
+ attr_reader :driving # driving flag
14
+ #--------------------------------------------------------------------------
15
+ # * Object Initialization
16
+ # type: vehicle type (:boat, :ship, :airship)
17
+ #--------------------------------------------------------------------------
18
+ def initialize(type)
19
+ super()
20
+ @type = type
21
+ @altitude = 0
22
+ @driving = false
23
+ @direction = 4
24
+ @walk_anime = false
25
+ @step_anime = false
26
+ @walking_bgm = nil
27
+ init_move_speed
28
+ load_system_settings
29
+ end
30
+ #--------------------------------------------------------------------------
31
+ # * Initialize Move Speed
32
+ #--------------------------------------------------------------------------
33
+ def init_move_speed
34
+ @move_speed = 4 if @type == :boat
35
+ @move_speed = 5 if @type == :ship
36
+ @move_speed = 6 if @type == :airship
37
+ end
38
+ #--------------------------------------------------------------------------
39
+ # * Get System Settings
40
+ #--------------------------------------------------------------------------
41
+ def system_vehicle
42
+ return $data_system.boat if @type == :boat
43
+ return $data_system.ship if @type == :ship
44
+ return $data_system.airship if @type == :airship
45
+ return nil
46
+ end
47
+ #--------------------------------------------------------------------------
48
+ # * Load System Settings
49
+ #--------------------------------------------------------------------------
50
+ def load_system_settings
51
+ @map_id = system_vehicle.start_map_id
52
+ @x = system_vehicle.start_x
53
+ @y = system_vehicle.start_y
54
+ @character_name = system_vehicle.character_name
55
+ @character_index = system_vehicle.character_index
56
+ end
57
+ #--------------------------------------------------------------------------
58
+ # * Refresh
59
+ #--------------------------------------------------------------------------
60
+ def refresh
61
+ if @driving
62
+ @map_id = $game_map.map_id
63
+ sync_with_player
64
+ elsif @map_id == $game_map.map_id
65
+ moveto(@x, @y)
66
+ end
67
+ if @type == :airship
68
+ @priority_type = @driving ? 2 : 0
69
+ else
70
+ @priority_type = 1
71
+ end
72
+ @walk_anime = @step_anime = @driving
73
+ end
74
+ #--------------------------------------------------------------------------
75
+ # * Change Position
76
+ #--------------------------------------------------------------------------
77
+ def set_location(map_id, x, y)
78
+ @map_id = map_id
79
+ @x = x
80
+ @y = y
81
+ refresh
82
+ end
83
+ #--------------------------------------------------------------------------
84
+ # * Determine Coordinate Match
85
+ #--------------------------------------------------------------------------
86
+ def pos?(x, y)
87
+ @map_id == $game_map.map_id && super(x, y)
88
+ end
89
+ #--------------------------------------------------------------------------
90
+ # * Determine Transparency
91
+ #--------------------------------------------------------------------------
92
+ def transparent
93
+ @map_id != $game_map.map_id || super
94
+ end
95
+ #--------------------------------------------------------------------------
96
+ # * Board Vehicle
97
+ #--------------------------------------------------------------------------
98
+ def get_on
99
+ @driving = true
100
+ @walk_anime = true
101
+ @step_anime = true
102
+ @walking_bgm = RPG::BGM.last
103
+ system_vehicle.bgm.play
104
+ end
105
+ #--------------------------------------------------------------------------
106
+ # * Get Off Vehicle
107
+ #--------------------------------------------------------------------------
108
+ def get_off
109
+ @driving = false
110
+ @walk_anime = false
111
+ @step_anime = false
112
+ @direction = 4
113
+ @walking_bgm.play
114
+ end
115
+ #--------------------------------------------------------------------------
116
+ # * Synchronize With Player
117
+ #--------------------------------------------------------------------------
118
+ def sync_with_player
119
+ @x = $game_player.x
120
+ @y = $game_player.y
121
+ @real_x = $game_player.real_x
122
+ @real_y = $game_player.real_y
123
+ @direction = $game_player.direction
124
+ update_bush_depth
125
+ end
126
+ #--------------------------------------------------------------------------
127
+ # * Get Move Speed
128
+ #--------------------------------------------------------------------------
129
+ def speed
130
+ @move_speed
131
+ end
132
+ #--------------------------------------------------------------------------
133
+ # * Get Screen Y-Coordinates
134
+ #--------------------------------------------------------------------------
135
+ def screen_y
136
+ super - altitude
137
+ end
138
+ #--------------------------------------------------------------------------
139
+ # * Determine if Movement is Possible
140
+ #--------------------------------------------------------------------------
141
+ def movable?
142
+ !moving? && !(@type == :airship && @altitude < max_altitude)
143
+ end
144
+ #--------------------------------------------------------------------------
145
+ # * Frame Update
146
+ #--------------------------------------------------------------------------
147
+ def update
148
+ super
149
+ update_airship_altitude if @type == :airship
150
+ end
151
+ #--------------------------------------------------------------------------
152
+ # * Update Airship Altitude
153
+ #--------------------------------------------------------------------------
154
+ def update_airship_altitude
155
+ if @driving
156
+ @altitude += 1 if @altitude < max_altitude && takeoff_ok?
157
+ elsif @altitude > 0
158
+ @altitude -= 1
159
+ @priority_type = 0 if @altitude == 0
160
+ end
161
+ @step_anime = (@altitude == max_altitude)
162
+ @priority_type = 2 if @altitude > 0
163
+ end
164
+ #--------------------------------------------------------------------------
165
+ # * Get Maximum Altitude of Airship
166
+ #--------------------------------------------------------------------------
167
+ def max_altitude
168
+ return 32
169
+ end
170
+ #--------------------------------------------------------------------------
171
+ # * Determine if Takeoff Is Possible
172
+ #--------------------------------------------------------------------------
173
+ def takeoff_ok?
174
+ $game_player.followers.gather?
175
+ end
176
+ #--------------------------------------------------------------------------
177
+ # * Determine if Docking/Landing Is Possible
178
+ # d: Direction (2,4,6,8)
179
+ #--------------------------------------------------------------------------
180
+ def land_ok?(x, y, d)
181
+ if @type == :airship
182
+ return false unless $game_map.airship_land_ok?(x, y)
183
+ return false unless $game_map.events_xy(x, y).empty?
184
+ else
185
+ x2 = $game_map.round_x_with_direction(x, d)
186
+ y2 = $game_map.round_y_with_direction(y, d)
187
+ return false unless $game_map.valid?(x2, y2)
188
+ return false unless $game_map.passable?(x2, y2, reverse_dir(d))
189
+ return false if collide_with_characters?(x2, y2)
190
+ end
191
+ return true
192
+ end
193
+ end