rgss3_default_scripts 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/Gemfile +4 -0
- data/README.md +9 -0
- data/Rakefile +2 -0
- data/lib/rgss3_default_scripts.rb +109 -0
- data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
- data/lib/rgss3_default_scripts/Cache.rb +134 -0
- data/lib/rgss3_default_scripts/DataManager.rb +267 -0
- data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
- data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
- data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
- data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
- data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
- data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
- data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
- data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
- data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
- data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
- data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
- data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
- data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
- data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
- data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
- data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
- data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
- data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
- data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
- data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
- data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
- data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
- data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
- data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
- data/lib/rgss3_default_scripts/Game_System.rb +122 -0
- data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
- data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
- data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
- data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
- data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
- data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
- data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
- data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
- data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
- data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
- data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
- data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
- data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
- data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
- data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
- data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
- data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
- data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
- data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
- data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
- data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
- data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
- data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
- data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
- data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
- data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
- data/lib/rgss3_default_scripts/Sound.rb +135 -0
- data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
- data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
- data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
- data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
- data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
- data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
- data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
- data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
- data/lib/rgss3_default_scripts/Vocab.rb +145 -0
- data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
- data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
- data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
- data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
- data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
- data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
- data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
- data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
- data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
- data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
- data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
- data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
- data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
- data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
- data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
- data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
- data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
- data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
- data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
- data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
- data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
- data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
- data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
- data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
- data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
- data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
- data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
- data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
- data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
- data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
- data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
- data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
- data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
- data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
- data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
- data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
- data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
- data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
- data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
- data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
- data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
- data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
- data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
- data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
- data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
- data/rgss3_default_scripts.gemspec +23 -0
- 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
|