Код:
	=begin
###############################################################################
#                                                                             #
#          					Восстанавливающаяся полоса (Energy Bar)   	              #
#                                                                             #
###############################################################################	
	
Автор: Денис Кузнецов (http://vk.com/id8137201)
Группа ВК: https://vk.com/scriptsrpgmakervxace
Версия: 1.43
Релиз от: 03.07.15
Существует дополнение Energy Bar Settings
Инструкция:
используйте вызов скрипта, чтобы создать полосу:
start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, event, button)
text - текст в ковычках ""
max - максимальное значение
use_speed - скорость убывания шкалы
restore_speed - скорость восстановления шкалы
color - цвет полосы (используется цвет текста)
inverse - true/false - инвентирование полосы (увеличение значения вместо уменьшения)
event - номер обработки события (см. ниже) # Добавлено в версии 1.41 от 10.04.15
button - символ клавиши, которая отвечает за уменьшение шкалы (когда вы ее жмете),
вы можете не использовать клавишу (просто не указывайте ничего)
Если вы не используете клавишу для изменения шкалы, то вызывайте слудующие скрипты:
use_energy_bar(index) - чтобы уменьшать шкалу (index - индекс полосы)
dont_use_energy_bar(index) - чтобы восстанавливать шкалу
change_use_energy_bar(index, flag) - чтобы явно указать, что делать со шкалой
flag = true/false (уменьшать/восстанавливать)
index - индекс полосы (все индексы начинаются с 0)
Чтобы изменить сразу все полосы, используйте:
use_all_energy_bar
dont_use_all_energy_bar
change_use_all_energy_bar(flag)
если не уверены какой index использовать, вызовите скрипт:
get_energy_bar_index(text, max)
этим вы получите index нужной вам полосы (укажите текст в ковычках и максимальное значение)
Изменение шкалы:
change_energy_bar_parameter(index, type, value)
type - символ, что менять 
Возможно - :text, :now, :max, :use_speed, :restore_speed, :color, :inverse, :event, :button
change_all_energy_bar_parameter(type, value) чтобы поменять параметр для всех полос
get_energy_bar_parameter(index, type) по индексу и символу (type см. выше) вернет
значение параметра. Вернет -1, если возникла какая-то ошибка
set_energy_bar_value(index, value) установит значение (value) для полосы
set_all_energy_bar_value(value) устновит значение всем полосам
increase_energy_bar_value(index, value) увеличит полосу по индексу на value
increase_all_energy_bar_value(value) увеличит все полосы на value
decrease_energy_bar_value(index, value) уменьшит полосу по индексу на value
decrease_all_energy_bar_value(value) уменьшит все полосы на value
Проверка шкалы:
check_energy_bar(index, inverse) если inverse указать false, 
то вернет true, когда полоса = 0, иначе false
если inverse будет true, то вернет true, когда полоса = максимальному значению,
иначе false
energy_bar_inversed?(index) провека полосы на inverse. Вернет true (да), если
полоса inverse, иначе false (нет)
get_energy_bar_value(index) узнать текущее значение полосы по индексу
Уничтожение:
dispose_one_energy_bar(index) - убрать конкретную полосу по индексу
dispose_all_energy_bar - убрать все полосы
Другое:
### Добавлено в версии 1.43 от 03.07.15
Изменить остановку полосы при сообщении:
change_energy_bar_message_stop(flag)
flag = true - да, false - нет
Переключить остановку полос при сообщении:
toggle_energy_bar_message_stop
Изменить скорость полос:
Значение от 2 до 30. -1, чтобы не использовать
change_energy_bar_speed(value)
value - новое значение скорости
=end
module Energy_Bar_Settings
	# Координата X окна
	$ENERGY_BAR_WINDOW_X = 0
	
	# Координата Y окна
	$ENERGY_BAR_WINDOW_Y = 0
	
	# Ширина окна
	$ENERGY_BAR_WINDOW_WIDTH = 200
	
	# Останавливать полосы, если на экране сообщение
	$ENERGY_BAR_MESSAGE_STOP = true
	
	# Скорость изменения полос (от 2 до 30), -1, чтобы не использовать
	$ENERGY_BAR_SPEED = 10
	
	# Отображать проценты вместо текущего значения ? true - да, false - нет
	$USE_ENERGY_BAR_WINDOW_PERCENT = true
	
	# Использовать минимальный стиль отображения полосы ? true - да, false - нет
	$USE_MINIMAL_ENERGY_BAR_STYLE = true
	
	# Кнопка показа/скрытия окна
	# -1, чтобы не использовать
	ENERGY_BAR_BUTTON = :Z
	
	# Номера событий (индексы при создании полосы начинаются с 0 (event = 0, 1, 2, 3...)
	ENERGY_BAR_EVENTS = [
		# тип (переменная), номер, действие, значение, действие после, номер после
		[1, 1, 3, 10, 2, 50], # Приравняет третью переменную к 10, после увеличит значение полосы на 50
		# тип (переключатель), номер, значение, действие после, номер после
		[2, 1, 1, 1], # Вкл. первый переключатель и удалим полосу
		# тип (общее событие), номер, действие после, номер после
		[3, 2, -1] # Вызовем второе общее событие и больше ничего не сделаем
	]
	# Инструкция:
	
	# если хотите использовать переменную
	# [тип, номер, действие, значение, действие после, номер после]
	# если хотите поменять переключатель
	# [тип, номер, значение, действие после, номер после]
	# если хотите вызвать общее событие
	# [тип, номер, действие после, номер после]
	
	# тип: 1 - переменная, 2 - переключатель, 3 - событие
	# номер: номер переменной, переключателя, события
	# значение: для переменной (1 - увеличить, 2 - уменьшить, 3 - равно)
	# для переключателя (1 - вкл, 2 - выкл, 3 - переключить)
	# действие после: 1 - удалить полосу, 2 - увеличить значение полосы, 3 - общее событие
	# номер после: если увеличиваете значение полосы, то значение увеличения,
	# если вызываете общее событие, то номер события
