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,134 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** Cache
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# This module loads graphics, creates bitmap objects, and retains them.
|
5
|
+
# To speed up load times and conserve memory, this module holds the
|
6
|
+
# created bitmap object in the internal hash, allowing the program to
|
7
|
+
# return preexisting objects when the same bitmap is requested again.
|
8
|
+
#==============================================================================
|
9
|
+
|
10
|
+
module Cache
|
11
|
+
#--------------------------------------------------------------------------
|
12
|
+
# * Get Animation Graphic
|
13
|
+
#--------------------------------------------------------------------------
|
14
|
+
def self.animation(filename, hue)
|
15
|
+
load_bitmap("Graphics/Animations/", filename, hue)
|
16
|
+
end
|
17
|
+
#--------------------------------------------------------------------------
|
18
|
+
# * Get Battle Background (Floor) Graphic
|
19
|
+
#--------------------------------------------------------------------------
|
20
|
+
def self.battleback1(filename)
|
21
|
+
load_bitmap("Graphics/Battlebacks1/", filename)
|
22
|
+
end
|
23
|
+
#--------------------------------------------------------------------------
|
24
|
+
# * Get Battle Background (Wall) Graphic
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
def self.battleback2(filename)
|
27
|
+
load_bitmap("Graphics/Battlebacks2/", filename)
|
28
|
+
end
|
29
|
+
#--------------------------------------------------------------------------
|
30
|
+
# * Get Battle Graphic
|
31
|
+
#--------------------------------------------------------------------------
|
32
|
+
def self.battler(filename, hue)
|
33
|
+
load_bitmap("Graphics/Battlers/", filename, hue)
|
34
|
+
end
|
35
|
+
#--------------------------------------------------------------------------
|
36
|
+
# * Get Character Graphic
|
37
|
+
#--------------------------------------------------------------------------
|
38
|
+
def self.character(filename)
|
39
|
+
load_bitmap("Graphics/Characters/", filename)
|
40
|
+
end
|
41
|
+
#--------------------------------------------------------------------------
|
42
|
+
# * Get Face Graphic
|
43
|
+
#--------------------------------------------------------------------------
|
44
|
+
def self.face(filename)
|
45
|
+
load_bitmap("Graphics/Faces/", filename)
|
46
|
+
end
|
47
|
+
#--------------------------------------------------------------------------
|
48
|
+
# * Get Parallax Background Graphic
|
49
|
+
#--------------------------------------------------------------------------
|
50
|
+
def self.parallax(filename)
|
51
|
+
load_bitmap("Graphics/Parallaxes/", filename)
|
52
|
+
end
|
53
|
+
#--------------------------------------------------------------------------
|
54
|
+
# * Get Picture Graphic
|
55
|
+
#--------------------------------------------------------------------------
|
56
|
+
def self.picture(filename)
|
57
|
+
load_bitmap("Graphics/Pictures/", filename)
|
58
|
+
end
|
59
|
+
#--------------------------------------------------------------------------
|
60
|
+
# * Get System Graphic
|
61
|
+
#--------------------------------------------------------------------------
|
62
|
+
def self.system(filename)
|
63
|
+
load_bitmap("Graphics/System/", filename)
|
64
|
+
end
|
65
|
+
#--------------------------------------------------------------------------
|
66
|
+
# * Get Tileset Graphic
|
67
|
+
#--------------------------------------------------------------------------
|
68
|
+
def self.tileset(filename)
|
69
|
+
load_bitmap("Graphics/Tilesets/", filename)
|
70
|
+
end
|
71
|
+
#--------------------------------------------------------------------------
|
72
|
+
# * Get Title (Background) Graphic
|
73
|
+
#--------------------------------------------------------------------------
|
74
|
+
def self.title1(filename)
|
75
|
+
load_bitmap("Graphics/Titles1/", filename)
|
76
|
+
end
|
77
|
+
#--------------------------------------------------------------------------
|
78
|
+
# * Get Title (Frame) Graphic
|
79
|
+
#--------------------------------------------------------------------------
|
80
|
+
def self.title2(filename)
|
81
|
+
load_bitmap("Graphics/Titles2/", filename)
|
82
|
+
end
|
83
|
+
#--------------------------------------------------------------------------
|
84
|
+
# * Load Bitmap
|
85
|
+
#--------------------------------------------------------------------------
|
86
|
+
def self.load_bitmap(folder_name, filename, hue = 0)
|
87
|
+
@cache ||= {}
|
88
|
+
if filename.empty?
|
89
|
+
empty_bitmap
|
90
|
+
elsif hue == 0
|
91
|
+
normal_bitmap(folder_name + filename)
|
92
|
+
else
|
93
|
+
hue_changed_bitmap(folder_name + filename, hue)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
#--------------------------------------------------------------------------
|
97
|
+
# * Create Empty Bitmap
|
98
|
+
#--------------------------------------------------------------------------
|
99
|
+
def self.empty_bitmap
|
100
|
+
Bitmap.new(32, 32)
|
101
|
+
end
|
102
|
+
#--------------------------------------------------------------------------
|
103
|
+
# * Create/Get Normal Bitmap
|
104
|
+
#--------------------------------------------------------------------------
|
105
|
+
def self.normal_bitmap(path)
|
106
|
+
@cache[path] = Bitmap.new(path) unless include?(path)
|
107
|
+
@cache[path]
|
108
|
+
end
|
109
|
+
#--------------------------------------------------------------------------
|
110
|
+
# * Create/Get Hue-Changed Bitmap
|
111
|
+
#--------------------------------------------------------------------------
|
112
|
+
def self.hue_changed_bitmap(path, hue)
|
113
|
+
key = [path, hue]
|
114
|
+
unless include?(key)
|
115
|
+
@cache[key] = normal_bitmap(path).clone
|
116
|
+
@cache[key].hue_change(hue)
|
117
|
+
end
|
118
|
+
@cache[key]
|
119
|
+
end
|
120
|
+
#--------------------------------------------------------------------------
|
121
|
+
# * Check Cache Existence
|
122
|
+
#--------------------------------------------------------------------------
|
123
|
+
def self.include?(key)
|
124
|
+
@cache[key] && !@cache[key].disposed?
|
125
|
+
end
|
126
|
+
#--------------------------------------------------------------------------
|
127
|
+
# * Clear Cache
|
128
|
+
#--------------------------------------------------------------------------
|
129
|
+
def self.clear
|
130
|
+
@cache ||= {}
|
131
|
+
@cache.clear
|
132
|
+
GC.start
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,267 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** DataManager
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# This module manages the database and game objects. Almost all of the
|
5
|
+
# global variables used by the game are initialized by this module.
|
6
|
+
#==============================================================================
|
7
|
+
|
8
|
+
module DataManager
|
9
|
+
#--------------------------------------------------------------------------
|
10
|
+
# * Module Instance Variables
|
11
|
+
#--------------------------------------------------------------------------
|
12
|
+
@last_savefile_index = 0 # most recently accessed file
|
13
|
+
#--------------------------------------------------------------------------
|
14
|
+
# * Initialize Module
|
15
|
+
#--------------------------------------------------------------------------
|
16
|
+
def self.init
|
17
|
+
@last_savefile_index = 0
|
18
|
+
load_database
|
19
|
+
create_game_objects
|
20
|
+
setup_battle_test if $BTEST
|
21
|
+
end
|
22
|
+
#--------------------------------------------------------------------------
|
23
|
+
# * Load Database
|
24
|
+
#--------------------------------------------------------------------------
|
25
|
+
def self.load_database
|
26
|
+
if $BTEST
|
27
|
+
load_battle_test_database
|
28
|
+
else
|
29
|
+
load_normal_database
|
30
|
+
check_player_location
|
31
|
+
end
|
32
|
+
end
|
33
|
+
#--------------------------------------------------------------------------
|
34
|
+
# * Load Normal Database
|
35
|
+
#--------------------------------------------------------------------------
|
36
|
+
def self.load_normal_database
|
37
|
+
$data_actors = load_data("Data/Actors.rvdata2")
|
38
|
+
$data_classes = load_data("Data/Classes.rvdata2")
|
39
|
+
$data_skills = load_data("Data/Skills.rvdata2")
|
40
|
+
$data_items = load_data("Data/Items.rvdata2")
|
41
|
+
$data_weapons = load_data("Data/Weapons.rvdata2")
|
42
|
+
$data_armors = load_data("Data/Armors.rvdata2")
|
43
|
+
$data_enemies = load_data("Data/Enemies.rvdata2")
|
44
|
+
$data_troops = load_data("Data/Troops.rvdata2")
|
45
|
+
$data_states = load_data("Data/States.rvdata2")
|
46
|
+
$data_animations = load_data("Data/Animations.rvdata2")
|
47
|
+
$data_tilesets = load_data("Data/Tilesets.rvdata2")
|
48
|
+
$data_common_events = load_data("Data/CommonEvents.rvdata2")
|
49
|
+
$data_system = load_data("Data/System.rvdata2")
|
50
|
+
$data_mapinfos = load_data("Data/MapInfos.rvdata2")
|
51
|
+
end
|
52
|
+
#--------------------------------------------------------------------------
|
53
|
+
# * Load Battle Test Database
|
54
|
+
#--------------------------------------------------------------------------
|
55
|
+
def self.load_battle_test_database
|
56
|
+
$data_actors = load_data("Data/BT_Actors.rvdata2")
|
57
|
+
$data_classes = load_data("Data/BT_Classes.rvdata2")
|
58
|
+
$data_skills = load_data("Data/BT_Skills.rvdata2")
|
59
|
+
$data_items = load_data("Data/BT_Items.rvdata2")
|
60
|
+
$data_weapons = load_data("Data/BT_Weapons.rvdata2")
|
61
|
+
$data_armors = load_data("Data/BT_Armors.rvdata2")
|
62
|
+
$data_enemies = load_data("Data/BT_Enemies.rvdata2")
|
63
|
+
$data_troops = load_data("Data/BT_Troops.rvdata2")
|
64
|
+
$data_states = load_data("Data/BT_States.rvdata2")
|
65
|
+
$data_animations = load_data("Data/BT_Animations.rvdata2")
|
66
|
+
$data_tilesets = load_data("Data/BT_Tilesets.rvdata2")
|
67
|
+
$data_common_events = load_data("Data/BT_CommonEvents.rvdata2")
|
68
|
+
$data_system = load_data("Data/BT_System.rvdata2")
|
69
|
+
end
|
70
|
+
#--------------------------------------------------------------------------
|
71
|
+
# * Check Player Start Location Existence
|
72
|
+
#--------------------------------------------------------------------------
|
73
|
+
def self.check_player_location
|
74
|
+
if $data_system.start_map_id == 0
|
75
|
+
msgbox(Vocab::PlayerPosError)
|
76
|
+
exit
|
77
|
+
end
|
78
|
+
end
|
79
|
+
#--------------------------------------------------------------------------
|
80
|
+
# * Create Game Objects
|
81
|
+
#--------------------------------------------------------------------------
|
82
|
+
def self.create_game_objects
|
83
|
+
$game_temp = Game_Temp.new
|
84
|
+
$game_system = Game_System.new
|
85
|
+
$game_timer = Game_Timer.new
|
86
|
+
$game_message = Game_Message.new
|
87
|
+
$game_switches = Game_Switches.new
|
88
|
+
$game_variables = Game_Variables.new
|
89
|
+
$game_self_switches = Game_SelfSwitches.new
|
90
|
+
$game_actors = Game_Actors.new
|
91
|
+
$game_party = Game_Party.new
|
92
|
+
$game_troop = Game_Troop.new
|
93
|
+
$game_map = Game_Map.new
|
94
|
+
$game_player = Game_Player.new
|
95
|
+
end
|
96
|
+
#--------------------------------------------------------------------------
|
97
|
+
# * Set Up New Game
|
98
|
+
#--------------------------------------------------------------------------
|
99
|
+
def self.setup_new_game
|
100
|
+
create_game_objects
|
101
|
+
$game_party.setup_starting_members
|
102
|
+
$game_map.setup($data_system.start_map_id)
|
103
|
+
$game_player.moveto($data_system.start_x, $data_system.start_y)
|
104
|
+
$game_player.refresh
|
105
|
+
Graphics.frame_count = 0
|
106
|
+
end
|
107
|
+
#--------------------------------------------------------------------------
|
108
|
+
# * Set Up Battle Test
|
109
|
+
#--------------------------------------------------------------------------
|
110
|
+
def self.setup_battle_test
|
111
|
+
$game_party.setup_battle_test
|
112
|
+
BattleManager.setup($data_system.test_troop_id)
|
113
|
+
BattleManager.play_battle_bgm
|
114
|
+
end
|
115
|
+
#--------------------------------------------------------------------------
|
116
|
+
# * Determine Existence of Save File
|
117
|
+
#--------------------------------------------------------------------------
|
118
|
+
def self.save_file_exists?
|
119
|
+
!Dir.glob('Save*.rvdata2').empty?
|
120
|
+
end
|
121
|
+
#--------------------------------------------------------------------------
|
122
|
+
# * Maximum Number of Save Files
|
123
|
+
#--------------------------------------------------------------------------
|
124
|
+
def self.savefile_max
|
125
|
+
return 16
|
126
|
+
end
|
127
|
+
#--------------------------------------------------------------------------
|
128
|
+
# * Create Filename
|
129
|
+
# index : File Index
|
130
|
+
#--------------------------------------------------------------------------
|
131
|
+
def self.make_filename(index)
|
132
|
+
sprintf("Save%02d.rvdata2", index + 1)
|
133
|
+
end
|
134
|
+
#--------------------------------------------------------------------------
|
135
|
+
# * Execute Save
|
136
|
+
#--------------------------------------------------------------------------
|
137
|
+
def self.save_game(index)
|
138
|
+
begin
|
139
|
+
save_game_without_rescue(index)
|
140
|
+
rescue
|
141
|
+
delete_save_file(index)
|
142
|
+
false
|
143
|
+
end
|
144
|
+
end
|
145
|
+
#--------------------------------------------------------------------------
|
146
|
+
# * Execute Load
|
147
|
+
#--------------------------------------------------------------------------
|
148
|
+
def self.load_game(index)
|
149
|
+
load_game_without_rescue(index) rescue false
|
150
|
+
end
|
151
|
+
#--------------------------------------------------------------------------
|
152
|
+
# * Load Save Header
|
153
|
+
#--------------------------------------------------------------------------
|
154
|
+
def self.load_header(index)
|
155
|
+
load_header_without_rescue(index) rescue nil
|
156
|
+
end
|
157
|
+
#--------------------------------------------------------------------------
|
158
|
+
# * Execute Save (No Exception Processing)
|
159
|
+
#--------------------------------------------------------------------------
|
160
|
+
def self.save_game_without_rescue(index)
|
161
|
+
File.open(make_filename(index), "wb") do |file|
|
162
|
+
$game_system.on_before_save
|
163
|
+
Marshal.dump(make_save_header, file)
|
164
|
+
Marshal.dump(make_save_contents, file)
|
165
|
+
@last_savefile_index = index
|
166
|
+
end
|
167
|
+
return true
|
168
|
+
end
|
169
|
+
#--------------------------------------------------------------------------
|
170
|
+
# * Execute Load (No Exception Processing)
|
171
|
+
#--------------------------------------------------------------------------
|
172
|
+
def self.load_game_without_rescue(index)
|
173
|
+
File.open(make_filename(index), "rb") do |file|
|
174
|
+
Marshal.load(file)
|
175
|
+
extract_save_contents(Marshal.load(file))
|
176
|
+
reload_map_if_updated
|
177
|
+
@last_savefile_index = index
|
178
|
+
end
|
179
|
+
return true
|
180
|
+
end
|
181
|
+
#--------------------------------------------------------------------------
|
182
|
+
# * Load Save Header (No Exception Processing)
|
183
|
+
#--------------------------------------------------------------------------
|
184
|
+
def self.load_header_without_rescue(index)
|
185
|
+
File.open(make_filename(index), "rb") do |file|
|
186
|
+
return Marshal.load(file)
|
187
|
+
end
|
188
|
+
return nil
|
189
|
+
end
|
190
|
+
#--------------------------------------------------------------------------
|
191
|
+
# * Delete Save File
|
192
|
+
#--------------------------------------------------------------------------
|
193
|
+
def self.delete_save_file(index)
|
194
|
+
File.delete(make_filename(index)) rescue nil
|
195
|
+
end
|
196
|
+
#--------------------------------------------------------------------------
|
197
|
+
# * Create Save Header
|
198
|
+
#--------------------------------------------------------------------------
|
199
|
+
def self.make_save_header
|
200
|
+
header = {}
|
201
|
+
header[:characters] = $game_party.characters_for_savefile
|
202
|
+
header[:playtime_s] = $game_system.playtime_s
|
203
|
+
header
|
204
|
+
end
|
205
|
+
#--------------------------------------------------------------------------
|
206
|
+
# * Create Save Contents
|
207
|
+
#--------------------------------------------------------------------------
|
208
|
+
def self.make_save_contents
|
209
|
+
contents = {}
|
210
|
+
contents[:system] = $game_system
|
211
|
+
contents[:timer] = $game_timer
|
212
|
+
contents[:message] = $game_message
|
213
|
+
contents[:switches] = $game_switches
|
214
|
+
contents[:variables] = $game_variables
|
215
|
+
contents[:self_switches] = $game_self_switches
|
216
|
+
contents[:actors] = $game_actors
|
217
|
+
contents[:party] = $game_party
|
218
|
+
contents[:troop] = $game_troop
|
219
|
+
contents[:map] = $game_map
|
220
|
+
contents[:player] = $game_player
|
221
|
+
contents
|
222
|
+
end
|
223
|
+
#--------------------------------------------------------------------------
|
224
|
+
# * Extract Save Contents
|
225
|
+
#--------------------------------------------------------------------------
|
226
|
+
def self.extract_save_contents(contents)
|
227
|
+
$game_system = contents[:system]
|
228
|
+
$game_timer = contents[:timer]
|
229
|
+
$game_message = contents[:message]
|
230
|
+
$game_switches = contents[:switches]
|
231
|
+
$game_variables = contents[:variables]
|
232
|
+
$game_self_switches = contents[:self_switches]
|
233
|
+
$game_actors = contents[:actors]
|
234
|
+
$game_party = contents[:party]
|
235
|
+
$game_troop = contents[:troop]
|
236
|
+
$game_map = contents[:map]
|
237
|
+
$game_player = contents[:player]
|
238
|
+
end
|
239
|
+
#--------------------------------------------------------------------------
|
240
|
+
# * Reload Map if Data Is Updated
|
241
|
+
#--------------------------------------------------------------------------
|
242
|
+
def self.reload_map_if_updated
|
243
|
+
if $game_system.version_id != $data_system.version_id
|
244
|
+
$game_map.setup($game_map.map_id)
|
245
|
+
$game_player.center($game_player.x, $game_player.y)
|
246
|
+
$game_player.make_encounter_count
|
247
|
+
end
|
248
|
+
end
|
249
|
+
#--------------------------------------------------------------------------
|
250
|
+
# * Get Update Date of Save File
|
251
|
+
#--------------------------------------------------------------------------
|
252
|
+
def self.savefile_time_stamp(index)
|
253
|
+
File.mtime(make_filename(index)) rescue Time.at(0)
|
254
|
+
end
|
255
|
+
#--------------------------------------------------------------------------
|
256
|
+
# * Get File Index with Latest Update Date
|
257
|
+
#--------------------------------------------------------------------------
|
258
|
+
def self.latest_savefile_index
|
259
|
+
savefile_max.times.max_by {|i| savefile_time_stamp(i) }
|
260
|
+
end
|
261
|
+
#--------------------------------------------------------------------------
|
262
|
+
# * Get Index of File Most Recently Accessed
|
263
|
+
#--------------------------------------------------------------------------
|
264
|
+
def self.last_savefile_index
|
265
|
+
@last_savefile_index
|
266
|
+
end
|
267
|
+
end
|
@@ -0,0 +1,262 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** Game_Action
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# This class handles battle actions. This class is used within the
|
5
|
+
# Game_Battler class.
|
6
|
+
#==============================================================================
|
7
|
+
|
8
|
+
class Game_Action
|
9
|
+
#--------------------------------------------------------------------------
|
10
|
+
# * Public Instance Variables
|
11
|
+
#--------------------------------------------------------------------------
|
12
|
+
attr_reader :subject # action subject
|
13
|
+
attr_reader :forcing # forcing flag for battle action
|
14
|
+
attr_reader :item # skill/item
|
15
|
+
attr_accessor :target_index # target index
|
16
|
+
attr_reader :value # evaluation value for auto battle
|
17
|
+
#--------------------------------------------------------------------------
|
18
|
+
# * Object Initialization
|
19
|
+
#--------------------------------------------------------------------------
|
20
|
+
def initialize(subject, forcing = false)
|
21
|
+
@subject = subject
|
22
|
+
@forcing = forcing
|
23
|
+
clear
|
24
|
+
end
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
# * Clear
|
27
|
+
#--------------------------------------------------------------------------
|
28
|
+
def clear
|
29
|
+
@item = Game_BaseItem.new
|
30
|
+
@target_index = -1
|
31
|
+
@value = 0
|
32
|
+
end
|
33
|
+
#--------------------------------------------------------------------------
|
34
|
+
# * Get Allied Units
|
35
|
+
#--------------------------------------------------------------------------
|
36
|
+
def friends_unit
|
37
|
+
subject.friends_unit
|
38
|
+
end
|
39
|
+
#--------------------------------------------------------------------------
|
40
|
+
# * Get Enemy Units
|
41
|
+
#--------------------------------------------------------------------------
|
42
|
+
def opponents_unit
|
43
|
+
subject.opponents_unit
|
44
|
+
end
|
45
|
+
#--------------------------------------------------------------------------
|
46
|
+
# * Set Battle Action of Enemy Character
|
47
|
+
# action : RPG::Enemy::Action
|
48
|
+
#--------------------------------------------------------------------------
|
49
|
+
def set_enemy_action(action)
|
50
|
+
if action
|
51
|
+
set_skill(action.skill_id)
|
52
|
+
else
|
53
|
+
clear
|
54
|
+
end
|
55
|
+
end
|
56
|
+
#--------------------------------------------------------------------------
|
57
|
+
# * Set Normal Attack
|
58
|
+
#--------------------------------------------------------------------------
|
59
|
+
def set_attack
|
60
|
+
set_skill(subject.attack_skill_id)
|
61
|
+
self
|
62
|
+
end
|
63
|
+
#--------------------------------------------------------------------------
|
64
|
+
# * Set Guard
|
65
|
+
#--------------------------------------------------------------------------
|
66
|
+
def set_guard
|
67
|
+
set_skill(subject.guard_skill_id)
|
68
|
+
self
|
69
|
+
end
|
70
|
+
#--------------------------------------------------------------------------
|
71
|
+
# * Set Skill
|
72
|
+
#--------------------------------------------------------------------------
|
73
|
+
def set_skill(skill_id)
|
74
|
+
@item.object = $data_skills[skill_id]
|
75
|
+
self
|
76
|
+
end
|
77
|
+
#--------------------------------------------------------------------------
|
78
|
+
# * Set Item
|
79
|
+
#--------------------------------------------------------------------------
|
80
|
+
def set_item(item_id)
|
81
|
+
@item.object = $data_items[item_id]
|
82
|
+
self
|
83
|
+
end
|
84
|
+
#--------------------------------------------------------------------------
|
85
|
+
# * Get Item Object
|
86
|
+
#--------------------------------------------------------------------------
|
87
|
+
def item
|
88
|
+
@item.object
|
89
|
+
end
|
90
|
+
#--------------------------------------------------------------------------
|
91
|
+
# * Normal Attack Determination
|
92
|
+
#--------------------------------------------------------------------------
|
93
|
+
def attack?
|
94
|
+
item == $data_skills[subject.attack_skill_id]
|
95
|
+
end
|
96
|
+
#--------------------------------------------------------------------------
|
97
|
+
# * Random Target
|
98
|
+
#--------------------------------------------------------------------------
|
99
|
+
def decide_random_target
|
100
|
+
if item.for_dead_friend?
|
101
|
+
target = friends_unit.random_dead_target
|
102
|
+
elsif item.for_friend?
|
103
|
+
target = friends_unit.random_target
|
104
|
+
else
|
105
|
+
target = opponents_unit.random_target
|
106
|
+
end
|
107
|
+
if target
|
108
|
+
@target_index = target.index
|
109
|
+
else
|
110
|
+
clear
|
111
|
+
end
|
112
|
+
end
|
113
|
+
#--------------------------------------------------------------------------
|
114
|
+
# * Set Confusion Action
|
115
|
+
#--------------------------------------------------------------------------
|
116
|
+
def set_confusion
|
117
|
+
set_attack
|
118
|
+
end
|
119
|
+
#--------------------------------------------------------------------------
|
120
|
+
# * Action Preparation
|
121
|
+
#--------------------------------------------------------------------------
|
122
|
+
def prepare
|
123
|
+
set_confusion if subject.confusion? && !forcing
|
124
|
+
end
|
125
|
+
#--------------------------------------------------------------------------
|
126
|
+
# * Determination if Action is Valid or Not
|
127
|
+
# Assuming that an event command does not cause [Force Battle Action],
|
128
|
+
# if state limitations or lack of items, etc. make the planned action
|
129
|
+
# impossible, return false.
|
130
|
+
#--------------------------------------------------------------------------
|
131
|
+
def valid?
|
132
|
+
(forcing && item) || subject.usable?(item)
|
133
|
+
end
|
134
|
+
#--------------------------------------------------------------------------
|
135
|
+
# * Calculate Action Speed
|
136
|
+
#--------------------------------------------------------------------------
|
137
|
+
def speed
|
138
|
+
speed = subject.agi + rand(5 + subject.agi / 4)
|
139
|
+
speed += item.speed if item
|
140
|
+
speed += subject.atk_speed if attack?
|
141
|
+
speed
|
142
|
+
end
|
143
|
+
#--------------------------------------------------------------------------
|
144
|
+
# * Create Target Array
|
145
|
+
#--------------------------------------------------------------------------
|
146
|
+
def make_targets
|
147
|
+
if !forcing && subject.confusion?
|
148
|
+
[confusion_target]
|
149
|
+
elsif item.for_opponent?
|
150
|
+
targets_for_opponents
|
151
|
+
elsif item.for_friend?
|
152
|
+
targets_for_friends
|
153
|
+
else
|
154
|
+
[]
|
155
|
+
end
|
156
|
+
end
|
157
|
+
#--------------------------------------------------------------------------
|
158
|
+
# * Target When Confused
|
159
|
+
#--------------------------------------------------------------------------
|
160
|
+
def confusion_target
|
161
|
+
case subject.confusion_level
|
162
|
+
when 1
|
163
|
+
opponents_unit.random_target
|
164
|
+
when 2
|
165
|
+
if rand(2) == 0
|
166
|
+
opponents_unit.random_target
|
167
|
+
else
|
168
|
+
friends_unit.random_target
|
169
|
+
end
|
170
|
+
else
|
171
|
+
friends_unit.random_target
|
172
|
+
end
|
173
|
+
end
|
174
|
+
#--------------------------------------------------------------------------
|
175
|
+
# * Targets for Opponents
|
176
|
+
#--------------------------------------------------------------------------
|
177
|
+
def targets_for_opponents
|
178
|
+
if item.for_random?
|
179
|
+
Array.new(item.number_of_targets) { opponents_unit.random_target }
|
180
|
+
elsif item.for_one?
|
181
|
+
num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
|
182
|
+
if @target_index < 0
|
183
|
+
[opponents_unit.random_target] * num
|
184
|
+
else
|
185
|
+
[opponents_unit.smooth_target(@target_index)] * num
|
186
|
+
end
|
187
|
+
else
|
188
|
+
opponents_unit.alive_members
|
189
|
+
end
|
190
|
+
end
|
191
|
+
#--------------------------------------------------------------------------
|
192
|
+
# * Targets for Allies
|
193
|
+
#--------------------------------------------------------------------------
|
194
|
+
def targets_for_friends
|
195
|
+
if item.for_user?
|
196
|
+
[subject]
|
197
|
+
elsif item.for_dead_friend?
|
198
|
+
if item.for_one?
|
199
|
+
[friends_unit.smooth_dead_target(@target_index)]
|
200
|
+
else
|
201
|
+
friends_unit.dead_members
|
202
|
+
end
|
203
|
+
elsif item.for_friend?
|
204
|
+
if item.for_one?
|
205
|
+
[friends_unit.smooth_target(@target_index)]
|
206
|
+
else
|
207
|
+
friends_unit.alive_members
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
#--------------------------------------------------------------------------
|
212
|
+
# * Evaluate Value of Action (for Auto Battle)
|
213
|
+
# @value and @target_index are automatically set.
|
214
|
+
#--------------------------------------------------------------------------
|
215
|
+
def evaluate
|
216
|
+
@value = 0
|
217
|
+
evaluate_item if valid?
|
218
|
+
@value += rand if @value > 0
|
219
|
+
self
|
220
|
+
end
|
221
|
+
#--------------------------------------------------------------------------
|
222
|
+
# * Evaluate Skill/Item
|
223
|
+
#--------------------------------------------------------------------------
|
224
|
+
def evaluate_item
|
225
|
+
item_target_candidates.each do |target|
|
226
|
+
value = evaluate_item_with_target(target)
|
227
|
+
if item.for_all?
|
228
|
+
@value += value
|
229
|
+
elsif value > @value
|
230
|
+
@value = value
|
231
|
+
@target_index = target.index
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
#--------------------------------------------------------------------------
|
236
|
+
# * Get Use Target Candidates for Skills/Items
|
237
|
+
#--------------------------------------------------------------------------
|
238
|
+
def item_target_candidates
|
239
|
+
if item.for_opponent?
|
240
|
+
opponents_unit.alive_members
|
241
|
+
elsif item.for_user?
|
242
|
+
[subject]
|
243
|
+
elsif item.for_dead_friend?
|
244
|
+
friends_unit.dead_members
|
245
|
+
else
|
246
|
+
friends_unit.alive_members
|
247
|
+
end
|
248
|
+
end
|
249
|
+
#--------------------------------------------------------------------------
|
250
|
+
# * Evaluate Skill/Item (Target Specification)
|
251
|
+
#--------------------------------------------------------------------------
|
252
|
+
def evaluate_item_with_target(target)
|
253
|
+
target.result.clear
|
254
|
+
target.make_damage_value(subject, item)
|
255
|
+
if item.for_opponent?
|
256
|
+
return target.result.hp_damage.to_f / [target.hp, 1].max
|
257
|
+
else
|
258
|
+
recovery = [-target.result.hp_damage, target.mhp - target.hp].min
|
259
|
+
return recovery.to_f / target.mhp
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|