fix issue with map renderer after battles ( commit 2c65a9de7d )

This commit is contained in:
infinitefusion
2022-06-03 15:38:38 -04:00
parent cc200ac0ed
commit 6ecdd9575f
10 changed files with 503 additions and 509 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -330,7 +330,7 @@ module Settings
POKE_RADAR_ENCOUNTERS = [
[78, 30, :FLETCHLING,2,5], #Rt. 1
[86, 30, :FLETCHLING,2,5], #Rt. 2
[90, 30, :FLETCHLING,2,5], #Rt. 2
[90, 30, :FLETCHLING,2,5], #Rt. 2
[491, 30, :SHROOMISH,2,5], #Viridian Forest
[490, 30, :BUDEW,4,9], #Rt. 3
[106, 30, :NINCADA,8,10], #Rt. 4
@@ -359,25 +359,25 @@ module Settings
[171, 30, :BIDOOF,2,5], #Rt. 22
[143, 30, :RIOLU,25,25], #Rt. 23
[8, 30, :BUNEARY,12,13], #Rt. 24
[145, 30, :ABSOL,30,35], #Rt. 26
[147, 30, :ABSOL,30,35], #Rt. 27
[145, 30, :ABSOL,30,35], #Rt. 26
[147, 30, :ABSOL,30,35], #Rt. 27
[311, 30, :BIDOOF,5,5], #Rt. 29
[284, 30, :LUXIO,40,45], #Rt. 33
[288, 30, :VIGOROTH,40,45], #Rt. 32
[342, 30, :GOLETT,40,45], #Ruins of Alph
[261, 30, :BELLOSSOM,45,50], #Rt. 31
[262, 30, :BIBAREL,45,50], #Rt. 30
[284, 30, :LUXIO,40,45], #Rt. 33
[288, 30, :VIGOROTH,40,45], #Rt. 32
[342, 30, :GOLETT,40,45], #Ruins of Alph
[261, 30, :BELLOSSOM,45,50], #Rt. 31
[262, 30, :BIBAREL,45,50], #Rt. 30
[265, 30, :KIRLIA,25,30], #Rt. 34
[267, 30, :SUDOWOODO,25,30], #Rt. 36
[267, 30, :SUDOWOODO,25,30], #Rt. 36
[300, 30, :ROSELIA,30,30], #National Park
[300, 30, :BRELOOM,30,30], #Ilex Forest
[670, 30, :WEAVILE,50,50], #Ice mountains
[528, 30, :PYUKUMUKU,20,20], #Treasure Beach
[690, 30, :OCTILLERY,32,45], #Deep Ocean
[561, 30, :MAGMAR,32,45], #Mt. Ember
[562, 30, :NINJASK,45,50], #Boon Island
[603, 30, :KECLEON,45,50], #Chrono Island
[654, 30, :WHIMSICOTT,32,45] #Brine Road
[562, 30, :NINJASK,45,50], #Boon Island
[603, 30, :KECLEON,45,50], #Chrono Island
[654, 30, :WHIMSICOTT,32,45] #Brine Road
]
#=============================================================================

View File

@@ -2,18 +2,12 @@
# Battle intro animation
#===============================================================================
def pbSceneStandby
$scene.disposeSpritesets if $scene && $scene.is_a?(Scene_Map)
if RPG::Cache.need_clearing
RPG::Cache.clear
end
Graphics.frame_reset
yield
$scene.createSpritesets if $scene && $scene.is_a?(Scene_Map)
end
def pbBattleAnimation(bgm=nil,battletype=0,foe=nil)
$game_temp.in_battle = true
viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
viewport = Viewport.new(0,0,Graphicsc.width,Graphics.height)
viewport.z = 99999
# Set up audio
playingBGS = nil

View File

@@ -572,7 +572,7 @@ def pbLoadRpgxpScene(scene)
oldscene = $scene
$scene = scene
Graphics.freeze
oldscene.disposeSpritesets
#oldscene.disposeSpritesets
visibleObjects = pbHideVisibleObjects
Graphics.transition(20)
Graphics.freeze
@@ -582,7 +582,7 @@ def pbLoadRpgxpScene(scene)
Graphics.transition(20)
Graphics.freeze
$scene = oldscene
$scene.createSpritesets
#$scene.createSpritesets
pbShowObjects(visibleObjects)
Graphics.transition(20)
end

View File

@@ -1,225 +1,225 @@
#===============================================================================
# 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
# # 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

View File

@@ -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 ===============================================================
# module UnrealTime
# # Set false to disable this system (returns Time.now)
# ENABLED=true
#
# To this script works, put it above main OR convert into a plugin.
# # 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
#
#== HOW TO USE =================================================================
# # 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
#
# This script automatic works after installed.
# # 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
#
# If you wish to add/reduce time, there are 3 ways:
# # 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
#
# 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.
# # 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
#
# 2. 'UnrealTime.add_seconds(seconds)' and 'UnrealTime.add_days(days)' does the
# same thing, in fact, EXTRA_SECONDS/EXTRA_DAYS call these methods.
# # Choose switch number that when true the time won't pass (or -1 to cancel).
# # Only works if TIME_STOPS=true.
# SWITCH_STOPS=-1
#
# 3. 'UnrealTime.advance_to(16,17,18)' advance the time to a fixed time of day,
# 16:17:18 on this example.
# # 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
#
#== NOTES ======================================================================
# # 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
#
# 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.
# # 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
#
# This script uses the Ruby Time class. Before Essentials version 19 (who came
# with 64-bit ruby) it can only have 1901-2038 range.
# # 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
#
# 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)
# # 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
#
#===============================================================================
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
# 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.