rgss3_default_scripts 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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