end
$ENERGY_BAR_ARRAY = []
$imported = {} if $imported.nil?
$imported["DenKyz_EnergyBar"] = true
class Scene_Map < Scene_Base
	
	include Energy_Bar_Settings
	
	attr_reader :create_energy_bar_window
	attr_accessor :fix_show_energy_bar_window
	
	alias denis_kyznetsov_energy_bar_scn_map_start start
	def start
		@create_energy_bar_window = nil
		# если false, то окно испаряется, если восстанавливается (при клавише)
		# если true, то пользователь явно указывает, что хочет видеть окно на экране
		@fix_show_energy_bar_window = false
		create_energy_bar if !$ENERGY_BAR_ARRAY.empty? # создаем окно, если есть полосы
		denis_kyznetsov_energy_bar_scn_map_start
	end
	
	def create_energy_bar
		@create_energy_bar_window = Energy_Bar_Window.new
		@fix_show_energy_bar_window = true
	end
	
	def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse, event, button)
		
		$ENERGY_BAR_ARRAY.push({ :text => text, :max => max, :now => inverse ? 0 : max, :use_speed => use_speed, :restore_speed => restore_speed,
				:color => color, :inverse => inverse, :event => (event >= 0 && event < ENERGY_BAR_EVENTS.size) ? ENERGY_BAR_EVENTS[event] : [], 
				:event_ok => :event == [] ? false : true, :button => button, :auto => button.is_a?(Symbol) ? false : true })
		
		if @create_energy_bar_window == nil
			create_energy_bar
		else
			@create_energy_bar_window.change_window_height
		end
	end
	
	def energy_bar_array_update
		return if $game_message.busy? && $ENERGY_BAR_MESSAGE_STOP
		if $ENERGY_BAR_SPEED != -1
			return if Graphics.frame_count % $ENERGY_BAR_SPEED == 0
		end
		$ENERGY_BAR_ARRAY.each do |index|
			next if index == nil
			
			if index[:button].is_a?(Symbol) # если у нас символ кнопки
				if Input.press?(index[:button]) # если жмем кнопку
					energy_bar_animation_update(true)
					index[:inverse] == false ? update_decrease_value_energy_bar(index) : update_increase_value_energy_bar(index)
				else # Input.press?(index[:button])
					energy_bar_animation_update(false)
					index[:inverse] == false ? update_increase_value_energy_bar(index) : update_decrease_value_energy_bar(index)
				end
			else # if index[:button].is_a?(Symbol)
				
				if index[:auto] # если у нас автоматическое использование
					index[:inverse] == false ? update_decrease_value_energy_bar(index) : update_increase_value_energy_bar(index)
				else
					index[:inverse] == false ? update_increase_value_energy_bar(index) : update_decrease_value_energy_bar(index)
				end
				
			end # if index[:button].is_a?(Symbol)
			
			check_energy_bar_event_ok(index)
			check_energy_bar_event(index)
			
		end # $ENERGY_BAR_ARRAY.each do |index|
		
	end
	
	def check_energy_bar_event_ok(index)
		return if index[:event] == []
		if index[:inverse]
			index[:event_ok] = true if (index[:now].to_f/index[:max] * 100).to_i < 99
		else
			index[:event_ok] = true if (index[:now].to_f/index[:max] * 100).to_i > 0
		end
	end
	
	def check_energy_bar_event(index)
		return if index[:event] == []
		return if !index[:event_ok]
		if index[:inverse]
			return if index[:now].to_i != index[:max].to_i
		else
			return if index[:now].to_i != 0
		end
		event_list = index[:event]
		process_value = 0 # номер переменной, с которой начинается обработка после
		case event_list[0] # переменная, переключатель, общее событие
		when 1 # переменная
			case event_list[2]
			when 1 # увеличить переменную
				$game_variables[event_list[1]] += event_list[3]
			when 2 # уменьшить переменную
				$game_variables[event_list[1]] -= event_list[3]
			when 3 # установить переменную
				$game_variables[event_list[1]] = event_list[3]
			end
			
			process_value = 4
			
		when 2 # переключатель
			case event_list[2]
			when 1
				$game_switches[event_list[1]] = true
			when 2
				$game_switches[event_list[1]] = false
			when 3
				$game_switches[event_list[1]] = !$game_switches[event_list[1]]
			end
			
			process_value = 3
			
		when 3 # общее событие
			$game_temp.reserve_common_event(event_list[1])
			process_value = 2
		end
		
		case event_list[process_value] # обработка после
			when 1 # удалить полосу
				return dispose_one_energy_bar(find_id_from_index(index))
			when 2 # увеличить полосу
				index[:inverse] == false ? increase_energy_bar_value(index, event_list[process_value + 1]) : decrease_energy_bar_value(index, event_list[process_value + 1])
			when 3 # общее событие
				$game_temp.reserve_common_event(event_list[process_value + 1])
			end
		
		index[:event_ok] = false
	end
	
	def energy_bar_animation_update(mode)
		return if @fix_show_energy_bar_window
		if mode
			@create_energy_bar_window.opacity += 15
			@create_energy_bar_window.contents_opacity += 15
			@create_energy_bar_window.visible = true
		else
			@create_energy_bar_window.opacity -= 10
			@create_energy_bar_window.contents_opacity -= 10
			if @create_energy_bar_window.opacity <= 0
				@create_energy_bar_window.opacity = 0
				@create_energy_bar_window.contents_opacity = 0
				@create_energy_bar_window.visible = false
			end
		end
	end
	
	alias denis_kyznetsov_energy_bar_scn_map_update update
	def update
		
		denis_kyznetsov_energy_bar_scn_map_update
		
		if @create_energy_bar_window != nil # если у нас есть окно на экране
			
			if !Energy_Bar_Settings::ENERGY_BAR_BUTTON.is_a?(Integer) # если кнопка используется
				if Input.trigger?(Energy_Bar_Settings::ENERGY_BAR_BUTTON) # если нажата кнопка
					# явно указываем, что хотим видеть окно на экране (не будет испаряться)
					@fix_show_energy_bar_window = !@create_energy_bar_window.visible
					@create_energy_bar_window.opacity = 255
					@create_energy_bar_window.contents_opacity = 255
					@create_energy_bar_window.visible = !@create_energy_bar_window.visible
				end
			end
			energy_bar_array_update
		end
		
	end
	
	def check_energy_bar_value_range(index)
		index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
		index[:now] = 0 if index[:now] < 0
		index[:now] = index[:max].to_i if index[:now] > index[:max]
	end
	
	def set_energy_bar_value(index, value)
		index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
		index[:now] = value
		check_energy_bar_value_range(index)
	end
	
	def increase_energy_bar_value(index, value)
		index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
		index[:now] += value
		check_energy_bar_value_range(index)
	end
	
	def decrease_energy_bar_value(index, value)
		index = $ENERGY_BAR_ARRAY[index] if index.is_a?(Integer)
		index[:now] -= value
		check_energy_bar_value_range(index)
	end
	
	def update_increase_value_energy_bar(index)
		increase_energy_bar_value(index, index[:restore_speed])
	end
	
	def update_decrease_value_energy_bar(index)
		decrease_energy_bar_value(index, index[:use_speed])
	end
	
	def find_id_from_index(index)
		return if index == nil
		for i in 0..$ENERGY_BAR_ARRAY.size - 1
			return i if index[:text] == $ENERGY_BAR_ARRAY[i][:text] && index[:max].to_i == $ENERGY_BAR_ARRAY[i][:max].to_i && index[:now].to_i == $ENERGY_BAR_ARRAY[i][:now].to_i
		end
		return -1
	end
	
	def dispose_one_energy_bar(index)
		$ENERGY_BAR_ARRAY[index] = nil
		$ENERGY_BAR_ARRAY.compact!
		return dispose_energy_bar_window if $ENERGY_BAR_ARRAY.empty?
		@create_energy_bar_window.change_window_height
	end
	
	def dispose_energy_bar_window
		$ENERGY_BAR_ARRAY.clear
		return if @create_energy_bar_window.nil?
		@create_energy_bar_window.dispose
		@create_energy_bar_window = nil
	end
	
