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.
- 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
|