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