end
class Energy_Bar_Window < Window_Base
	include Energy_Bar_Settings
	
	def initialize
		@optimal_window_height = 72
		@optimal_window_height = 48 if $USE_MINIMAL_ENERGY_BAR_STYLE
		super($ENERGY_BAR_WINDOW_X, $ENERGY_BAR_WINDOW_Y, $ENERGY_BAR_WINDOW_WIDTH, @optimal_window_height)
		change_window_height
	end
	
	def draw_rect
		rect = Rect.new
		rect.x = 0
		rect.y = 0
		rect.width = contents_width
		rect.height = 24
		rect
	end
	
	def change_window_height
		# с одной полосой окно занимает 72 при стандартной отрисовке (24 на отступы + 48 на содержимое)
		self.height = @optimal_window_height + ($ENERGY_BAR_ARRAY.size - 1) * (@optimal_window_height - 2 * standard_padding)
		self.height = Graphics.height if self.height > Graphics.height
		create_contents
	end
	
	def window_setup
		self.x = $ENERGY_BAR_WINDOW_X if self.x != $ENERGY_BAR_WINDOW_X
		self.y = $ENERGY_BAR_WINDOW_Y if self.y != $ENERGY_BAR_WINDOW_Y
		if self.width != $ENERGY_BAR_WINDOW_WIDTH
			self.width = $ENERGY_BAR_WINDOW_WIDTH
			create_contents
		end
	end
	
	def update
		contents.clear
		window_setup
		
		i = 0
		$ENERGY_BAR_ARRAY.each do |index|
			next if index.nil?
			
			rect = draw_rect # получаем rect для текста
			rect.y += i * (@optimal_window_height - 2 * standard_padding) # i-ой полосы
			
			if $USE_MINIMAL_ENERGY_BAR_STYLE # рисуем текст
				draw_text(rect, index[:text])
			else
				draw_text(rect, index[:text], 1)
			end
			
			if $USE_MINIMAL_ENERGY_BAR_STYLE # рисуем полосу
				rect.x = contents_width / 2
				rect.y += 4
				rect.width = index[:now] * (contents_width - rect.x) / index[:max]
			else
				rect.y += rect.height
				rect.width = index[:now] * contents_width / index[:max]
			end
			rect.height = 16
			contents.fill_rect(rect, text_color(index[:color]))
			
			# рисуем значение
			rect.y -= 4
			rect.width = contents_width
			rect.height = 24
			text = $USE_ENERGY_BAR_WINDOW_PERCENT ? (((index[:now].to_f / index[:max] * 100).to_i).to_s + "%") : (index[:now].to_i.to_s + "/" + index[:max].to_i.to_s)
			if $USE_MINIMAL_ENERGY_BAR_STYLE
				rect.x = 0
				draw_text(rect, text, 2)
			else
				draw_text(rect, text, 1)
			end
			i += 1
		end # $ENERGY_BAR_ARRAY.each do |index|
	end
	
