unrealtime, bugfixes, recomp

This commit is contained in:
infinitefusion
2021-12-22 21:00:31 -05:00
parent 162dac0e0e
commit cf5a86f0aa
24 changed files with 1226 additions and 2 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -6,7 +6,7 @@
module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '5.0.0'
GAME_VERSION_NUMBER = "5.0.10 - beta"
GAME_VERSION_NUMBER = "5.0.11 - beta"
#
FUSION_ICON_SPRITE_OFFSET = 10

View File

@@ -196,6 +196,7 @@ class Scene_Map
unless $game_system.menu_disabled || $game_player.moving?
$game_temp.menu_calling = true
$game_temp.menu_beep = true
$scene.spriteset.addUserSprite(LocationWindow.new($game_map.name+ "\n"+ pbGetTimeNow.strftime("%I:%M %p")))
end
elsif Input.trigger?(Input::SPECIAL)
unless $game_player.moving?

View File

@@ -734,7 +734,7 @@ module Compiler
end
def main
#return
return
return if !$DEBUG
begin
dataFiles = [

View File

@@ -0,0 +1,919 @@
# # Store save file after load save file
# $storenamefilesave = nil
# # Some method for checking save file
# module FileSave
# # Set name of folder
# #DIR_SAVE_GAME = System.data_directory
# DIR_SAVE_GAME = "Save Game"
# # Set name of file for saving:
# # Ex: Game1,Game2,etc
# FILENAME_SAVE_GAME = "Game"
# # Create dir
# def self.createDir(dir = DIR_SAVE_GAME)
# Dir.mkdir(dir) if !safeExists?(dir)
# end
#
# # Return location
# def self.location(dir = DIR_SAVE_GAME)
# self.createDir
# return "#{dir}"
# end
#
# # Array file
# def self.count(arr = false, dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# self.createDir(dir)
# File.rename("#{dir}/#{file}.#{type}", "#{dir}/#{file}1.#{type}") if File.file?("#{dir}/#{file}.#{type}")
# return arr ? Dir.glob("#{dir}/#{file}*.#{type}") : Dir.glob("#{dir}/#{file}*.#{type}").size
# end
#
# # Rename
# def self.rename(dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# arr = self.count(true)
# return if arr.size <= 0
# name = []
# arr.each { |f| name << (File.basename(f, ".#{type}").gsub(/[^0-9]/, "")) }
# needtorewrite = false
# (0...arr.size).each { |i|
# needtorewrite = true if arr[i] != "#{dir}/#{file}#{name[i]}.#{type}"
# }
# if needtorewrite
# numbername = []
# name.each { |n| numbername << n.to_i }
# (0...numbername.size).each { |i|
# loop do
# break if i == 0
# diff = numbername.index(numbername[i])
# break if diff == i
# numbername[i] += 1
# end
# Dir.mkdir("#{dir}/#{numbername[i]}")
# File.rename("#{arr[i]}", "#{dir}/#{numbername[i]}/#{file}#{numbername[i]}.#{type}")
# }
# (0...name.size).each { |i|
# name2 = "#{dir}/#{numbername[i]}/#{file}#{numbername[i]}.#{type}"
# File.rename(name2, "#{dir}/#{file}#{numbername[i]}.#{type}")
# Dir.delete("#{dir}/#{numbername[i]}")
# }
# end
# arr.size.times { |i|
# num = 0
# namef = sprintf("%d", i + 1)
# loop do
# break if File.file?("#{dir}/#{file}#{namef}.#{type}")
# num += 1
# namef2 = sprintf("%d", i + 1 + num)
# File.rename("#{dir}/#{file}#{namef2}.#{type}", "#{dir}/#{file}#{namef}.#{type}") if File.file?("#{dir}/#{file}#{namef2}.#{type}")
# end
# }
# end
#
# # Save
# def self.name(n = nil, re = true, dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# self.rename if re
# return "#{dir}/#{file}1.rxdata" if n.nil?
# if !n.is_a?(Numeric)
# p "Set number for file save"
# return
# end
# return "#{dir}/#{file}#{n}.rxdata"
# end
#
# # Old file save
# def self.title
# return System.game_title.gsub(/[^\w ]/, '_')
# end
#
# # Version 19
# def self.dirv19(dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# game_title = self.title
# return if !File.directory?(System.data_directory)
# old_file = System.data_directory + '/Game.rxdata'
# return if !File.file?(old_file)
# self.rename
# size = self.count
# File.move(old_file, "#{dir}/#{file}#{size + 1}.#{type}")
# end
#
# # Version 18
# def self.dirv18(dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# game_title = self.title
# home = ENV['HOME'] || ENV['HOMEPATH']
# return if home.nil?
# old_location = File.join(home, 'Saved Games', game_title)
# return if !File.directory?(old_location)
# old_file = File.join(old_location, 'Game.rxdata')
# return if !File.file?(old_file)
# self.rename
# size = self.count
# File.move(old_file, "#{dir}/#{file}#{size + 1}.#{type}")
# end
# end
# #-------------------------#
# # Set for module SaveData #
# #-------------------------#
# module SaveData
# def self.delete_file(file = FILE_PATH)
# File.delete(file)
# File.delete(file + '.bak') if File.file?(file + '.bak')
# end
#
# def self.move_old_windows_save
# FileSave.dirv19
# FileSave.dirv18
# end
#
# def self.changeFILEPATH(new = nil)
# return if new.nil?
# const_set(:FILE_PATH, new)
# end
# end
# #---------------------#
# # Set 'set_up_system' #
# #---------------------#
# module Game
# def self.set_up_system
# SaveData.changeFILEPATH($storenamefilesave.nil? ? FileSave.name : $storenamefilesave)
# SaveData.move_old_windows_save if System.platform[/Windows/]
# save_data = (SaveData.exists?) ? SaveData.read_from_file(SaveData::FILE_PATH) : {}
# if save_data.empty?
# SaveData.initialize_bootup_values
# else
# SaveData.load_bootup_values(save_data)
# end
# # Set resize factor
# pbSetResizeFactor([$PokemonSystem.screensize, 4].min)
# # Set language (and choose language if there is no save file)
# if Settings::LANGUAGES.length >= 2
# $PokemonSystem.language = pbChooseLanguage if save_data.empty?
# pbLoadMessages('Data/' + Settings::LANGUAGES[$PokemonSystem.language][1])
# end
# end
# end
# #--------------------#
# # Set emergency save #
# #--------------------#
# def pbEmergencySave
# oldscene = $scene
# $scene = nil
# pbMessage(_INTL("The script is taking too long. The game will restart."))
# return if !$Trainer
# # It will store the last save file when you dont file save
# count = FileSave.count
# SaveData.changeFILEPATH($storenamefilesave.nil? ? FileSave.name : $storenamefilesave)
# if SaveData.exists?
# File.open(SaveData::FILE_PATH, 'rb') do |r|
# File.open(SaveData::FILE_PATH + '.bak', 'wb') do |w|
# while s = r.read(4096)
# w.write s
# end
# end
# end
# end
# if Game.save
# pbMessage(_INTL("\\se[]The game was saved.\\me[GUI save game] The previous save file has been backed up.\\wtnp[30]"))
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# end
# $scene = oldscene
# end
#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# # Save #
# #------------------------------------------------------------------------------#
# # Custom message
# def pbCustomMessageForSave(message, commands, index, &block)
# return pbMessage(message, commands, index, &block)
# end
#
# # Save screen
# class PokemonSaveScreen
# def pbSaveScreen
# ret = false
# # Check for renaming
# FileSave.rename
# # Count save file
# count = FileSave.count
# # Start
# @scene.pbStartScreen
# msg = _INTL("What do you want to do?")
# cmds = [_INTL("Save"),
# _INTL("Save to new file"),
# _INTL("Overwrite another save"),
# _INTL("Cancel")
# ]
# cmd2 = pbCustomMessageForSave(msg, cmds, 3)
#
# # New save file
# case cmd2
# when 1
# ret = writeToNewSaveFile(count)
# # Overwrite
# when 2
# ret = overwriteSaveFile(count)
# when 0
# ret = overwriteCurrentFile(count)
# end
#
# @scene.pbEndScreen
# return ret
# end
#
# def overwriteCurrentFile(count)
# if !$storenamefilesave.nil? && count > 0
# SaveData.changeFILEPATH($storenamefilesave)
# if Game.save
# pbMessage(_INTL("\\se[]{1} saved the game.\\me[GUI save game]\\wtnp[30]", $Trainer.name))
# ret = true
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# ret = false
# end
#
# SaveData.changeFILEPATH(!$storenamefilesave.nil? ? $storenamefilesave : FileSave.name)
# return ret
# else
# return writeToNewSaveFile(count)
# end
# end
#
# def overwriteSaveFile(count)
# if count <= 0
# pbMessage(_INTL("No save file was found."))
# else
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(count)
# file.movePanel
# file.endScene
# return file.staymenu
# }
# end
# end
#
# def writeToNewSaveFile(count)
# SaveData.changeFILEPATH(FileSave.name(count + 1))
# ret = false
# if Game.save
# pbMessage(_INTL("\\se[]{1} saved the game.\\me[GUI save game]\\wtnp[30]", $Trainer.name))
# ret = true
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# end
# SaveData.changeFILEPATH(!$storenamefilesave.nil? ? $storenamefilesave : FileSave.name)
# return ret
# end
# end
#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# # Load #
# #------------------------------------------------------------------------------#
# class PokemonLoadScreen
# def initialize(scene)
# @scene = scene
# end
#
# def pbStartLoadScreen
# commands = []
# cmd_continue = -1
# cmd_new_game = -1
# cmd_options = -1
# cmd_debug = -1
# cmd_quit = -1
# show_continue = FileSave.count > 0
# commands[cmd_continue = commands.length] = _INTL('Continue') if show_continue
# commands[cmd_new_game = commands.length] = _INTL('New Game')
# commands[cmd_options = commands.length] = _INTL('Options')
# commands[cmd_delete = commands.length] = _INTL('Delete Save') if show_continue
# commands[cmd_debug = commands.length] = _INTL('Debug') if $DEBUG
# commands[cmd_quit = commands.length] = _INTL('Quit Game')
# @scene.pbStartScene(commands, false, nil, 0, 0)
# @scene.pbStartScene2
# loop do
# command = @scene.pbChoose(commands)
# pbPlayDecisionSE if command != cmd_quit
# case command
# when cmd_continue
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(FileSave.count)
# file.movePanel(1)
# @scene.pbEndScene if !file.staymenu
# file.endScene
# return if !file.staymenu
# }
# when cmd_new_game
# @scene.pbEndScene
# Game.start_new
# return
# when cmd_options
# pbFadeOutIn do
# scene = PokemonOption_Scene.new
# screen = PokemonOptionScreen.new(scene)
# screen.pbStartScreen(true)
# end
# when cmd_debug
# pbFadeOutIn { pbDebugMenu(false) }
# when cmd_quit
# pbPlayCloseMenuSE
# @scene.pbEndScene
# $scene = nil
# return
# when cmd_delete
# #pbStartDeleteScreen
# deleteFileMenu(FileSave.count)
# else
# pbPlayBuzzerSE
# end
# end
# end
#
# def deleteFileMenu(count)
# if count <= 0
# pbMessage(_INTL("No save file was found."))
# else
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(count)
# file.movePanel(2)
# file.endScene
# Graphics.frame_reset if file.deletefile
# }
# # Return menu
# return false
# end
# end
#
# def pbStartDeleteScreen
# @scene.pbStartDeleteScene
# @scene.pbStartScene2
# count = FileSave.count
# if count < 0
# pbMessage(_INTL("No save file was found."))
# else
# msg = _INTL("What do you want to do?")
# cmds = [_INTL("Delete All File Save"), _INTL("Delete Only One File Save"), _INTL("Cancel")]
# cmd = pbCustomMessageForSave(msg, cmds, 3)
# case cmd
# when 0
# if pbConfirmMessageSerious(_INTL("Delete all saves?"))
# pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
# if pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
# pbMessage(_INTL("Deleting all data. Don't turn off the power.\\wtnp[0]"))
# haserrorwhendelete = false
# count.times { |i|
# name = FileSave.name(i + 1, false)
# begin
# SaveData.delete_file(name)
# rescue
# haserrorwhendelete = true
# end
# }
# pbMessage(_INTL("You have at least one file that cant delete and have error")) if haserrorwhendelete
# Graphics.frame_reset
# pbMessage(_INTL("The save file was deleted."))
# end
# end
# when 1
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(count)
# file.movePanel(2)
# file.endScene
# Graphics.frame_reset if file.deletefile
# }
# end
# end
# @scene.pbEndScene
# $scene = pbCallTitle
# end
# end
#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# # Scene for save menu, load menu and delete menu #
# #------------------------------------------------------------------------------#
# class ScreenChooseFileSave
# attr_reader :staymenu
# attr_reader :deletefile
#
# def initialize(count)
# @sprites = {}
# @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
# @viewport.z = 99999
# # Set value
# # Check quantity
# @count = count
# if @count <= 0
# pbMessage("No save file was found.")
# return
# end
# # Check still menu
# @staymenu = false
# @deletefile = false
# # Check position
# @position = 0
# # Check position if count > 7
# @choose = 0
# # Set position of panel 'information'
# @posinfor = 0
# # Quantity of panel in information page
# @qinfor = 0
# # Check mystery gift
# @mysgif = false
# end
#
# # Set background (used "loadbg")
# def drawBg
# color = Color.new(248, 248, 248)
# addBackgroundOrColoredPlane(@sprites, "background", "loadbg", color, @viewport)
# end
#
# #-------------------------------------------------------------------------------
# # Set Panel
# #-------------------------------------------------------------------------------
# # Draw panel
# def startPanel
# # Check and rename
# FileSave.rename
# # Start
# drawBg
# # Set bar
# num = (@count > 7) ? 7 : @count
# (0...num).each { |i|
# create_sprite("panel #{i}", "loadPanels", @viewport)
# w = 384; h = 46
# set_src_wh_sprite("panel #{i}", w, h)
# x = 16; y = 444
# set_src_xy_sprite("panel #{i}", x, y)
# x = 24 * 2; y = 16 * 2 + 48 * i
# set_xy_sprite("panel #{i}", x, y)
# }
# # Set choose bar
# create_sprite("choose panel", "loadPanels", @viewport)
# w = 384; h = 46
# set_src_wh_sprite("choose panel", w, h)
# x = 16; y = 444 + 46
# set_src_xy_sprite("choose panel", x, y)
# choosePanel(@choose)
# # Set text
# create_sprite_2("text", @viewport)
# textPanel
# pbFadeInAndShow(@sprites) { update }
# end
#
# def choosePanel(pos = 0)
# x = 24 * 2; y = 16 * 2 + 48 * pos
# set_xy_sprite("choose panel", x, y)
# end
#
# # Draw text panel
# BaseColor = Color.new(252, 252, 252)
# ShadowColor = Color.new(0, 0, 0)
#
# def textPanel(font = nil)
# return if @count <= 0
# bitmap = @sprites["text"].bitmap
# bitmap.clear
# if @count > 0 && @count < 7
# namesave = 0; endnum = @count
# else
# namesave = (@position > @count - 7) ? @count - 7 : @position
# endnum = 7
# end
# textpos = []
# (0...endnum).each { |i|
# string = _INTL("Save File #{namesave + 1 + i}")
# if i + 1 == getCurrentSaveFileNumber()
# string += " (Current)"
# end
# x = 24 * 2 + 36; y = 16 * 2 + 5 + 48 * i
# textpos << [string, x, y, 0, BaseColor, ShadowColor]
# }
# (font.nil?) ? pbSetSystemFont(bitmap) : bitmap.font.name = font
# pbDrawTextPositions(bitmap, textpos)
# end
#
# def getCurrentSaveFileNumber()
# saveFilePath = $storenamefilesave
# return nil if saveFilePath == nil
# begin
# filename = saveFilePath.split(".")[0]
# return filename[-1].to_i
# rescue nil
# end
# end
#
# # Move panel
# # Type: 0: Save; 1: Load; 2: Delete
# def movePanel(type = 0)
# infor = false; draw = true; loadmenu = false
# @type = type
# loop do
# # Panel Page
# if !loadmenu
# if !infor
# if draw;
# startPanel; draw = false
# else
# # Update
# update_ingame
# if checkInput(Input::UP)
# @position -= 1
# @choose -= 1
# if @choose < 0
# if @position < 0
# @choose = (@count < 7) ? @count - 1 : 6
# else
# @choose = 0
# end
# end
# @position = @count - 1 if @position < 0
# # Move choose panel
# choosePanel(@choose)
# # Draw text
# textPanel
# end
# if checkInput(Input::DOWN)
# @position += 1
# @choose += 1 if @position > @count - 7
# (@choose = 0; @position = 0) if @position >= @count
# # Move choose panel
# choosePanel(@choose)
# # Draw text
# textPanel
# end
# if checkInput(Input::USE)
# dispose
# draw = true
# if self.fileLoad.empty?
# @choose = 0; @position = 0
# if FileSave.count == 0
# pbMessage(_INTL('You dont have any save file. Restart game now.'))
# @staymenu = false
# $scene = pbCallTitle if @type == 1
# break
# end
# else
# infor = true
# end
# end
# if checkInput(Input::BACK)
# @staymenu = true if @type == 1
# break
# end
# end
# # Information page
# elsif infor
# if draw;
# startPanelInfor(@type); draw = false
# else
# # Update
# update_ingame
# # Load file
# loadmenu = true if @type == 1
# if checkInput(Input::USE)
# # Save file
# case @type
# when 0
# SaveData.changeFILEPATH(FileSave.name(@position + 1))
# if Game.save
# pbMessage(_INTL("\\se[]{1} saved the game.\\me[GUI save game]\\wtnp[30]", $Trainer.name))
# ret = true
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# ret = false
# end
# SaveData.changeFILEPATH($storenamefilesave.nil? ? FileSave.name : $storenamefilesave)
# break
# # Delete file
# when 2
# if pbConfirmMessageSerious(_INTL("Delete all saved data?"))
# pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
# if pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
# pbMessage(_INTL("Deleting all data. Don't turn off the power.\\wtnp[0]"))
# # Delete
# self.deleteFile
# @deletefile = true
# end
# end
# break
# end
# end
# (dispose; draw = true; infor = false) if checkInput(Input::BACK)
# end
# end
# else
# # Update
# update_ingame
# # Start
# if @qinfor > 0
# if checkInput(Input::UP)
# @posinfor -= 1
# @posinfor = @qinfor if @posinfor < 0
# choosePanelInfor
# end
# if checkInput(Input::DOWN)
# @posinfor += 1
# @posinfor = 0 if @posinfor > @qinfor
# choosePanelInfor
# end
# end
# if checkInput(Input::USE)
# # Set up system again
# $storenamefilesave = FileSave.name(@position + 1)
# Game.set_up_system
# if @posinfor == 0
# Game.load(self.fileLoad)
# @staymenu = false
# break
# # Mystery Gift
# elsif @posinfor == 1 && @mysgif
# pbFadeOutIn {
# pbDownloadMysteryGift(self.fileLoad[:player])
# @posinfor = 0; @qinfor = 0; @mysgif = false
# dispose; draw = true; loadmenu = false; infor = false
# }
# # Language
# elsif Settings::LANGUAGES.length >= 2 && (@posinfor == 2 || (@posinfor == 1 && !@mysgif))
# $PokemonSystem.language = pbChooseLanguage
# pbLoadMessages('Data/' + Settings::LANGUAGES[$PokemonSystem.language][1])
# self.fileLoad[:pokemon_system] = $PokemonSystem
# File.open(FileSave.name(@position + 1), 'wb') { |file| Marshal.dump(self.fileLoad, file) }
# @posinfor = 0; @qinfor = 0; @mysgif = false
# dispose; draw = true; loadmenu = false; infor = false
# end
# end
# if checkInput(Input::BACK)
# @posinfor = 0; @qinfor = 0; @mysgif = false
# dispose; draw = true; loadmenu = false; infor = false
# end
# end
# end
# end
#
# #-------------------------------------------------------------------------------
# # Set information
# #-------------------------------------------------------------------------------
# def startPanelInfor(type)
# # Draw background
# drawBg
# create_sprite("infor panel 0", "loadPanels", @viewport)
# w = 408; h = 222
# set_src_wh_sprite("infor panel 0", w, h)
# x = 0; y = 0
# set_src_xy_sprite("infor panel 0", x, y)
# x = 24 * 2; y = 16 * 2
# set_xy_sprite("infor panel 0", x, y)
# drawInfor(type)
# end
#
# # Color
# TEXTCOLOR = Color.new(232, 232, 232)
# TEXTSHADOWCOLOR = Color.new(136, 136, 136)
# MALETEXTCOLOR = Color.new(56, 160, 248)
# MALETEXTSHADOWCOLOR = Color.new(56, 104, 168)
# FEMALETEXTCOLOR = Color.new(240, 72, 88)
# FEMALETEXTSHADOWCOLOR = Color.new(160, 64, 64)
#
# # Draw information (text)
# def drawInfor(type, font = nil)
# # Set trainer
# trainer = self.fileLoad[:player]
# # Set mystery gift and language
# if type == 1
# mystery = self.fileLoad[:player].mystery_gift_unlocked
# @mysgif = mystery
# @qinfor += 1 if mystery
# @qinfor += 1 if Settings::LANGUAGES.length >= 2
# (0...@qinfor).each { |i|
# create_sprite("panel load #{i}", "loadPanels", @viewport)
# w = 384; h = 46
# set_src_wh_sprite("panel load #{i}", w, h)
# x = 16; y = 444
# set_src_xy_sprite("panel load #{i}", x, y)
# x = 24 * 2 + 8; y = 16 * 2 + 48 * i + 112 * 2
# set_xy_sprite("panel load #{i}", x, y)
# } if @qinfor > 0
# end
# # Move panel (information)
# create_sprite("infor panel 1", "loadPanels", @viewport)
# w = 408; h = 222
# set_src_wh_sprite("infor panel 1", w, h)
# x = 0; y = 222
# set_src_xy_sprite("infor panel 1", x, y)
# x = 24 * 2; y = 16 * 2
# set_xy_sprite("infor panel 1", x, y)
# # Set
# create_sprite_2("text", @viewport)
# framecount = self.fileLoad[:frame_count]
# totalsec = (framecount || 0) / Graphics.frame_rate
# bitmap = @sprites["text"].bitmap
# textpos = []
# # Text of trainer
# x = 24 * 2; y = 16 * 2
# title = (type == 0) ? "Save" : (type == 1) ? "Load" : "Delete"
# textpos << [_INTL("#{title}"), 16 * 2 + x, 5 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [_INTL("Badges:"), 16 * 2 + x, 56 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [trainer.badge_count.to_s, 103 * 2 + x, 56 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [_INTL("Pokédex:"), 16 * 2 + x, 72 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [trainer.pokedex.seen_count.to_s, 103 * 2 + x, 72 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [_INTL("Time:"), 16 * 2 + x, 88 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# hour = totalsec / 60 / 60
# min = totalsec / 60 % 60
# if hour > 0
# textpos << [_INTL("{1}h {2}m", hour, min), 103 * 2 + x, 88 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# else
# textpos << [_INTL("{1}m", min), 103 * 2 + x, 88 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# end
# if trainer.male?
# textpos << [trainer.name, 56 * 2 + x, 32 * 2 + y, 0, MALETEXTCOLOR, MALETEXTSHADOWCOLOR]
# elsif textpos << [trainer.name, 56 * 2 + x, 32 * 2 + y, 0, FEMALETEXTCOLOR, FEMALETEXTSHADOWCOLOR]
# else
# textpos << [trainer.name, 56 * 2 + x, 32 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# end
# mapid = self.fileLoad[:map_factory].map.map_id
# mapname = pbGetMapNameFromId(mapid)
# mapname.gsub!(/\\PN/, trainer.name)
# textpos << [mapname, 193 * 2 + x, 5 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# # Load menu
# if type == 1
# # Mystery gift / Language
# string = []
# string << _INTL("Mystery Gift") if mystery
# string << _INTL("Language") if Settings::LANGUAGES.length >= 2
# if @qinfor > 0
# (0...@qinfor).each { |i|
# str = string[i]
# x1 = x + 36 + 8
# y1 = y + 5 + 112 * 2 + 48 * i
# textpos << [str, x1, y1, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# }
# end
# end
# # Set text
# (font.nil?) ? pbSetSystemFont(bitmap) : bitmap.font.name = font
# pbDrawTextPositions(bitmap, textpos)
#
# # Set trainer (draw)
# if !trainer || !trainer.party
# # Fade
# pbFadeInAndShow(@sprites) { update }
# return
# else
# meta = GameData::Metadata.get_player(trainer.character_ID)
# if meta
# filename = pbGetPlayerCharset(meta, 1, trainer, true)
# @sprites["player"] = TrainerWalkingCharSprite.new(filename, @viewport)
# charwidth = @sprites["player"].bitmap.width
# charheight = @sprites["player"].bitmap.height
# @sprites["player"].x = 56 * 2 - charwidth / 8
# @sprites["player"].y = 56 * 2 - charheight / 8
# @sprites["player"].src_rect = Rect.new(0, 0, charwidth / 4, charheight / 4)
# end
# for i in 0...trainer.party.length
# @sprites["party#{i}"] = PokemonIconSprite.new(trainer.party[i], @viewport)
# @sprites["party#{i}"].setOffset(PictureOrigin::Center)
# @sprites["party#{i}"].x = (167 + 33 * (i % 2)) * 2
# @sprites["party#{i}"].y = (56 + 25 * (i / 2)) * 2
# @sprites["party#{i}"].z = 99999
# end
# # Fade
# pbFadeInAndShow(@sprites) { update }
# end
# end
#
# def choosePanelInfor
# if @posinfor == 0
# w = 408; h = 222
# set_src_wh_sprite("infor panel 1", w, h)
# x = 0; y = 222
# set_src_xy_sprite("infor panel 1", x, y)
# x = 24 * 2; y = 16 * 2
# set_xy_sprite("infor panel 1", x, y)
# else
# w = 384; h = 46
# set_src_wh_sprite("infor panel 1", w, h)
# x = 16; y = 490
# set_src_xy_sprite("infor panel 1", x, y)
# x = 24 * 2 + 8
# y = 16 * 2 + 48 * (@posinfor - 1) + 112 * 2
# set_xy_sprite("infor panel 1", x, y)
# end
# end
#
# #-------------------------------------------------------------------------------
# # Delete
# #-------------------------------------------------------------------------------
# def deleteFile
# savefile = FileSave.name(@position + 1, false)
# begin
# SaveData.delete_file(savefile)
# pbMessage(_INTL('The saved data was deleted.'))
# rescue SystemCallError
# pbMessage(_INTL('All saved data could not be deleted.'))
# end
# end
#
# #-------------------------------------------------------------------------------
# # Load File
# #-------------------------------------------------------------------------------
# def load_save_file(file_path)
# save_data = SaveData.read_from_file(file_path)
# unless SaveData.valid?(save_data)
# if File.file?(file_path + '.bak')
# pbMessage(_INTL('The save file is corrupt. A backup will be loaded.'))
# save_data = load_save_file(file_path + '.bak')
# else
# self.prompt_save_deletion
# return {}
# end
# end
# return save_data
# end
#
# # Called if all save data is invalid.
# # Prompts the player to delete the save files.
# def prompt_save_deletion
# pbMessage(_INTL('Cant load this save file'))
# pbMessage(_INTL('The save file is corrupt, or is incompatible with this game.'))
# exit unless pbConfirmMessageSerious(_INTL('Do you want to delete this save file?'))
# self.deleteFile
# $game_system = Game_System.new
# $PokemonSystem = PokemonSystem.new
# end
#
# def fileLoad
# return load_save_file(FileSave.name(@position + 1))
# end
#
# #-------------------------------------------------------------------------------
# # Set SE for input
# #-------------------------------------------------------------------------------
# def checkInput(name)
# if Input.trigger?(name)
# (name == Input::BACK) ? pbPlayCloseMenuSE : pbPlayDecisionSE
# return true
# end
# return false
# end
#
# #-------------------------------------------------------------------------------
# # Set bitmap
# #-------------------------------------------------------------------------------
# # Image
# def create_sprite(spritename, filename, vp, dir = "Pictures")
# @sprites["#{spritename}"] = Sprite.new(vp)
# @sprites["#{spritename}"].bitmap = Bitmap.new("Graphics/#{dir}/#{filename}")
# end
#
# # Set x, y
# def set_xy_sprite(spritename, x, y)
# @sprites["#{spritename}"].x = x
# @sprites["#{spritename}"].y = y
# end
#
# # Set src
# def set_src_wh_sprite(spritename, w, h)
# @sprites["#{spritename}"].src_rect.width = w
# @sprites["#{spritename}"].src_rect.height = h
# end
#
# def set_src_xy_sprite(spritename, x, y)
# @sprites["#{spritename}"].src_rect.x = x
# @sprites["#{spritename}"].src_rect.y = y
# end
#
# #-------------------------------------------------------------------------------
# # Text
# #-------------------------------------------------------------------------------
# # Draw
# def create_sprite_2(spritename, vp)
# @sprites["#{spritename}"] = Sprite.new(vp)
# @sprites["#{spritename}"].bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @sprites["#{spritename}"].bitmap.clear
# end
#
# #-------------------------------------------------------------------------------
# def dispose
# pbDisposeSpriteHash(@sprites)
# end
#
# def update
# pbUpdateSpriteHash(@sprites)
# end
#
# def update_ingame
# Graphics.update
# Input.update
# pbUpdateSpriteHash(@sprites)
# end
#
# def endScene
# dispose
# @viewport.dispose
# end
# end

View File

@@ -0,0 +1,278 @@
#===============================================================================
# * Unreal Time System - by FL (Credits will be apreciated)
#===============================================================================
#
# This script is for Pokémon Essentials. It makes the time in game uses its
# own clock that only pass when you are in game instead of using real time
# (like Minecraft and Zelda: Ocarina of Time).
#
#== INSTALLATION ===============================================================
#
# To this script works, put it above main OR convert into a plugin.
#
#== HOW TO USE =================================================================
#
# This script automatic works after installed.
#
# If you wish to add/reduce time, there are 3 ways:
#
# 1. EXTRA_SECONDS/EXTRA_DAYS are variables numbers that hold time passage;
# The time in these variable isn't affected by PROPORTION.
# Example: When the player sleeps you wish to the time in game advance
# 8 hours, so put in EXTRA_SECONDS a game variable number and sum
# 28800 (60*60*8) in this variable every time that the players sleeps.
#
# 2. 'UnrealTime.add_seconds(seconds)' and 'UnrealTime.add_days(days)' does the
# same thing, in fact, EXTRA_SECONDS/EXTRA_DAYS call these methods.
#
# 3. 'UnrealTime.advance_to(16,17,18)' advance the time to a fixed time of day,
# 16:17:18 on this example.
#
#== NOTES ======================================================================
#
# If you wish to some parts still use real time like the Trainer Card start time
# and Pokémon Trainer Memo, just change 'pbGetTimeNow' to 'Time.now' in their
# scripts.
#
# This script uses the Ruby Time class. Before Essentials version 19 (who came
# with 64-bit ruby) it can only have 1901-2038 range.
#
# Some time methods:
# 'pbGetTimeNow.year', 'pbGetTimeNow.mon' (the numbers from 1-12),
# 'pbGetTimeNow.day','pbGetTimeNow.hour', 'pbGetTimeNow.min',
# 'pbGetTimeNow.sec', 'pbGetAbbrevMonthName(pbGetTimeNow.mon)',
# 'pbGetTimeNow.strftime("%A")' (displays weekday name),
# 'pbGetTimeNow.strftime("%I:%M %p")' (displays Hours:Minutes pm/am)
#
#===============================================================================
if defined?(PluginManager) && !PluginManager.installed?("Unreal Time System")
PluginManager.register({
:name => "Unreal Time System",
:version => "1.1",
:link => "https://www.pokecommunity.com/showthread.php?t=285831",
:credits => "FL"
})
end
module UnrealTime
# Set false to disable this system (returns Time.now)
ENABLED=true
# Time proportion here.
# So if it is 100, one second in real time will be 100 seconds in game.
# If it is 60, one second in real time will be one minute in game.
PROPORTION=60
# Starting on Essentials v17, the map tone only try to refresh tone each 30
# real time seconds.
# If this variable number isn't -1, the game use this number instead of 30.
# When time is changed with advance_to or add_seconds, the tone refreshes.
TONE_CHECK_INTERVAL = 10.0
# Make this true to time only pass at field (Scene_Map)
# A note to scripters: To make time pass on other scenes, put line
# '$PokemonGlobal.addNewFrameCount' near to line 'Graphics.update'
TIME_STOPS=true
# Make this true to time pass in battle, during turns and command selection.
# This won't affect the Pokémon and Bag submenus.
# Only works if TIME_STOPS=true.
BATTLE_PASS=true
# Make this true to time pass when the Dialog box or the main menu are open.
# This won't affect the submenus like Pokémon and Bag.
# Only works if TIME_STOPS=true.
TALK_PASS=true
# Choose switch number that when true the time won't pass (or -1 to cancel).
# Only works if TIME_STOPS=true.
SWITCH_STOPS=-1
# Choose variable(s) number(s) that can hold time passage (or -1 to cancel).
# Look at description for more details.
EXTRA_SECONDS=79
EXTRA_DAYS=-1
# Initial date. In sequence: Year, month, day, hour and minutes.
# Method UnrealTime.reset resets time back to this time.
def self.initial_date
return Time.local(2000,1,1, 12,0)
end
# Advance to next time. If time already passed, advance
# into the time on the next day.
# Hour is 0..23
def self.advance_to(hour,min=0,sec=0)
if hour < 0 || hour > 23
raise RangeError, "hour is #{hour}, should be 0..23"
end
day_seconds = 60*60*24
seconds_now = pbGetTimeNow.hour*60*60+pbGetTimeNow.min*60+pbGetTimeNow.sec
target_seconds = hour*60*60+min*60+sec
seconds_added = target_seconds-seconds_now
seconds_added += day_seconds if seconds_added<0
$PokemonGlobal.newFrameCount+=seconds_added
PBDayNight.sheduleToneRefresh
end
# Resets time to initial_date.
def self.reset
raise "Method doesn't work when TIME_STOPS is false!" if !TIME_STOPS
$game_variables[EXTRA_SECONDS]=0 if EXTRA_DAYS>0
$game_variables[EXTRA_DAYS]=0 if EXTRA_DAYS>0
$PokemonGlobal.newFrameCount=0
$PokemonGlobal.extraYears=0
PBDayNight.sheduleToneRefresh
end
# Does the same thing as EXTRA_SECONDS variable.
def self.add_seconds(seconds)
raise "Method doesn't work when TIME_STOPS is false!" if !TIME_STOPS
$PokemonGlobal.newFrameCount+=(seconds*Graphics.frame_rate)/PROPORTION.to_f
PBDayNight.sheduleToneRefresh
end
def self.add_days(days)
add_seconds(60*60*24*days)
end
NEED_32_BIT_FIX = [''].pack('p').size <= 4
end
# Essentials V18 and lower compatibility
module Settings
TIME_SHADING = defined?(ENABLESHADING) ? ENABLESHADING : ::TIME_SHADING
end if defined?(TIME_SHADING) || defined?(ENABLESHADING)
module PBDayNight
class << self
if method_defined?(:getTone) && UnrealTime::TONE_CHECK_INTERVAL > 0
def getTone
@cachedTone = Tone.new(0,0,0) if !@cachedTone
return @cachedTone if !Settings::TIME_SHADING
toneNeedUpdate = (!@dayNightToneLastUpdate ||
Graphics.frame_count-@dayNightToneLastUpdate >=
Graphics.frame_rate*UnrealTime::TONE_CHECK_INTERVAL
)
if toneNeedUpdate
getToneInternal
@dayNightToneLastUpdate = Graphics.frame_count
end
return @cachedTone
end
end
# Shedule a tone refresh on the next try (probably next frame)
def sheduleToneRefresh
@dayNightToneLastUpdate = nil
end
end
end
def pbGetTimeNow
return Time.now if !$PokemonGlobal || !UnrealTime::ENABLED
day_seconds = 60*60*24
if UnrealTime::TIME_STOPS
# Sum the extra values to newFrameCount
if UnrealTime::EXTRA_SECONDS>0
UnrealTime.add_seconds(pbGet(UnrealTime::EXTRA_SECONDS))
$game_variables[UnrealTime::EXTRA_SECONDS]=0
end
if UnrealTime::EXTRA_DAYS>0
UnrealTime.add_seconds(day_seconds*pbGet(UnrealTime::EXTRA_DAYS))
$game_variables[UnrealTime::EXTRA_DAYS]=0
end
elsif UnrealTime::EXTRA_SECONDS>0 && UnrealTime::EXTRA_DAYS>0
# Checks to regulate the max/min values at UnrealTime::EXTRA_SECONDS
while pbGet(UnrealTime::EXTRA_SECONDS)>=day_seconds
$game_variables[UnrealTime::EXTRA_SECONDS]-=day_seconds
$game_variables[UnrealTime::EXTRA_DAYS]+=1
end
while pbGet(UnrealTime::EXTRA_SECONDS)<=-day_seconds
$game_variables[UnrealTime::EXTRA_SECONDS]+=day_seconds
$game_variables[UnrealTime::EXTRA_DAYS]-=1
end
end
start_time=UnrealTime.initial_date
if UnrealTime::TIME_STOPS
time_played=$PokemonGlobal.newFrameCount
else
time_played=Graphics.frame_count
end
time_played=(time_played*UnrealTime::PROPORTION)/Graphics.frame_rate
time_jumped=0
if UnrealTime::EXTRA_SECONDS>-1
time_jumped+=pbGet(UnrealTime::EXTRA_SECONDS)
end
if UnrealTime::EXTRA_DAYS>-1
time_jumped+=pbGet(UnrealTime::EXTRA_DAYS)*day_seconds
end
time_ret = 0
# Before Essentials V19, there is a year limit. To prevent crashes due to this
# limit, every time that you reach in year 2036 the system will subtract 6
# years (to works with leap year) from your date and sum in
# $PokemonGlobal.extraYears. You can sum your actual year with this extraYears
# when displaying years.
loop do
time_fix=0
if $PokemonGlobal.extraYears!=0
time_fix = $PokemonGlobal.extraYears*day_seconds*(365*6+1)/6
end
time_ret=start_time+(time_played+time_jumped-time_fix)
break if !UnrealTime::NEED_32_BIT_FIX || time_ret.year<2036
$PokemonGlobal.extraYears+=6
end
return time_ret
end
if UnrealTime::ENABLED
class PokemonGlobalMetadata
attr_accessor :newFrameCount # Became float when using extra values
attr_accessor :extraYears
def addNewFrameCount
return if (UnrealTime::SWITCH_STOPS>0 &&
$game_switches[UnrealTime::SWITCH_STOPS])
self.newFrameCount+=1
end
def newFrameCount
@newFrameCount=0 if !@newFrameCount
return @newFrameCount
end
def extraYears
@extraYears=0 if !@extraYears
return @extraYears
end
end
if UnrealTime::TIME_STOPS
class Scene_Map
alias :updateold :update
def update
$PokemonGlobal.addNewFrameCount
updateold
end
if UnrealTime::TALK_PASS
alias :miniupdateold :miniupdate
def miniupdate
$PokemonGlobal.addNewFrameCount
miniupdateold
end
end
end
if UnrealTime::BATTLE_PASS
class PokeBattle_Scene
alias :pbGraphicsUpdateold :pbGraphicsUpdate
def pbGraphicsUpdate
$PokemonGlobal.addNewFrameCount
pbGraphicsUpdateold
end
end
end
end
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.