fc200281(Implements Stance Change ability)

2c73bbf9(Fix for tiles being invisible after a map transfer if they were on screen before it)
dc01031a(prevent unknown_items from being obtained in randomizer)
ee906fb3(previous commit also included new attack animations)
4dba7c02(Fixes unreal time and footprint scripts being accidentally disabled)
This commit is contained in:
infinitefusion
2022-06-05 15:36:21 -04:00
parent 64bcefa3f7
commit dd68c56c79
25 changed files with 499 additions and 460 deletions

View File

@@ -113,7 +113,11 @@ with their respective authors' consent
UnworthyPie (Bruno battle sprite, Lance backsprite)
Triple Fusion sprites
Sinnoh legendaries: Blackboot
Tom spiste gr<67>nt
Scrapped Bones
Blackboot
Kiwi
Solo Queue
### Tileset graphics ###
Jorginho (OutsideEmerald)
ThatsSoWitty (Cave) http://thatssowitty.deviantart.com/art/The-Public-Pokemon-Tileset-281342410
@@ -153,6 +157,13 @@ with their respective authors' consent
### Other graphics
Region map: Pokemon-Diamond (http://www.deviantart.com/art/Kanto-BW-styled-map-275298527)
Move animations:
Augmented Reborn Animations Project
Project lead by StCooler.
Contributors: StCooler, DarryBD99, WolfPP, ardicoozer, riddlemeree.
Thanks to the Reborn team for letting people use their resources. You are awesome.
Thanks to BellBlitzKing for his Pokemon Sound Effects Pack: Gen 1 to Gen 7 - All Attacks SFX.
Dig: WolfPP (Pokecommunity)
Bone Club, Bonemerang, Bone Rush: rekman (Pokecommunity)
###########################################################

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -6,13 +6,14 @@
module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '5.0.0'
GAME_VERSION_NUMBER = "5.0.24.1 - beta"
GAME_VERSION_NUMBER = "5.0.25.1 - beta"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18
POKERADAR_HIDDEN_ABILITY_POKE_CHANCE = 32
POKERADAR_BATTERY_STEPS = 0
#
FUSION_ICON_SPRITE_OFFSET = 10
@@ -374,7 +375,7 @@ module Settings
[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
[561, 30, :FLETCHINDER,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

View File

@@ -22,7 +22,7 @@ class Scene_Map
@spritesets[map.map_id] = Spriteset_Map.new(map)
end
$MapFactory.setSceneStarted(self)
updateSpritesets
updateSpritesets(true)
end
def createSingleSpriteset(map)
@@ -30,7 +30,7 @@ class Scene_Map
@spritesets[map] = Spriteset_Map.new($MapFactory.maps[map])
$scene.spriteset.restoreAnimations(temp)
$MapFactory.setSceneStarted(self)
updateSpritesets
updateSpritesets(true)
end
def disposeSpritesets
@@ -145,7 +145,7 @@ class Scene_Map
$MapFactory.updateMaps(self)
end
def updateSpritesets
def updateSpritesets(refresh = false)
@spritesets = {} if !@spritesets
keys = @spritesets.keys.clone
for i in keys
@@ -162,6 +162,7 @@ class Scene_Map
@spritesets[map.map_id] = Spriteset_Map.new(map) if !@spritesets[map.map_id]
end
pbDayNightTint(@map_renderer)
@map_renderer.refresh if refresh
@map_renderer.update
Events.onMapUpdate.trigger(self)
end

View File

@@ -271,6 +271,7 @@ class TilemapRenderer
@ox = 0
@oy = 0
@visible = true
@need_refresh = true
@disposed = false
end
@@ -312,7 +313,9 @@ class TilemapRenderer
#=============================================================================
def refresh; end
def refresh
@need_refresh = true
end
def refresh_tile_bitmap(tile, map, tile_id)
if tile_id < TILES_PER_AUTOTILE
@@ -484,7 +487,7 @@ class TilemapRenderer
# Recalculate autotile frames
@tilesets.update
@autotiles.update
do_full_refresh = false
do_full_refresh = @need_refresh
if @viewport.ox != @old_viewport_ox || @viewport.oy != @old_viewport_oy
@old_viewport_ox = @viewport.ox
@old_viewport_oy = @viewport.oy
@@ -546,6 +549,7 @@ class TilemapRenderer
end
end
end
@need_refresh = false
@autotiles.changed = false
end
end

View File

@@ -218,11 +218,13 @@ class PokeBattle_Battler
end
end
# Stance Change
if isSpecies?(:AEGISLASH) && self.ability == :STANCECHANGE
if self.ability == :STANCECHANGE
if move.damagingMove?
pbChangeForm(1,_INTL("{1} changed to Blade Forme!",pbThis))
user = pbFindUser(choice,move)
stanceChangeEffect(user,true)
elsif move.id == :KINGSSHIELD
pbChangeForm(0,_INTL("{1} changed to Shield Forme!",pbThis))
user = pbFindUser(choice,move)
stanceChangeEffect(user,false)
end
end
# Calculate the move's type during this usage
@@ -570,6 +572,20 @@ class PokeBattle_Battler
end
end
def stanceChangeEffect(user,attacking=false)
inSwordForm = user.effects[PBEffects::PowerTrick]
if !inSwordForm && attacking
user.effects[PBEffects::PowerTrick] = true
user.attack,user.defense = user.defense,user.attack
@battle.pbDisplay(_INTL("{1} changed to Sword Mode!",pbThis))
elsif inSwordForm && !attacking
user.effects[PBEffects::PowerTrick] = false
user.attack,user.defense = user.defense,user.attack
@battle.pbDisplay(_INTL("{1} changed to Shield Mode!",pbThis))
end
end
#=============================================================================
# Attack a single target
#=============================================================================

View File

@@ -2,7 +2,11 @@
# Battle intro animation
#===============================================================================
def pbSceneStandby
$scene.disposeSpritesets if $scene.is_a?(Scene_Map)
RPG::Cache.clear
Graphics.frame_reset
yield
$scene.createSpritesets if $scene.is_a?(Scene_Map)
end
def pbBattleAnimation(bgm=nil,battletype=0,foe=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

@@ -20,6 +20,8 @@ HELD_ITEMS = [:AIRBALLOON, :BRIGHTPOWDER, :EVIOLITE, :FLOATSTONE, :DESTINYKNOT,
:PETAYABERRY, :APICOTBERRY, :LANSATBERRY, :STARFBERRY, :ENIGMABERRY, :MICLEBERRY, :CUSTAPBERRY,
:JABOCABERRY, :ROWAPBERRY, :FAIRYGEM]
REMOVED_ITEMS=[:COVERFOSSIL,:PLUMEFOSSIL,:DAMAGEUP,:ACCURACYUP,:ANCIENTSTONE,:ODDKEYSTONE_FULL]
def pbGetRandomItem(item_id)
return nil if item_id == nil
item = GameData::Item.get(item_id)
@@ -41,7 +43,7 @@ def pbGetRandomItem(item_id)
items_list = GameData::Item.list_all
newItem_id = items_list.keys.sample
newItem = GameData::Item.get(newItem_id)
while (newItem.is_machine? || newItem.is_key_item?)
while (newItem.is_machine? || newItem.is_key_item? || REMOVED_ITEMS.include?(item))
newItem_id = items_list.keys.sample
newItem = GameData::Item.get(newItem_id)
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
# #
# # 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)
# 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
# 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

View File

@@ -55,224 +55,224 @@
# })
# 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
module UnrealTime
# Set false to disable this system (returns Time.now)
ENABLED=true
# Time proportion here.
# So if it is 100, one second in real time will be 100 seconds in game.
# If it is 60, one second in real time will be one minute in game.
PROPORTION=60
# Starting on Essentials v17, the map tone only try to refresh tone each 30
# real time seconds.
# If this variable number isn't -1, the game use this number instead of 30.
# When time is changed with advance_to or add_seconds, the tone refreshes.
TONE_CHECK_INTERVAL = 10.0
# Make this true to time only pass at field (Scene_Map)
# A note to scripters: To make time pass on other scenes, put line
# '$PokemonGlobal.addNewFrameCount' near to line 'Graphics.update'
TIME_STOPS=true
# Make this true to time pass in battle, during turns and command selection.
# This won't affect the Pokémon and Bag submenus.
# Only works if TIME_STOPS=true.
BATTLE_PASS=true
# Make this true to time pass when the Dialog box or the main menu are open.
# This won't affect the submenus like Pokémon and Bag.
# Only works if TIME_STOPS=true.
TALK_PASS=true
# Choose switch number that when true the time won't pass (or -1 to cancel).
# Only works if TIME_STOPS=true.
SWITCH_STOPS=-1
# Choose variable(s) number(s) that can hold time passage (or -1 to cancel).
# Look at description for more details.
EXTRA_SECONDS=79
EXTRA_DAYS=-1
# Initial date. In sequence: Year, month, day, hour and minutes.
# Method UnrealTime.reset resets time back to this time.
def self.initial_date
return Time.local(2000,1,1, 12,0)
end
# Advance to next time. If time already passed, advance
# into the time on the next day.
# Hour is 0..23
def self.advance_to(hour,min=0,sec=0)
if hour < 0 || hour > 23
raise RangeError, "hour is #{hour}, should be 0..23"
end
day_seconds = 60*60*24
seconds_now = pbGetTimeNow.hour*60*60+pbGetTimeNow.min*60+pbGetTimeNow.sec
target_seconds = hour*60*60+min*60+sec
seconds_added = target_seconds-seconds_now
seconds_added += day_seconds if seconds_added<0
$PokemonGlobal.newFrameCount+=seconds_added
PBDayNight.sheduleToneRefresh
end
# Resets time to initial_date.
def self.reset
raise "Method doesn't work when TIME_STOPS is false!" if !TIME_STOPS
$game_variables[EXTRA_SECONDS]=0 if EXTRA_DAYS>0
$game_variables[EXTRA_DAYS]=0 if EXTRA_DAYS>0
$PokemonGlobal.newFrameCount=0
$PokemonGlobal.extraYears=0
PBDayNight.sheduleToneRefresh
end
# Does the same thing as EXTRA_SECONDS variable.
def self.add_seconds(seconds)
raise "Method doesn't work when TIME_STOPS is false!" if !TIME_STOPS
$PokemonGlobal.newFrameCount+=(seconds*Graphics.frame_rate)/PROPORTION.to_f
PBDayNight.sheduleToneRefresh
end
def self.add_days(days)
add_seconds(60*60*24*days)
end
NEED_32_BIT_FIX = [''].pack('p').size <= 4
end
# Essentials V18 and lower compatibility
module Settings
TIME_SHADING = defined?(ENABLESHADING) ? ENABLESHADING : ::TIME_SHADING
end if defined?(TIME_SHADING) || defined?(ENABLESHADING)
module PBDayNight
class << self
if method_defined?(:getTone) && UnrealTime::TONE_CHECK_INTERVAL > 0
def getTone
@cachedTone = Tone.new(0,0,0) if !@cachedTone
return @cachedTone if !Settings::TIME_SHADING
toneNeedUpdate = (!@dayNightToneLastUpdate ||
Graphics.frame_count-@dayNightToneLastUpdate >=
Graphics.frame_rate*UnrealTime::TONE_CHECK_INTERVAL
)
if toneNeedUpdate
getToneInternal
@dayNightToneLastUpdate = Graphics.frame_count
end
return @cachedTone
end
end
# Shedule a tone refresh on the next try (probably next frame)
def sheduleToneRefresh
@dayNightToneLastUpdate = nil
end
end
end
def pbGetTimeNow
return Time.now if !$PokemonGlobal || !UnrealTime::ENABLED
day_seconds = 60*60*24
if UnrealTime::TIME_STOPS
# Sum the extra values to newFrameCount
if UnrealTime::EXTRA_SECONDS>0
UnrealTime.add_seconds(pbGet(UnrealTime::EXTRA_SECONDS))
$game_variables[UnrealTime::EXTRA_SECONDS]=0
end
if UnrealTime::EXTRA_DAYS>0
UnrealTime.add_seconds(day_seconds*pbGet(UnrealTime::EXTRA_DAYS))
$game_variables[UnrealTime::EXTRA_DAYS]=0
end
elsif UnrealTime::EXTRA_SECONDS>0 && UnrealTime::EXTRA_DAYS>0
# Checks to regulate the max/min values at UnrealTime::EXTRA_SECONDS
while pbGet(UnrealTime::EXTRA_SECONDS)>=day_seconds
$game_variables[UnrealTime::EXTRA_SECONDS]-=day_seconds
$game_variables[UnrealTime::EXTRA_DAYS]+=1
end
while pbGet(UnrealTime::EXTRA_SECONDS)<=-day_seconds
$game_variables[UnrealTime::EXTRA_SECONDS]+=day_seconds
$game_variables[UnrealTime::EXTRA_DAYS]-=1
end
end
start_time=UnrealTime.initial_date
if UnrealTime::TIME_STOPS
time_played=$PokemonGlobal.newFrameCount
else
time_played=Graphics.frame_count
end
time_played=(time_played*UnrealTime::PROPORTION)/Graphics.frame_rate
time_jumped=0
if UnrealTime::EXTRA_SECONDS>-1
time_jumped+=pbGet(UnrealTime::EXTRA_SECONDS)
end
if UnrealTime::EXTRA_DAYS>-1
time_jumped+=pbGet(UnrealTime::EXTRA_DAYS)*day_seconds
end
time_ret = 0
# Before Essentials V19, there is a year limit. To prevent crashes due to this
# limit, every time that you reach in year 2036 the system will subtract 6
# years (to works with leap year) from your date and sum in
# $PokemonGlobal.extraYears. You can sum your actual year with this extraYears
# when displaying years.
loop do
time_fix=0
if $PokemonGlobal.extraYears!=0
time_fix = $PokemonGlobal.extraYears*day_seconds*(365*6+1)/6
end
time_ret=start_time+(time_played+time_jumped-time_fix)
break if !UnrealTime::NEED_32_BIT_FIX || time_ret.year<2036
$PokemonGlobal.extraYears+=6
end
return time_ret
end
if UnrealTime::ENABLED
class PokemonGlobalMetadata
attr_accessor :newFrameCount # Became float when using extra values
attr_accessor :extraYears
def addNewFrameCount
return if (UnrealTime::SWITCH_STOPS>0 &&
$game_switches[UnrealTime::SWITCH_STOPS])
self.newFrameCount+=1
end
def newFrameCount
@newFrameCount=0 if !@newFrameCount
return @newFrameCount
end
def extraYears
@extraYears=0 if !@extraYears
return @extraYears
end
end
if UnrealTime::TIME_STOPS
class Scene_Map
alias :updateold :update
def update
$PokemonGlobal.addNewFrameCount
updateold
end
if UnrealTime::TALK_PASS
alias :miniupdateold :miniupdate
def miniupdate
$PokemonGlobal.addNewFrameCount
miniupdateold
end
end
end
if UnrealTime::BATTLE_PASS
class PokeBattle_Scene
alias :pbGraphicsUpdateold :pbGraphicsUpdate
def pbGraphicsUpdate
$PokemonGlobal.addNewFrameCount
pbGraphicsUpdateold
end
end
end
end
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -664,6 +664,6 @@
656,TM119,TM119,TM119s,4,30000,"The user attacks driven by frustration. Power increases if the user's previous move failed.",3,0,0,STOMPINGTANTRUM
657,TM120,TM120,TM120s,4,30000,"The user attacks the target's throat. The target cannot use sound-based moves for two turns.",3,0,0,THROATCHOP
658,TM00,TM00,TM00s,4,0,"A strange TM developped by Team Rocket. It appears to be related to Pokémon fusion.",3,0,0,FUSIONSWAP
659;TM121;TM121;TM121s;4;10000;"The user shoots boiling hot water at its target. It may also leave the target with a burn.";3;0;0;SCALD
659,TM121,TM121,TM121s,4,10000,"The user shoots boiling hot water at its target. It may also leave the target with a burn.",3,0,0,SCALD