mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
#=============================================================================
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user