diff --git a/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb b/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb index 710fbc8c6..4af12212b 100644 --- a/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb +++ b/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb @@ -1006,6 +1006,7 @@ class Interpreter # * Return to Title Screen #----------------------------------------------------------------------------- def command_354 + resetPlayerPosition $game_temp.to_title = true return false end diff --git a/Data/Scripts/005_Sprites/007_Spriteset_Map.rb b/Data/Scripts/005_Sprites/007_Spriteset_Map.rb index 7adc39a42..9a6d5dfc1 100644 --- a/Data/Scripts/005_Sprites/007_Spriteset_Map.rb +++ b/Data/Scripts/005_Sprites/007_Spriteset_Map.rb @@ -45,6 +45,7 @@ class Spriteset_Map end def initialize(map=nil) + return if $scene.is_a?(Scene_Intro) || $scene.is_a?(Scene_DebugIntro) @map = (map) ? map : $game_map $scene.map_renderer.add_tileset(@map.tileset_name) @map.autotile_names.each { |filename| $scene.map_renderer.add_autotile(filename) } diff --git a/Data/Scripts/050_AddOns/Footprints.rb b/Data/Scripts/050_AddOns/Footprints.rb index 986d975d3..a3f551d95 100644 --- a/Data/Scripts/050_AddOns/Footprints.rb +++ b/Data/Scripts/050_AddOns/Footprints.rb @@ -1,225 +1,245 @@ -#=============================================================================== -# Klein Footprints / WolfPP for Pokémon Essentials -# Give credits if you're using this! -# http://kleinstudio.deviantart.com +# #=============================================================================== +# # Klein Footprints / WolfPP for Pokémon Essentials +# # Give credits if you're using this! +# # http://kleinstudio.deviantart.com +# # +# # bo4p5687 update (v.19) +# #=============================================================================== # -# bo4p5687 update (v.19) -#=============================================================================== - -# Fix event comment -def pbEventCommentInput(*args) - parameters = [] - list = *args[0].list # Event or event page - elements = *args[1] # Number of elements - trigger = *args[2] # Trigger - return nil if list == nil - return nil unless list.is_a?(Array) - for item in list - next unless item.code == 108 || item.code == 408 - if item.parameters[0] == trigger[0] - start = list.index(item) + 1 - finish = start + elements[0] - for id in start...finish - next if !list[id] - parameters.push(list[id].parameters[0]) - end - return parameters - end - end - return nil -end - -module FootprintVariables - # If you set pokemon here, they doesn't have footprints - FOLLOWING_DONT_WALK = [ - # Example: - # 12,15,17 - ] - - # Set here the terrain tag for footprints, 3 is sand - TERRAIN_FOOT = 3 - - # Initial opacity for footprints - FOOT_OPACITY = 62 - - # Delay velocity - FOOT_DELAY = 1.1 - - def self.get_new_id - newId = 1 - while !$game_map.events[newId].nil? do - break if $game_map.events[newId].erased - newId += 1 - end - return newId - end - - def self.show(event, position) - if event != $game_player - return if event.character_name == "" || event.character_name == "nil" || event.name.include?("/nofoot/") - return if pbEventCommentInput(event, 0, "NoFoot") - if $Trainer.party.length > 0 - return if (!($game_map.events[event] && $game_map.events[event].name == "Dependent") && - (FOLLOWING_DONT_WALK.include?($Trainer.party[0].species) || $PokemonGlobal.bicycle)) - end - end - character_sprites = $scene.spriteset.character_sprites - viewport = $scene.spriteset.viewport1 - footsprites = $scene.spriteset.footsprites - nid = self.get_new_id - rpgEvent = RPG::Event.new(position[0], position[1]) - rpgEvent.id = nid - fev = Game_Event.new($game_map.map_id, rpgEvent, $game_map) - eventsprite = Sprite_Character.new(viewport, fev) - character_sprites.push(eventsprite) - footsprites.push(Footsprite.new(eventsprite, fev, viewport, $game_map, position[2], nid, character_sprites, (event==$game_player))) - end - -end - -class Game_Event < Game_Character - attr_reader :erased -end - -class Sprite_Character - alias old_initialize_foot initialize - def initialize(viewport, character=nil) - old_initialize_foot(viewport, character) - @disposed = false - end - - alias old_update_foot update - def update - return if @disposed - old_update_foot - end - - alias old_dispose_foot dispose - def dispose - old_dispose_foot - @disposed = true - end -end - -class Spriteset_Map - attr_accessor :character_sprites - attr_accessor :footsprites - - alias old_initialize initialize - def initialize(map=nil) - old_initialize(map) - @footsprites = [] - end - - def viewport1 - return @@viewport1 - end - - def putFootprint(event, pos) - return FootprintVariables.show(event, pos) - end - - alias old_dispose dispose - def dispose - old_dispose - @footsprites.each { |sprite| sprite.dispose } if !@footsprites.nil? - @footsprites.clear - end - - alias old_update update - def update - old_update - return if @footsprites.nil? - @footsprites.each { |sprite| sprite.update } - end -end - -class Scene_Map - def spriteset? - return !@spritesets.nil? - end -end - -class Game_Character - - def get_last_pos - case direction - when 2 then return [@x, @y-1, direction] # Move down - when 4 then return [@x+1, @y, direction] # Move left - when 6 then return [@x-1, @y, direction] # Move right - when 8 then return [@x, @y+1, direction] # Move up - end - return false - end - - def foot_prints? - return $game_map.terrain_tag(get_last_pos[0], get_last_pos[1]) == FootprintVariables::TERRAIN_FOOT && $scene.is_a?(Scene_Map) && $scene.spriteset? - end - - alias leave_tile_footprints triggerLeaveTile - def triggerLeaveTile - leave_tile_footprints - $scene.spriteset.putFootprint(self, get_last_pos) if foot_prints? - end - -end - -class Footsprite - def initialize(sprite,event,viewport,map,direction,nid,chardata,player) - @rsprite = sprite - # Sprite - @sprite = Sprite.new(viewport) - file = player && $PokemonGlobal.bicycle ? "footsetbike.png" : "footset.png" - @sprite.bitmap = RPG::Cache.load_bitmap("Graphics/Pictures/", file) - # Set position - @realwidth = @sprite.bitmap.width/4 - @sprite.src_rect.width = @realwidth - @opacity = FootprintVariables::FOOT_OPACITY - setFootset(direction) - # Values - @map = map - @event = event - @disposed = false - @eventid = nid - @viewport = viewport - @chardata = chardata - update - end - - def setFootset(direction) - @sprite.src_rect.x = - case direction - when 2 then 0 # Move down - when 4 then @realwidth * 3 # Move left - when 6 then @realwidth * 2 # Move right - when 8 then @realwidth # Move up - end - @sprite.opacity = @opacity - end - - def dispose - return if @disposed - @disposed = true - @event.erase - (0...@chardata.length).each { |i| @chardata.delete_at(i) if @chardata[i] == @rsprite } - @rsprite.dispose - @sprite.dispose - @sprite = nil - end - - def update - return if @disposed - x = @rsprite.x - @rsprite.ox - y = @rsprite.y - @rsprite.oy - width = @rsprite.src_rect.width - height = @rsprite.src_rect.height - @sprite.x = x + width / 2 - @sprite.y = y + height - @sprite.ox = @realwidth / 2 - @sprite.oy = @sprite.bitmap.height - @sprite.z = @rsprite.z - 2 - @opacity -= FootprintVariables::FOOT_DELAY - @sprite.opacity = @opacity - dispose if @sprite.opacity <= 0 - end -end \ No newline at end of file +# # Fix event comment +# def pbEventCommentInput(*args) +# parameters = [] +# list = *args[0].list # Event or event page +# elements = *args[1] # Number of elements +# trigger = *args[2] # Trigger +# return nil if list == nil +# return nil unless list.is_a?(Array) +# for item in list +# next unless item.code == 108 || item.code == 408 +# if item.parameters[0] == trigger[0] +# start = list.index(item) + 1 +# finish = start + elements[0] +# for id in start...finish +# next if !list[id] +# parameters.push(list[id].parameters[0]) +# end +# return parameters +# end +# end +# return nil +# end +# +# module FootprintVariables +# # If you set pokemon here, they doesn't have footprints +# FOLLOWING_DONT_WALK = [ +# # Example: +# # 12,15,17 +# ] +# +# # Set here the terrain tag for footprints, 3 is sand +# TERRAIN_FOOT = 3 +# +# # Initial opacity for footprints +# FOOT_OPACITY = 62 +# +# # Delay velocity +# FOOT_DELAY = 1.1 +# +# def self.get_new_id +# newId = 1 +# while !$game_map.events[newId].nil? do +# break if $game_map.events[newId].erased +# newId += 1 +# end +# return newId +# end +# +# def self.show(event, position) +# if event != $game_player +# return if event.character_name == "" || event.character_name == "nil" || event.name.include?("/nofoot/") +# return if pbEventCommentInput(event, 0, "NoFoot") +# if $Trainer.party.length > 0 +# return if (!($game_map.events[event] && $game_map.events[event].name == "Dependent") && +# (FOLLOWING_DONT_WALK.include?($Trainer.party[0].species) || $PokemonGlobal.bicycle)) +# end +# end +# character_sprites = $scene.spriteset.character_sprites +# viewport = $scene.spriteset.viewport1 +# footsprites = $scene.spriteset.footsprites +# nid = self.get_new_id +# rpgEvent = RPG::Event.new(position[0], position[1]) +# rpgEvent.id = nid +# fev = Game_Event.new($game_map.map_id, rpgEvent, $game_map) +# eventsprite = Sprite_Character.new(viewport, fev) +# character_sprites.push(eventsprite) +# footsprites.push(Footsprite.new(eventsprite, fev, viewport, $game_map, position[2], nid, character_sprites, (event == $game_player))) +# end +# +# end +# +# class Game_Event < Game_Character +# attr_reader :erased +# end +# +# class Sprite_Character +# alias old_initialize_foot initialize +# +# def initialize(viewport, character = nil) +# old_initialize_foot(viewport, character) +# @disposed = false +# end +# +# alias old_update_foot update +# +# def update +# return if @disposed +# old_update_foot +# end +# +# alias old_dispose_foot dispose +# +# def dispose +# old_dispose_foot +# @disposed = true +# end +# end +# +# class Spriteset_Map +# attr_accessor :character_sprites +# attr_accessor :footsprites +# +# alias old_initialize initialize +# +# def initialize(map = nil) +# begin +# old_initialize(map) if map != nil +# @footsprites = [] +# rescue +# return +# end +# end +# +# def viewport1 +# return @@viewport1 +# end +# +# def putFootprint(event, pos) +# return FootprintVariables.show(event, pos) +# end +# +# alias old_dispose dispose +# +# def dispose +# old_dispose +# @footsprites.each { |sprite| sprite.dispose } if !@footsprites.nil? +# @footsprites.clear +# end +# +# alias old_update update +# +# def update +# old_update +# return if @footsprites.nil? +# @footsprites.each { |sprite| sprite.update } +# end +# end +# +# class Scene_Map +# def spriteset? +# return !@spritesets.nil? +# end +# end +# +# class Game_Character +# +# def get_last_pos +# case direction +# when 2 then +# return [@x, @y - 1, direction] # Move down +# when 4 then +# return [@x + 1, @y, direction] # Move left +# when 6 then +# return [@x - 1, @y, direction] # Move right +# when 8 then +# return [@x, @y + 1, direction] # Move up +# end +# return false +# end +# +# def foot_prints? +# return $game_map.terrain_tag(get_last_pos[0], get_last_pos[1]) == FootprintVariables::TERRAIN_FOOT && $scene.is_a?(Scene_Map) && $scene.spriteset? +# end +# +# alias leave_tile_footprints triggerLeaveTile +# +# def triggerLeaveTile +# leave_tile_footprints +# $scene.spriteset.putFootprint(self, get_last_pos) if foot_prints? +# end +# +# end +# +# class Footsprite +# def initialize(sprite, event, viewport, map, direction, nid, chardata, player) +# return if $scene.is_a?(PokemonLoad_Scene) || $scene.is_a?(PokemonLoadScreen) +# @rsprite = sprite +# # Sprite +# @sprite = Sprite.new(viewport) +# file = player && $PokemonGlobal.bicycle ? "footsetbike.png" : "footset.png" +# @sprite.bitmap = RPG::Cache.load_bitmap("Graphics/Pictures/", file) +# # Set position +# @realwidth = @sprite.bitmap.width / 4 +# @sprite.src_rect.width = @realwidth +# @opacity = FootprintVariables::FOOT_OPACITY +# setFootset(direction) +# # Values +# @map = map +# @event = event +# @disposed = false +# @eventid = nid +# @viewport = viewport +# @chardata = chardata +# update +# end +# +# def setFootset(direction) +# @sprite.src_rect.x = +# case direction +# when 2 then +# 0 # Move down +# when 4 then +# @realwidth * 3 # Move left +# when 6 then +# @realwidth * 2 # Move right +# when 8 then +# @realwidth # Move up +# end +# @sprite.opacity = @opacity +# end +# +# def dispose +# return if @disposed +# @disposed = true +# @event.erase +# (0...@chardata.length).each { |i| @chardata.delete_at(i) if @chardata[i] == @rsprite } +# @rsprite.dispose +# @sprite.dispose +# @sprite = nil +# end +# +# def update +# return if @disposed +# x = @rsprite.x - @rsprite.ox +# y = @rsprite.y - @rsprite.oy +# width = @rsprite.src_rect.width +# height = @rsprite.src_rect.height +# @sprite.x = x + width / 2 +# @sprite.y = y + height +# @sprite.ox = @realwidth / 2 +# @sprite.oy = @sprite.bitmap.height +# @sprite.z = @rsprite.z - 2 +# @opacity -= FootprintVariables::FOOT_DELAY +# @sprite.opacity = @opacity +# dispose if @sprite.opacity <= 0 +# end +# end \ No newline at end of file diff --git a/Data/Scripts/050_AddOns/UnrealTime.rb b/Data/Scripts/050_AddOns/UnrealTime.rb index 29b445933..3c09b73fb 100644 --- a/Data/Scripts/050_AddOns/UnrealTime.rb +++ b/Data/Scripts/050_AddOns/UnrealTime.rb @@ -1,278 +1,278 @@ -# #=============================================================================== -# # * Unreal Time System - by FL (Credits will be apreciated) -# #=============================================================================== +# # #=============================================================================== +# # # * 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) +# # # +# # #=============================================================================== # # -# # 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). +# # 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 # # -# #== 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) -# # -# #=============================================================================== +# module UnrealTime +# # Set false to disable this system (returns Time.now) +# ENABLED=true # -# 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" -# }) +# # 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 # -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 \ No newline at end of file +# # 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 \ No newline at end of file diff --git a/Data/Scripts/999_Main/999_Main.rb b/Data/Scripts/999_Main/999_Main.rb index 257b0cbf1..fe9354185 100644 --- a/Data/Scripts/999_Main/999_Main.rb +++ b/Data/Scripts/999_Main/999_Main.rb @@ -1,4 +1,5 @@ class Scene_DebugIntro + attr_accessor :map_renderer def main Graphics.transition(0) sscene = PokemonLoad_Scene.new @@ -8,8 +9,41 @@ class Scene_DebugIntro end end +def resetPlayerPosition + save_data = load_save_file(SaveData::FILE_PATH) + map = save_data[:map_factory].map.map_id + x = save_data[:game_player].x + y = save_data[:game_player].y + dir = save_data[:game_player].direction + $MapFactory.setup(map) + $game_player.moveto(x,y) + $game_player.direction = dir +end + + +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 + +def returnToTitle() + resetPlayerPosition + pbMapInterpreter.command_end + $game_temp.to_title = true +end + def pbCallTitle - return Scene_DebugIntro.new if $DEBUG + $game_temp.to_title = false + #return Scene_DebugIntro.new if $DEBUG return Scene_Intro.new end