From 1e17cbe453ab804e93b2998a77f85e0683d2e94b Mon Sep 17 00:00:00 2001 From: infinitefusion Date: Thu, 21 Jul 2022 19:57:56 -0400 Subject: [PATCH] =?UTF-8?q?Revert=20"fixes=20m=C3=A9lang=C3=A9s..."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit cd16986e3043d8678259c442ba8ee2e9b8467f2b. --- .../004_Interpreter_Commands.rb | 1 - Data/Scripts/005_Sprites/007_Spriteset_Map.rb | 1 - Data/Scripts/050_AddOns/Footprints.rb | 468 +++++++-------- Data/Scripts/050_AddOns/UnrealTime.rb | 546 +++++++++--------- Data/Scripts/999_Main/999_Main.rb | 36 +- 5 files changed, 498 insertions(+), 554 deletions(-) diff --git a/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb b/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb index 4af12212b..710fbc8c6 100644 --- a/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb +++ b/Data/Scripts/003_Game processing/004_Interpreter_Commands.rb @@ -1006,7 +1006,6 @@ 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 9a6d5dfc1..7adc39a42 100644 --- a/Data/Scripts/005_Sprites/007_Spriteset_Map.rb +++ b/Data/Scripts/005_Sprites/007_Spriteset_Map.rb @@ -45,7 +45,6 @@ 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 a3f551d95..986d975d3 100644 --- a/Data/Scripts/050_AddOns/Footprints.rb +++ b/Data/Scripts/050_AddOns/Footprints.rb @@ -1,245 +1,225 @@ -# #=============================================================================== -# # Klein Footprints / WolfPP for Pokémon Essentials -# # Give credits if you're using this! -# # http://kleinstudio.deviantart.com -# # -# # bo4p5687 update (v.19) -# #=============================================================================== +#=============================================================================== +# Klein Footprints / WolfPP for Pokémon Essentials +# Give credits if you're using this! +# http://kleinstudio.deviantart.com # -# # 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 +# 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 diff --git a/Data/Scripts/050_AddOns/UnrealTime.rb b/Data/Scripts/050_AddOns/UnrealTime.rb index 3c09b73fb..29b445933 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) -# # #=============================================================================== -# # # -# # # 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) -# # # -# # #=============================================================================== +# #=============================================================================== +# # * Unreal Time System - by FL (Credits will be apreciated) +# #=============================================================================== # # -# # 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 +# # 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). # # -# module UnrealTime -# # Set false to disable this system (returns Time.now) -# ENABLED=true +# #== 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) +# # +# #=============================================================================== # -# # 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 +# 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 # -# # 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 +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 diff --git a/Data/Scripts/999_Main/999_Main.rb b/Data/Scripts/999_Main/999_Main.rb index fe9354185..257b0cbf1 100644 --- a/Data/Scripts/999_Main/999_Main.rb +++ b/Data/Scripts/999_Main/999_Main.rb @@ -1,5 +1,4 @@ class Scene_DebugIntro - attr_accessor :map_renderer def main Graphics.transition(0) sscene = PokemonLoad_Scene.new @@ -9,41 +8,8 @@ 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 - $game_temp.to_title = false - #return Scene_DebugIntro.new if $DEBUG + return Scene_DebugIntro.new if $DEBUG return Scene_Intro.new end