end # class Energy_Bar_Window < Window_Base
class Game_Interpreter
	
	def start_new_energy_bar(text, max, use_speed, restore_speed, color, inverse = false, event = -1, button = -1)
		return if !SceneManager.scene.is_a?(Scene_Map)
		SceneManager.scene.start_new_energy_bar(text.to_s, max, use_speed, restore_speed, color, inverse, event, button)
	end
	
	def get_energy_bar_index(text, max)
		return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		index = 0
		$ENERGY_BAR_ARRAY.each do |ind|
			return index if ind[:text] == text && ind[:max].to_i == max
			index += 1
		end
		return -1
	end
	
	def change_energy_bar_parameter(index, type, value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		return if !type.is_a?(Symbol)
		$ENERGY_BAR_ARRAY[index][type] = value
		$ENERGY_BAR_ARRAY[index][:auto] = true if type == :button && !value.is_a?(Symbol)
	end
	
	def change_all_energy_bar_parameter(type, value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			change_energy_bar_parameter(index, type, value)
		end
	end
	
	def use_energy_bar(index)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		$ENERGY_BAR_ARRAY[index][:auto] = true
	end
	
	def use_all_energy_bar
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			use_energy_bar(index)
		end
	end
	
	def dont_use_energy_bar(index)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		$ENERGY_BAR_ARRAY[index][:auto] = false
	end
	
	def dont_use_all_energy_bar
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			dont_use_energy_bar(index)
		end
	end
	
	def change_use_energy_bar(index, flag)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		$ENERGY_BAR_ARRAY[index][:auto] = flag
	end
	
	def change_use_all_energy_bar(flag)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			change_use_energy_bar(index, flag)
		end
	end
	
	def energy_bar_inversed?(index)
		return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		return $ENERGY_BAR_ARRAY[index][:inverse]
	end
	
	def get_energy_bar_parameter(index, type)
		return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		return -1 if !type.is_a?(Symbol)
		return $ENERGY_BAR_ARRAY[index][type]
	end
	
	def set_energy_bar_value(index, value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		return SceneManager.scene.set_energy_bar_value(index, 0) if value < 0
		SceneManager.scene.set_energy_bar_value(index, value)
	end
	
	def set_all_energy_bar_value(value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			set_energy_bar_value(index, flag)
		end
	end
	
	def increase_energy_bar_value(index, value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		SceneManager.scene.increase_energy_bar_value(index, value)
	end
	
	def increase_all_energy_bar_value(value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			increase_energy_bar_value(index, value)
		end
	end
	
	def decrease_energy_bar_value(index, value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		SceneManager.scene.deacrease_energy_bar_value(index, value)
	end
	
	def decrease_all_energy_bar_value(value)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		for index in 0..$ENERGY_BAR_ARRAY.size - 1
			decrease_energy_bae_value(index, value)
		end
	end
	
	def check_energy_bar(index, inverse = false)
		return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		value = $ENERGY_BAR_ARRAY[index][:now].to_i
		type = inverse ? $ENERGY_BAR_ARRAY[index][:max].to_i : 0
		return value == type
	end
	
	def get_energy_bar_value(index)
		return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		return $ENERGY_BAR_ARRAY[index][:now].to_i
	end
	
	def energy_bar_exist?(text, max)
		return -1 if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty?
		return get_energy_bar_index(text, max) != -1 ? true : false
	end
	
	def dispose_one_energy_bar(index)
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil? || $ENERGY_BAR_ARRAY.empty? || $ENERGY_BAR_ARRAY[index].nil?
		SceneManager.scene.dispose_one_energy_bar(index)
	end
	
	def dispose_all_energy_bar
		return if !SceneManager.scene.is_a?(Scene_Map) || SceneManager.scene.create_energy_bar_window.nil?
		SceneManager.scene.dispose_energy_bar_window
	end
	
	def change_energy_bar_message_stop(flag)
		$ENERGY_BAR_MESSAGE_STOP = flag
	end
	
	def toggle_energy_bar_message_stop
		$ENERGY_BAR_MESSAGE_STOP = !$ENERGY_BAR_MESSAGE_STOP
	end
	
	def change_energy_bar_speed(value)
		return $ENERGY_BAR_SPEED = value if value == -1
		$ENERGY_BAR_SPEED = [[2, value].max, 30].min
	end
	
end # class Game_Interpreter
module DataManager
	class << self
		
		alias denis_kyznetsov_energy_bar_dt_mngr_make_save_contents make_save_contents
		def make_save_contents
			contents = denis_kyznetsov_energy_bar_dt_mngr_make_save_contents
			contents[:ENERGY_BAR_ARRAY] = $ENERGY_BAR_ARRAY
			contents[:ENERGY_BAR_WINDOW_X] = $ENERGY_BAR_WINDOW_X
			contents[:ENERGY_BAR_WINDOW_Y] = $ENERGY_BAR_WINDOW_Y
			contents[:ENERGY_BAR_WINDOW_WIDTH] = $ENERGY_BAR_WINDOW_WIDTH
			contents[:ENERGY_BAR_MESSAGE_STOP] = $ENERGY_BAR_MESSAGE_STOP
			contents[:ENERGY_BAR_SPEED] = $ENERGY_BAR_SPEED
			contents[:USE_ENERGY_BAR_WINDOW_PERCENT] = $USE_ENERGY_BAR_WINDOW_PERCENT
			contents[:USE_MINIMAL_ENERGY_BAR_STYLE] = $USE_MINIMAL_ENERGY_BAR_STYLE
			contents
		end
		
		alias denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents extract_save_contents
		def extract_save_contents(contents)
			denis_kyznetsov_energy_bar_dt_mngr_extract_save_contents(contents)
			$ENERGY_BAR_ARRAY = contents[:ENERGY_BAR_ARRAY]
			$ENERGY_BAR_WINDOW_X = contents[:ENERGY_BAR_WINDOW_X]
			$ENERGY_BAR_WINDOW_Y = contents[:ENERGY_BAR_WINDOW_Y]
			$ENERGY_BAR_WINDOW_WIDTH = contents[:ENERGY_BAR_WINDOW_WIDTH]
			$ENERGY_BAR_MESSAGE_STOP = contents[:ENERGY_BAR_MESSAGE_STOP]
			$ENERGY_BAR_SPEED = contents[:ENERGY_BAR_SPEED]
			$USE_ENERGY_BAR_WINDOW_PERCENT = contents[:USE_ENERGY_BAR_WINDOW_PERCENT]
			$USE_MINIMAL_ENERGY_BAR_STYLE = contents[:USE_MINIMAL_ENERGY_BAR_STYLE]
		end
	end
	
end # module DataManager
 
Социальные закладки