28 Commits
6.2.1 ... 6.2.3

Author SHA1 Message Date
infinitefusion
b2efd78631 Merge branch 'main' of https://github.com/infinitefusion/infinitefusion-e18 into releases 2024-07-05 18:35:06 -04:00
infinitefusion
116323d8e8 Automatically load classic mode trainer if missing in another game mode 2024-07-05 18:24:27 -04:00
infinitefusion
8c80c9db35 fixes ability ball 2024-07-05 18:11:49 -04:00
infinitefusion
0d75109a20 adds missing eggs 2024-07-05 18:06:00 -04:00
infinitefusion
d78caf6792 fixes brock battle transition 2024-07-05 17:53:12 -04:00
infinitefusion
4a6a889b3e Fixes wearable sprite offset and layering issues when autoscrolling the map 2024-07-05 17:52:17 -04:00
infinitefusion
6180590860 Fixes displaced hat/hair in pokemarts 2024-07-03 20:42:11 -04:00
infinitefusion
dee677224d flipped snorlax 2024-07-03 17:02:09 -04:00
infinitefusion
2a33e49855 fixes player becoming invisible while playing pokeflute 2024-07-03 13:46:20 -04:00
infinitefusion
a21f3b289b eusine fix 2024-07-03 10:57:19 -04:00
infinitefusion
1379b219f2 Merge branch 'main' of https://github.com/infinitefusion/infinitefusion-e18 into releases 2024-07-03 10:30:11 -04:00
infinitefusion
f6b55a838b gave cooltrainer a surfboard 2024-07-03 10:29:53 -04:00
Maruno17
92194cab02 Added checks that prevent aliasing a method if the alias method already exists, fixed Symbiosis not working properly for opponents 2024-07-01 20:27:19 -04:00
infinitefusion
0904f27afa random map changes + meloetta now a self-fusion 2024-07-01 19:28:04 -04:00
infinitefusion
c5f578039e ecruteak chairs 2024-07-01 14:30:12 -04:00
infinitefusion
2b06205ee8 fixes default dive base sprite 2024-07-01 14:20:39 -04:00
infinitefusion
867a3bf0a5 fixes wrong starter trade in cerulean 2024-06-30 19:25:06 -04:00
infinitefusion
9bdaf9e817 updates custom sprites list 2024-06-30 19:18:38 -04:00
infinitefusion
ef919ee44b Merge branch 'main' of https://github.com/infinitefusion/infinitefusion-e18 into releases 2024-06-30 17:41:05 -04:00
infinitefusion
e6d133f7a6 Fixes roaming weather appearing even when legendaries have been caught 2024-06-30 17:37:28 -04:00
infinitefusion
e186c4b668 Merge branch 'main' of https://github.com/infinitefusion/infinitefusion-e18 into releases 2024-06-30 15:47:04 -04:00
infinitefusion
ad1be384ce updates patch version nb 2024-06-30 15:46:48 -04:00
infinitefusion
19864599e0 removes the ability to fish while surfing 2024-06-30 15:45:03 -04:00
infinitefusion
b053d1eb77 fixes wrong backpack color on red clothes sprites 2024-06-30 15:41:02 -04:00
infinitefusion
2c3fae1b27 fixes player sprite layer issue when starting battles 2024-06-30 15:32:33 -04:00
infinitefusion
5e30a12118 Merge branch 'main' of https://github.com/infinitefusion/infinitefusion-e18 into releases 2024-06-30 15:19:09 -04:00
infinitefusion
c6a52b7940 fixes ability capsule not changing the ability 2024-06-30 15:18:42 -04:00
infinitefusion
0ba5b1551e Fixes fishing sprite offsets 2024-06-30 15:17:37 -04:00
96 changed files with 15396 additions and 2104 deletions

File diff suppressed because it is too large Load Diff

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.

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.

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.

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.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -5,8 +5,8 @@
#==============================================================================# #==============================================================================#
module Settings module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format. # The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '6.2.1' GAME_VERSION = '6.2.3'
GAME_VERSION_NUMBER = "6.2.1" GAME_VERSION_NUMBER = "6.2.3"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17 POKERADAR_LIGHT_ANIMATION_RED_ID = 17
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18 POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18

View File

@@ -2,7 +2,7 @@
# class Object # class Object
#=============================================================================== #===============================================================================
class Object class Object
alias full_inspect inspect alias full_inspect inspect unless method_defined?(:full_inspect)
def inspect def inspect
return "#<#{self.class}>" return "#<#{self.class}>"

View File

@@ -36,6 +36,7 @@ class Game_Map
attr_reader :display_x # display x-coordinate * 128 attr_reader :display_x # display x-coordinate * 128
attr_reader :display_y # display y-coordinate * 128 attr_reader :display_y # display y-coordinate * 128
attr_accessor :need_refresh # refresh request flag attr_accessor :need_refresh # refresh request flag
attr_accessor :scroll_direction
TILE_WIDTH = 32 TILE_WIDTH = 32
TILE_HEIGHT = 32 TILE_HEIGHT = 32

View File

@@ -178,6 +178,12 @@ class Game_Player < Game_Character
self.map.display_y = y * Game_Map::REAL_RES_Y - SCREEN_CENTER_Y self.map.display_y = y * Game_Map::REAL_RES_Y - SCREEN_CENTER_Y
end end
def isCentered()
x_centered = self.map.display_x == x * Game_Map::REAL_RES_X - SCREEN_CENTER_X
y_centered = self.map.display_y == y * Game_Map::REAL_RES_Y - SCREEN_CENTER_Y
return x_centered && y_centered
end
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# * Move to Designated Position # * Move to Designated Position
# x : x-coordinate # x : x-coordinate

View File

@@ -41,9 +41,9 @@ end
class Spriteset_Map class Spriteset_Map
alias _animationSprite_initialize initialize alias _animationSprite_initialize initialize unless method_defined?(:_animationSprite_initialize)
alias _animationSprite_update update alias _animationSprite_update update unless method_defined?(:_animationSprite_update)
alias _animationSprite_dispose dispose alias _animationSprite_dispose dispose unless method_defined?(:_animationSprite_dispose)
def initialize(map=nil) def initialize(map=nil)
@usersprites=[] @usersprites=[]

View File

@@ -7,19 +7,19 @@
class Sprite_Shadow < RPG::Sprite class Sprite_Shadow < RPG::Sprite
attr_accessor :character attr_accessor :character
def initialize(viewport, character = nil,params=[]) def initialize(viewport, character = nil, params = [])
super(viewport) super(viewport)
@source = params[0] @source = params[0]
@anglemin = (params.size>1) ? params[1] : 0 @anglemin = (params.size > 1) ? params[1] : 0
@anglemax = (params.size>2) ? params[2] : 0 @anglemax = (params.size > 2) ? params[2] : 0
@self_opacity = (params.size>4) ? params[4] : 100 @self_opacity = (params.size > 4) ? params[4] : 100
@distancemax = (params.size>3) ? params[3] : 350 @distancemax = (params.size > 3) ? params[3] : 350
@character = character @character = character
update update
end end
def dispose def dispose
@chbitmap.dispose if @chbitmap @chbitmap&.dispose
super super
end end
@@ -35,19 +35,18 @@ class Sprite_Shadow < RPG::Sprite
@tile_id = @character.tile_id @tile_id = @character.tile_id
@character_name = @character.character_name @character_name = @character.character_name
@character_hue = @character.character_hue @character_hue = @character.character_hue
@chbitmap&.dispose
if @tile_id >= 384 if @tile_id >= 384
@chbitmap.dispose if @chbitmap
@chbitmap = pbGetTileBitmap(@character.map.tileset_name, @chbitmap = pbGetTileBitmap(@character.map.tileset_name,
@tile_id, @character.character_hue) @tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32) self.src_rect.set(0, 0, 32, 32)
@ch = 32 @ch = 32
@cw = 32 @cw = 32
self.ox = 16 self.ox = 16
self.oy = 32 self.oy = 32
else else
@chbitmap.dispose if @chbitmap @chbitmap = AnimatedBitmap.new('Graphics/Characters/' + @character.character_name,
@chbitmap = AnimatedBitmap.new( @character.character_hue)
'Graphics/Characters/'+@character.character_name,@character.character_hue)
@cw = @chbitmap.width / 4 @cw = @chbitmap.width / 4
@ch = @chbitmap.height / 4 @ch = @chbitmap.height / 4
self.ox = @cw / 2 self.ox = @cw / 2
@@ -75,8 +74,8 @@ class Sprite_Shadow < RPG::Sprite
self.src_rect.set(sx, sy, @cw, @ch) self.src_rect.set(sx, sy, @cw, @ch)
end end
self.x = ScreenPosHelper.pbScreenX(@character) self.x = ScreenPosHelper.pbScreenX(@character)
self.y = ScreenPosHelper.pbScreenY(@character)-5 self.y = ScreenPosHelper.pbScreenY(@character) - 5
self.z = ScreenPosHelper.pbScreenZ(@character,@ch)-1 self.z = ScreenPosHelper.pbScreenZ(@character, @ch) - 1
self.zoom_x = ScreenPosHelper.pbScreenZoomX(@character) self.zoom_x = ScreenPosHelper.pbScreenZoomX(@character)
self.zoom_y = ScreenPosHelper.pbScreenZoomY(@character) self.zoom_y = ScreenPosHelper.pbScreenZoomY(@character)
self.blend_type = @character.blend_type self.blend_type = @character.blend_type
@@ -89,10 +88,10 @@ class Sprite_Shadow < RPG::Sprite
@deltax = ScreenPosHelper.pbScreenX(@source) - self.x @deltax = ScreenPosHelper.pbScreenX(@source) - self.x
@deltay = ScreenPosHelper.pbScreenY(@source) - self.y @deltay = ScreenPosHelper.pbScreenY(@source) - self.y
self.color = Color.new(0, 0, 0) self.color = Color.new(0, 0, 0)
@distance = ((@deltax ** 2) + (@deltay ** 2)) @distance = ((@deltax**2) + (@deltay**2))
self.opacity = @self_opacity * 13000 / ((@distance * 370 / @distancemax) + 6000) self.opacity = @self_opacity * 13_000 / ((@distance * 370 / @distancemax) + 6000)
self.angle = 57.3 * Math.atan2(@deltax, @deltay) self.angle = 57.3 * Math.atan2(@deltax, @deltay)
@angle_trigo = self.angle+90 @angle_trigo = self.angle + 90
@angle_trigo += 360 if @angle_trigo < 0 @angle_trigo += 360 if @angle_trigo < 0
if @anglemin != 0 || @anglemax != 0 if @anglemin != 0 || @anglemax != 0
if (@angle_trigo < @anglemin || @angle_trigo > @anglemax) && @anglemin < @anglemax if (@angle_trigo < @anglemin || @angle_trigo > @anglemax) && @anglemin < @anglemax
@@ -124,7 +123,7 @@ end
# ? CLASS Sprite_Character edit # ? CLASS Sprite_Character edit
#=================================================== #===================================================
class Sprite_Character < RPG::Sprite class Sprite_Character < RPG::Sprite
alias :shadow_initialize :initialize alias shadow_initialize initialize unless method_defined?(:shadow_initialize)
def initialize(viewport, character = nil) def initialize(viewport, character = nil)
@ombrelist = [] @ombrelist = []
@@ -132,37 +131,33 @@ class Sprite_Character < RPG::Sprite
shadow_initialize(viewport, @character) shadow_initialize(viewport, @character)
end end
def setShadows(map,shadows) def setShadows(map, shadows)
if character.is_a?(Game_Event) && shadows.length > 0 if character.is_a?(Game_Event) && shadows.length > 0
params = XPML_read(map,"Shadow",@character,4) params = XPML_read(map, "Shadow", @character, 4)
if params != nil if params != nil
for i in 0...shadows.size shadows.each do |shadow|
@ombrelist.push(Sprite_Shadow.new(viewport, @character, shadows[i])) @ombrelist.push(Sprite_Shadow.new(viewport, @character, shadows))
end end
end end
end end
if character.is_a?(Game_Player) && shadows.length > 0 if character.is_a?(Game_Player) && shadows.length > 0
for i in 0...shadows.size shadows.each do |shadow|
@ombrelist.push(Sprite_Shadow.new(viewport, $game_player, shadows[i])) @ombrelist.push(Sprite_Shadow.new(viewport, $game_player, shadow))
end end
end end
update update
end end
def clearShadows def clearShadows
@ombrelist.each { |s| s.dispose if s } @ombrelist.each { |s| s&.dispose }
@ombrelist.clear @ombrelist.clear
end end
alias shadow_update update alias shadow_update update unless method_defined?(:shadow_update)
def update def update
shadow_update shadow_update
if @ombrelist.length>0 @ombrelist.each { |ombre| ombre.update }
for i in 0...@ombrelist.size
@ombrelist[i].update
end
end
end end
end end
@@ -183,24 +178,24 @@ end
class Spriteset_Map class Spriteset_Map
attr_accessor :shadows attr_accessor :shadows
alias shadow_initialize initialize alias shadow_initialize initialize unless method_defined?(:shadow_initialize)
def initialize(map=nil)
def initialize(map = nil)
@shadows = [] @shadows = []
warn = false warn = false
map = $game_map if !map map = $game_map if !map
for k in map.events.keys.sort map.events.keys.sort.each do |k|
ev = map.events[k] ev = map.events[k]
warn = true if (ev.list != nil && ev.list.length > 0 && warn = true if ev.list != nil && ev.list.length > 0 && ev.list[0].code == 108 &&
ev.list[0].code == 108 && (ev.list[0].parameters == ["s"] || ev.list[0].parameters == ["o"])
(ev.list[0].parameters == ["s"] || ev.list[0].parameters == ["o"])) params = XPML_read(map, "Shadow Source", ev, 4)
params = XPML_read(map,"Shadow Source", ev, 4)
@shadows.push([ev] + params) if params != nil @shadows.push([ev] + params) if params != nil
end end
if warn == true if warn == true
p "Warning : At least one event on this map uses the obsolete way to add shadows" p "Warning : At least one event on this map uses the obsolete way to add shadows"
end end
shadow_initialize(map) shadow_initialize(map)
for sprite in @character_sprites @character_sprites.each do |sprite|
sprite.setShadows(map, @shadows) sprite.setShadows(map, @shadows)
end end
$scene.spritesetGlobal.playersprite.setShadows(map, @shadows) $scene.spritesetGlobal.playersprite.setShadows(map, @shadows)
@@ -228,31 +223,31 @@ end
# p XPML_read("third", event_id) -> [3] # p XPML_read("third", event_id) -> [3]
# p XPML_read("forth", event_id) -> nil # p XPML_read("forth", event_id) -> nil
#=================================================== #===================================================
def XPML_read(map,markup,event,max_param_number=0) def XPML_read(map, markup, event, max_param_number = 0)
parameter_list = nil parameter_list = nil
return nil if !event || event.list == nil return nil if !event || event.list.nil?
for i in 0...event.list.size event.list.size.times do |i|
if event.list[i].code == 108 && if event.list[i].code == 108 &&
event.list[i].parameters[0].downcase == "begin " + markup.downcase event.list[i].parameters[0].downcase == "begin " + markup.downcase
parameter_list = [] if parameter_list == nil parameter_list = [] if parameter_list.nil?
for j in i+1...event.list.size ((i + 1)...event.list.size).each do |j|
if event.list[j].code == 108 if event.list[j].code == 108
parts = event.list[j].parameters[0].split parts = event.list[j].parameters[0].split
if parts.size != 1 && parts[0].downcase != "begin" if parts.size != 1 && parts[0].downcase != "begin"
if parts[1].to_i != 0 || parts[1] == "0" if parts[1].to_i != 0 || parts[1] == "0"
parameter_list.push(parts[1].to_i) parameter_list.push(parts[1].to_i)
else
parameter_list.push(parts[1])
end
else else
return parameter_list parameter_list.push(parts[1])
end end
else else
return parameter_list return parameter_list
end end
return parameter_list if max_param_number != 0 && j == i + max_param_number else
return parameter_list
end end
return parameter_list if max_param_number != 0 && j == i + max_param_number
end end
end end
end
return parameter_list return parameter_list
end end

View File

@@ -2,36 +2,36 @@
# Based on version 2 by Near Fantastica, 04.01.06 # Based on version 2 by Near Fantastica, 04.01.06
# In turn based on the Particle Engine designed by PinkMan # In turn based on the Particle Engine designed by PinkMan
class Particle_Engine class Particle_Engine
def initialize(viewport=nil,map=nil) def initialize(viewport = nil, map = nil)
@map = (map) ? map : $game_map @map = (map) ? map : $game_map
@viewport = viewport @viewport = viewport
@effect = [] @effect = []
@disposed = false @disposed = false
@firsttime = true @firsttime = true
@effects = { @effects = {
# PinkMan's Effects # PinkMan's Effects
"fire" => Particle_Engine::Fire, "fire" => Particle_Engine::Fire,
"smoke" => Particle_Engine::Smoke, "smoke" => Particle_Engine::Smoke,
"teleport" => Particle_Engine::Teleport, "teleport" => Particle_Engine::Teleport,
"spirit" => Particle_Engine::Spirit, "spirit" => Particle_Engine::Spirit,
"explosion" => Particle_Engine::Explosion, "explosion" => Particle_Engine::Explosion,
"aura" => Particle_Engine::Aura, "aura" => Particle_Engine::Aura,
# BlueScope's Effects # BlueScope's Effects
"soot" => Particle_Engine::Soot, "soot" => Particle_Engine::Soot,
"sootsmoke" => Particle_Engine::SootSmoke, "sootsmoke" => Particle_Engine::SootSmoke,
"rocket" => Particle_Engine::Rocket, "rocket" => Particle_Engine::Rocket,
"fixteleport" => Particle_Engine::FixedTeleport, "fixteleport" => Particle_Engine::FixedTeleport,
"smokescreen" => Particle_Engine::Smokescreen, "smokescreen" => Particle_Engine::Smokescreen,
"flare" => Particle_Engine::Flare, "flare" => Particle_Engine::Flare,
"splash" => Particle_Engine::Splash, "splash" => Particle_Engine::Splash,
# By Peter O. # By Peter O.
"starteleport" => Particle_Engine::StarTeleport "starteleport" => Particle_Engine::StarTeleport
} }
end end
def dispose def dispose
return if disposed? return if disposed?
for particle in @effect @effect.each do |particle|
next if particle.nil? next if particle.nil?
particle.dispose particle.dispose
end end
@@ -54,47 +54,46 @@ class Particle_Engine
@effect.delete_at(event.id) @effect.delete_at(event.id)
end end
def realloc_effect(event,particle) def realloc_effect(event, particle)
type = pbEventCommentInput(event, 1, "Particle Engine Type") type = pbEventCommentInput(event, 1, "Particle Engine Type")
if type.nil? if type.nil?
particle.dispose if particle particle&.dispose
return nil return nil
end end
type = type[0].downcase type = type[0].downcase
cls = @effects[type] cls = @effects[type]
if cls.nil? if cls.nil?
particle.dispose if particle particle&.dispose
return nil return nil
end end
if !particle || !particle.is_a?(cls) if !particle || !particle.is_a?(cls)
particle.dispose if particle particle&.dispose
particle = cls.new(event,@viewport) particle = cls.new(event, @viewport)
end end
return particle return particle
end end
def pbParticleEffect(event) def pbParticleEffect(event)
return realloc_effect(event,nil) return realloc_effect(event, nil)
end end
def update def update
if @firsttime if @firsttime
@firsttime = false @firsttime = false
for event in @map.events.values @map.events.values.each do |event|
remove_effect(event) remove_effect(event)
add_effect(event) add_effect(event)
end end
end end
for i in 0...@effect.length @effect.each_with_index do |particle, i|
particle = @effect[i]
next if particle.nil? next if particle.nil?
if particle.event.pe_refresh if particle.event.pe_refresh
event = particle.event event = particle.event
event.pe_refresh = false event.pe_refresh = false
particle = realloc_effect(event,particle) particle = realloc_effect(event, particle)
@effect[i] = particle @effect[i] = particle
end end
particle.update if particle particle&.update
end end
end end
end end
@@ -136,7 +135,7 @@ class ParticleSprite
end end
def dispose def dispose
@sprite.dispose if @sprite @sprite&.dispose
end end
def bitmap=(value) def bitmap=(value)
@@ -153,21 +152,21 @@ class ParticleSprite
def update def update
w = Graphics.width w = Graphics.width
h = Graphics.height h = Graphics.height
if !@sprite && @x>=@minleft && @y>=@mintop && @x<w && @y<h if !@sprite && @x >= @minleft && @y >= @mintop && @x < w && @y < h
@sprite = Sprite.new(@viewport) @sprite = Sprite.new(@viewport)
elsif @sprite && (@x<@minleft || @y<@mintop || @x>=w || @y>=h) elsif @sprite && (@x < @minleft || @y < @mintop || @x >= w || @y >= h)
@sprite.dispose @sprite.dispose
@sprite = nil @sprite = nil
end end
if @sprite if @sprite
@sprite.x = @x if @sprite.x!=@x @sprite.x = @x if @sprite.x != @x
@sprite.x -= @ox @sprite.x -= @ox
@sprite.y = @y if @sprite.y!=@y @sprite.y = @y if @sprite.y != @y
@sprite.y -= @oy @sprite.y -= @oy
@sprite.z = @z if @sprite.z!=@z @sprite.z = @z if @sprite.z != @z
@sprite.opacity = @opacity if @sprite.opacity!=@opacity @sprite.opacity = @opacity if @sprite.opacity != @opacity
@sprite.blend_type = @blend_type if @sprite.blend_type!=@blend_type @sprite.blend_type = @blend_type if @sprite.blend_type != @blend_type
@sprite.bitmap = @bitmap if @sprite.bitmap!=@bitmap @sprite.bitmap = @bitmap if @sprite.bitmap != @bitmap
end end
end end
end end
@@ -177,7 +176,7 @@ end
class ParticleEffect_Event < ParticleEffect class ParticleEffect_Event < ParticleEffect
attr_accessor :event attr_accessor :event
def initialize(event,viewport=nil) def initialize(event, viewport = nil)
@event = event @event = event
@viewport = viewport @viewport = viewport
@particles = [] @particles = []
@@ -185,24 +184,24 @@ class ParticleEffect_Event < ParticleEffect
end end
def setParameters(params) def setParameters(params)
@randomhue,@leftright,@fade, @randomhue, @leftright, @fade,
@maxparticless,@hue,@slowdown, @maxparticless, @hue, @slowdown,
@ytop,@ybottom,@xleft,@xright, @ytop, @ybottom, @xleft, @xright,
@xgravity,@ygravity,@xoffset,@yoffset, @xgravity, @ygravity, @xoffset, @yoffset,
@opacityvar,@originalopacity = params @opacityvar, @originalopacity = params
end end
def loadBitmap(filename,hue) def loadBitmap(filename, hue)
key = [filename,hue] key = [filename, hue]
bitmap = @bitmaps[key] bitmap = @bitmaps[key]
if !bitmap || bitmap.disposed? if !bitmap || bitmap.disposed?
bitmap = AnimatedBitmap.new("Graphics/Fogs/"+filename,hue).deanimate bitmap = AnimatedBitmap.new("Graphics/Fogs/" + filename, hue).deanimate
@bitmaps[key] = bitmap @bitmaps[key] = bitmap
end end
return bitmap return bitmap
end end
def initParticles(filename,opacity,zOffset=0,blendtype=1) def initParticles(filename, opacity, zOffset = 0, blendtype = 1)
@particles = [] @particles = []
@particlex = [] @particlex = []
@particley = [] @particley = []
@@ -217,20 +216,20 @@ class ParticleEffect_Event < ParticleEffect
@zoffset = zOffset @zoffset = zOffset
@bmwidth = 32 @bmwidth = 32
@bmheight = 32 @bmheight = 32
for i in 0...@maxparticless @maxparticless.times do |i|
@particlex[i] = -@xoffset @particlex[i] = -@xoffset
@particley[i] = -@yoffset @particley[i] = -@yoffset
@particles[i] = ParticleSprite.new(@viewport) @particles[i] = ParticleSprite.new(@viewport)
@particles[i].bitmap = loadBitmap(filename, @hue) if filename @particles[i].bitmap = loadBitmap(filename, @hue) if filename
if i==0 && @particles[i].bitmap if i == 0 && @particles[i].bitmap
@bmwidth = @particles[i].bitmap.width @bmwidth = @particles[i].bitmap.width
@bmheight = @particles[i].bitmap.height @bmheight = @particles[i].bitmap.height
end end
@particles[i].blend_type = blendtype @particles[i].blend_type = blendtype
@particles[i].y = @startingy @particles[i].y = @startingy
@particles[i].x = @startingx @particles[i].x = @startingx
@particles[i].z = self.z+zOffset @particles[i].z = self.z + zOffset
@opacity[i] = rand(opacity/4) @opacity[i] = rand(opacity / 4)
@particles[i].opacity = @opacity[i] @particles[i].opacity = @opacity[i]
@particles[i].update @particles[i].update
end end
@@ -253,29 +252,29 @@ class ParticleEffect_Event < ParticleEffect
newRealY = @event.real_y newRealY = @event.real_y
@startingx = selfX + @xoffset @startingx = selfX + @xoffset
@startingy = selfY + @yoffset @startingy = selfY + @yoffset
@__offsetx = (@real_x==newRealX) ? 0 : selfX-@screen_x @__offsetx = (@real_x == newRealX) ? 0 : selfX - @screen_x
@__offsety = (@real_y==newRealY) ? 0 : selfY-@screen_y @__offsety = (@real_y == newRealY) ? 0 : selfY - @screen_y
@screen_x = selfX @screen_x = selfX
@screen_y = selfY @screen_y = selfY
@real_x = newRealX @real_x = newRealX
@real_y = newRealY @real_y = newRealY
if @opacityvar>0 && @viewport if @opacityvar > 0 && @viewport
opac = 255.0/@opacityvar opac = 255.0 / @opacityvar
minX = opac*(-@xgravity*1.0 / @slowdown).floor + @startingx minX = (opac * (-@xgravity.to_f / @slowdown).floor) + @startingx
maxX = opac*(@xgravity*1.0 / @slowdown).floor + @startingx maxX = (opac * (@xgravity.to_f / @slowdown).floor) + @startingx
minY = opac*(-@ygravity*1.0 / @slowdown).floor + @startingy minY = (opac * (-@ygravity.to_f / @slowdown).floor) + @startingy
maxY = @startingy maxY = @startingy
minX -= @bmwidth minX -= @bmwidth
minY -= @bmheight minY -= @bmheight
maxX += @bmwidth maxX += @bmwidth
maxY += @bmheight maxY += @bmheight
if maxX<0 || maxY<0 || minX>=Graphics.width || minY>=Graphics.height if maxX < 0 || maxY < 0 || minX >= Graphics.width || minY >= Graphics.height
# echo "skipped" # echo "skipped"
return return
end end
end end
particleZ = selfZ+@zoffset particleZ = selfZ + @zoffset
for i in 0...@maxparticless @maxparticless.times do |i|
@particles[i].z = particleZ @particles[i].z = particleZ
if @particles[i].y <= @ytop if @particles[i].y <= @ytop
@particles[i].y = @startingy + @yoffset @particles[i].y = @startingy + @yoffset
@@ -309,14 +308,12 @@ class ParticleEffect_Event < ParticleEffect
@particlex[i] = 0.0 @particlex[i] = 0.0
@particley[i] = 0.0 @particley[i] = 0.0
end end
else elsif @opacity[i] <= 0
if @opacity[i] <= 0 @opacity[i] = 250
@opacity[i] = 250 @particles[i].y = @startingy + @yoffset
@particles[i].y = @startingy + @yoffset @particles[i].x = @startingx + @xoffset
@particles[i].x = @startingx + @xoffset @particlex[i] = 0.0
@particlex[i] = 0.0 @particley[i] = 0.0
@particley[i] = 0.0
end
end end
calcParticlePos(i) calcParticlePos(i)
if @randomhue == 1 if @randomhue == 1
@@ -333,26 +330,26 @@ class ParticleEffect_Event < ParticleEffect
def calcParticlePos(i) def calcParticlePos(i)
@leftright = rand(2) @leftright = rand(2)
if @leftright == 1 if @leftright == 1
xo = -@xgravity*1.0 / @slowdown xo = -@xgravity.to_f / @slowdown
else else
xo = @xgravity*1.0 / @slowdown xo = @xgravity.to_f / @slowdown
end end
yo = -@ygravity*1.0 / @slowdown yo = -@ygravity.to_f / @slowdown
@particlex[i] += xo @particlex[i] += xo
@particley[i] += yo @particley[i] += yo
@particlex[i] -= @__offsetx @particlex[i] -= @__offsetx
@particley[i] -= @__offsety @particley[i] -= @__offsety
@particlex[i] = @particlex[i].floor @particlex[i] = @particlex[i].floor
@particley[i] = @particley[i].floor @particley[i] = @particley[i].floor
@particles[i].x = @particlex[i]+@startingx+@xoffset @particles[i].x = @particlex[i] + @startingx + @xoffset
@particles[i].y = @particley[i]+@startingy+@yoffset @particles[i].y = @particley[i] + @startingy + @yoffset
end end
def dispose def dispose
for particle in @particles @particles.each do |particle|
particle.dispose particle.dispose
end end
for bitmap in @bitmaps.values @bitmaps.values.each do |bitmap|
bitmap.dispose bitmap.dispose
end end
@particles.clear @particles.clear
@@ -363,34 +360,34 @@ end
class Particle_Engine::Fire < ParticleEffect_Event class Particle_Engine::Fire < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,1,20,40,0.5,-64, setParameters([0, 0, 1, 20, 40, 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0.10,-5,-13,30,0]) Graphics.height, -64, Graphics.width, 0.5, 0.10, -5, -13, 30, 0])
initParticles("particle",250) initParticles("particle", 250)
end end
end end
class Particle_Engine::Smoke < ParticleEffect_Event class Particle_Engine::Smoke < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,0,80,20,0.5,-64, setParameters([0, 0, 0, 80, 20, 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0.10,-5,-15,5,80]) Graphics.height, -64, Graphics.width, 0.5, 0.10, -5, -15, 5, 80])
initParticles("smoke",250) initParticles("smoke", 250)
end end
end end
class Particle_Engine::Teleport < ParticleEffect_Event class Particle_Engine::Teleport < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([1,1,1,10,rand(360),1,-64, setParameters([1, 1, 1, 10, rand(360), 1, -64,
Graphics.height,-64,Graphics.width,0,3,-8,-15,20,0]) Graphics.height, -64, Graphics.width, 0, 3, -8, -15, 20, 0])
initParticles("wideportal",250) initParticles("wideportal", 250)
for i in 0...@maxparticless @maxparticless.times do |i|
@particles[i].ox = 16 @particles[i].ox = 16
@particles[i].oy = 16 @particles[i].oy = 16
end end
@@ -400,56 +397,56 @@ end
class Particle_Engine::Spirit < ParticleEffect_Event class Particle_Engine::Spirit < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([1,0,1,20,rand(360),0.5,-64, setParameters([1, 0, 1, 20, rand(360), 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0.10,-5,-13,30,0]) Graphics.height, -64, Graphics.width, 0.5, 0.10, -5, -13, 30, 0])
initParticles("particle",250) initParticles("particle", 250)
end end
end end
class Particle_Engine::Explosion < ParticleEffect_Event class Particle_Engine::Explosion < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,1,20,0,0.5,-64, setParameters([0, 0, 1, 20, 0, 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0.10,-5,-13,30,0]) Graphics.height, -64, Graphics.width, 0.5, 0.10, -5, -13, 30, 0])
initParticles("explosion",250) initParticles("explosion", 250)
end end
end end
class Particle_Engine::Aura < ParticleEffect_Event class Particle_Engine::Aura < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,1,20,0,1,-64, setParameters([0, 0, 1, 20, 0, 1, -64,
Graphics.height,-64,Graphics.width,2,2,-5,-13,30,0]) Graphics.height, -64, Graphics.width, 2, 2, -5, -13, 30, 0])
initParticles("particle",250) initParticles("particle", 250)
end end
end end
class Particle_Engine::Soot < ParticleEffect_Event class Particle_Engine::Soot < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,0,20,0,0.5,-64, setParameters([0, 0, 0, 20, 0, 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0.10,-5,-15,5,80]) Graphics.height, -64, Graphics.width, 0.5, 0.10, -5, -15, 5, 80])
initParticles("smoke",100,0,2) initParticles("smoke", 100, 0, 2)
end end
end end
class Particle_Engine::SootSmoke < ParticleEffect_Event class Particle_Engine::SootSmoke < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,0,30,0,0.5,-64, setParameters([0, 0, 0, 30, 0, 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0.10,-5,-15,5,80]) Graphics.height, -64, Graphics.width, 0.5, 0.10, -5, -15, 5, 80])
initParticles("smoke",100,0) initParticles("smoke", 100, 0)
for i in 0...@maxparticless @maxparticless.times do |i|
@particles[i].blend_type = rand(6) < 3 ? 1 : 2 @particles[i].blend_type = rand(6) < 3 ? 1 : 2
end end
end end
@@ -458,23 +455,23 @@ end
class Particle_Engine::Rocket < ParticleEffect_Event class Particle_Engine::Rocket < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,0,60,0,0.5,-64, setParameters([0, 0, 0, 60, 0, 0.5, -64,
Graphics.height,-64,Graphics.width,0.5,0,-5,-15,5,80]) Graphics.height, -64, Graphics.width, 0.5, 0, -5, -15, 5, 80])
initParticles("smoke",100,-1) initParticles("smoke", 100, -1)
end end
end end
class Particle_Engine::FixedTeleport < ParticleEffect_Event class Particle_Engine::FixedTeleport < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([1,0,1,10,rand(360),1, setParameters([1, 0, 1, 10, rand(360), 1,
-Graphics.height,Graphics.height,0,Graphics.width,0,3,-8,-15,20,0]) -Graphics.height, Graphics.height, 0, Graphics.width, 0, 3, -8, -15, 20, 0])
initParticles("wideportal",250) initParticles("wideportal", 250)
for i in 0...@maxparticless @maxparticless.times do |i|
@particles[i].ox = 16 @particles[i].ox = 16
@particles[i].oy = 16 @particles[i].oy = 16
end end
@@ -485,12 +482,12 @@ end
# By Peter O. # By Peter O.
class Particle_Engine::StarTeleport < ParticleEffect_Event class Particle_Engine::StarTeleport < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,1,10,0,1, setParameters([0, 0, 1, 10, 0, 1,
-Graphics.height,Graphics.height,0,Graphics.width,0,3,-8,-15,10,0]) -Graphics.height, Graphics.height, 0, Graphics.width, 0, 3, -8, -15, 10, 0])
initParticles("star",250) initParticles("star", 250)
for i in 0...@maxparticless @maxparticless.times do |i|
@particles[i].ox = 48 @particles[i].ox = 48
@particles[i].oy = 48 @particles[i].oy = 48
end end
@@ -500,64 +497,64 @@ end
class Particle_Engine::Smokescreen < ParticleEffect_Event class Particle_Engine::Smokescreen < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,0,250,0,0.2,-64, setParameters([0, 0, 0, 250, 0, 0.2, -64,
Graphics.height,-64,Graphics.width,0.8,0.8,-5,-15,5,80]) Graphics.height, -64, Graphics.width, 0.8, 0.8, -5, -15, 5, 80])
initParticles(nil,100) initParticles(nil, 100)
for i in 0...@maxparticless @maxparticless.times do |i|
rnd = rand(3) rnd = rand(3)
@opacity[i] = (rnd==0) ? 1 : 100 @opacity[i] = (rnd == 0) ? 1 : 100
filename = (rnd==0) ? "explosionsmoke" : "smoke" filename = (rnd == 0) ? "explosionsmoke" : "smoke"
@particles[i].bitmap = loadBitmap(filename, @hue) @particles[i].bitmap = loadBitmap(filename, @hue)
end end
end end
def calcParticlePos(i) def calcParticlePos(i)
if @randomhue==1 if @randomhue == 1
filename = (rand(3)==0) ? "explosionsmoke" : "smoke" filename = (rand(3) == 0) ? "explosionsmoke" : "smoke"
@particles[i].bitmap = loadBitmap(filename, @hue) @particles[i].bitmap = loadBitmap(filename, @hue)
end end
multiple = 1.7 multiple = 1.7
xgrav = @xgravity*multiple/@slowdown xgrav = @xgravity * multiple / @slowdown
xgrav = -xgrav if (rand(2)==1) xgrav = -xgrav if rand(2) == 1
ygrav = @ygravity*multiple/@slowdown ygrav = @ygravity * multiple / @slowdown
ygrav = -ygrav if (rand(2)==1) ygrav = -ygrav if rand(2) == 1
@particlex[i] += xgrav @particlex[i] += xgrav
@particley[i] += ygrav @particley[i] += ygrav
@particlex[i] -= @__offsetx @particlex[i] -= @__offsetx
@particley[i] -= @__offsety @particley[i] -= @__offsety
@particlex[i] = @particlex[i].floor @particlex[i] = @particlex[i].floor
@particley[i] = @particley[i].floor @particley[i] = @particley[i].floor
@particles[i].x = @particlex[i]+@startingx+@xoffset @particles[i].x = @particlex[i] + @startingx + @xoffset
@particles[i].y = @particley[i]+@startingy+@yoffset @particles[i].y = @particley[i] + @startingy + @yoffset
end end
end end
class Particle_Engine::Flare < ParticleEffect_Event class Particle_Engine::Flare < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,1,30,10,1,-64, setParameters([0, 0, 1, 30, 10, 1, -64,
Graphics.height,-64,Graphics.width,2,2,-5,-12,30,0]) Graphics.height, -64, Graphics.width, 2, 2, -5, -12, 30, 0])
initParticles("particle",255) initParticles("particle", 255)
end end
end end
class Particle_Engine::Splash < ParticleEffect_Event class Particle_Engine::Splash < ParticleEffect_Event
def initialize(event,viewport) def initialize(event, viewport)
super super
setParameters([0,0,1,30,255,1,-64, setParameters([0, 0, 1, 30, 255, 1, -64,
Graphics.height,-64,Graphics.width,4,2,-5,-12,30,0]) Graphics.height, -64, Graphics.width, 4, 2, -5, -12, 30, 0])
initParticles("smoke",50) initParticles("smoke", 50)
end end
def update def update
super super
for i in 0...@maxparticless @maxparticless.times do |i|
@particles[i].opacity = 50 @particles[i].opacity = 50
@particles[i].update @particles[i].update
end end
@@ -569,8 +566,9 @@ end
class Game_Event < Game_Character class Game_Event < Game_Character
attr_accessor :pe_refresh attr_accessor :pe_refresh
alias nf_particles_game_map_initialize initialize alias nf_particles_game_map_initialize initialize unless method_defined?(:nf_particles_game_map_initialize)
def initialize(map_id,event,map=nil)
def initialize(map_id, event, map = nil)
@pe_refresh = false @pe_refresh = false
begin begin
nf_particles_game_map_initialize(map_id, event, map) nf_particles_game_map_initialize(map_id, event, map)
@@ -579,7 +577,8 @@ class Game_Event < Game_Character
end end
end end
alias nf_particles_game_map_refresh refresh alias nf_particles_game_map_refresh refresh unless method_defined?(:nf_particles_game_map_refresh)
def refresh def refresh
nf_particles_game_map_refresh nf_particles_game_map_refresh
@pe_refresh = true @pe_refresh = true

View File

@@ -1,5 +1,8 @@
#[FRAME1 [x,y]],[FRAME2 [x,y], etc.] #[FRAME1 [x,y]],[FRAME2 [x,y], etc.]
#
# exact number of pixels that the sprite needs to be moved for each frame
# add 2 pixels on even frames
module Outfit_Offsets module Outfit_Offsets
BASE_OFFSET = [[0, 0], [0, 0], [0, 0], [0, 0]] BASE_OFFSET = [[0, 0], [0, 0], [0, 0], [0, 0]]
@@ -24,4 +27,8 @@ module Outfit_Offsets
BIKE_OFFSETS_RIGHT = [[4, -4], [2, -2], [4, -4], [6, -2]] BIKE_OFFSETS_RIGHT = [[4, -4], [2, -2], [4, -4], [6, -2]]
BIKE_OFFSETS_UP = [[0, -2], [-2, 0], [0, -2], [2, 0]] BIKE_OFFSETS_UP = [[0, -2], [-2, 0], [0, -2], [2, 0]]
FISH_OFFSETS_DOWN = [[0, -6], [0, -2], [0, -8], [2, -6]]
FISH_OFFSETS_LEFT = [[0, -8], [-6, -6], [0, -8], [2, -8]]
FISH_OFFSETS_RIGHT = [[0, -8], [6, -6], [0, -8], [-2, -8]]
FISH_OFFSETS_UP = [[0, -6], [0, -6], [0, -6], [2, -4]]
end end

View File

@@ -28,6 +28,31 @@ class Sprite_Wearable < RPG::Sprite
@sprite.y += offsets_array[current_frame][1] @sprite.y += offsets_array[current_frame][1]
end end
def adjustPositionForScreenScrolling
return if !$game_map.scrolling? && !@was_just_scrolling
if $game_map.scrolling?
@was_just_scrolling=true
else
@was_just_scrolling=false
end
offset_x = 0
offset_y = 0
case $game_map.scroll_direction
when DIRECTION_RIGHT
offset_x=-8
when DIRECTION_LEFT
offset_x=8
when DIRECTION_UP
offset_y=8
@sprite.z+=50 #weird layering glitch for some reason otherwise. It's reset to the correct value in the next animation frame
when DIRECTION_DOWN
offset_y=-8
end
@sprite.x+=offset_x
@sprite.y+=offset_y
end
def set_sprite_position(action, direction, current_frame) def set_sprite_position(action, direction, current_frame)
@sprite.x = @player_sprite.x - @player_sprite.ox @sprite.x = @player_sprite.x - @player_sprite.ox
@sprite.y = @player_sprite.y - @player_sprite.oy @sprite.y = @player_sprite.y - @player_sprite.oy
@@ -72,20 +97,33 @@ class Sprite_Wearable < RPG::Sprite
elsif direction == DIRECTION_UP elsif direction == DIRECTION_UP
apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_UP,current_frame) apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_UP,current_frame)
end end
when "fish"
if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::FISH_OFFSETS_DOWN,current_frame)
elsif direction == DIRECTION_LEFT
apply_sprite_offset( Outfit_Offsets::FISH_OFFSETS_LEFT,current_frame)
elsif direction == DIRECTION_RIGHT
apply_sprite_offset( Outfit_Offsets::FISH_OFFSETS_RIGHT,current_frame)
elsif direction == DIRECTION_UP
apply_sprite_offset( Outfit_Offsets::FISH_OFFSETS_UP,current_frame)
end
else else
@sprite.x = @player_sprite.x - @player_sprite.ox @sprite.x = @player_sprite.x - @player_sprite.ox
@sprite.y = @player_sprite.y - @player_sprite.oy @sprite.y = @player_sprite.y - @player_sprite.oy
end end
adjustPositionForScreenScrolling()
@sprite.y -= 2 if current_frame % 2 == 1 @sprite.y -= 2 if current_frame % 2 == 1
end end
def animate(action)
def animate(action, frame=nil)
@action = action @action = action
current_frame = @player_sprite.character.pattern current_frame = @player_sprite.character.pattern if !frame
direction = @player_sprite.character.direction direction = @player_sprite.character.direction
crop_spritesheet(direction) crop_spritesheet(direction)
set_sprite_position(@action, direction, current_frame)
adjust_layer() adjust_layer()
set_sprite_position(@action, direction, current_frame)
end end
def update(action, filename,color) def update(action, filename,color)

View File

@@ -6,56 +6,56 @@ class Sprite_Hat < Sprite_Wearable
end end
def set_sprite_position(action, direction, current_frame) # def set_sprite_position(action, direction, current_frame)
@sprite.x = @player_sprite.x - @player_sprite.ox # @sprite.x = @player_sprite.x - @player_sprite.ox
@sprite.y = @player_sprite.y - @player_sprite.oy # @sprite.y = @player_sprite.y - @player_sprite.oy
case action # case action
when "run" # when "run"
if direction == DIRECTION_DOWN # if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_DOWN, current_frame) # apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_DOWN, current_frame)
elsif direction == DIRECTION_LEFT # elsif direction == DIRECTION_LEFT
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_LEFT, current_frame) # apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_LEFT, current_frame)
elsif direction == DIRECTION_RIGHT # elsif direction == DIRECTION_RIGHT
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_RIGHT, current_frame) # apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_RIGHT, current_frame)
elsif direction == DIRECTION_UP # elsif direction == DIRECTION_UP
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_UP, current_frame) # apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_UP, current_frame)
end # end
when "surf" # when "surf"
if direction == DIRECTION_DOWN # if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_DOWN,current_frame) # apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_DOWN,current_frame)
elsif direction == DIRECTION_LEFT # elsif direction == DIRECTION_LEFT
apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_LEFT,current_frame) # apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_LEFT,current_frame)
elsif direction == DIRECTION_RIGHT # elsif direction == DIRECTION_RIGHT
apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_RIGHT,current_frame) # apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_RIGHT,current_frame)
elsif direction == DIRECTION_UP # elsif direction == DIRECTION_UP
apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_UP,current_frame) # apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_UP,current_frame)
end # end
when "dive" # when "dive"
if direction == DIRECTION_DOWN # if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_DOWN,current_frame) # apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_DOWN,current_frame)
elsif direction == DIRECTION_LEFT # elsif direction == DIRECTION_LEFT
apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_LEFT,current_frame) # apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_LEFT,current_frame)
elsif direction == DIRECTION_RIGHT # elsif direction == DIRECTION_RIGHT
apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_RIGHT,current_frame) # apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_RIGHT,current_frame)
elsif direction == DIRECTION_UP # elsif direction == DIRECTION_UP
apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_UP,current_frame) # apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_UP,current_frame)
end # end
when "bike" # when "bike"
if direction == DIRECTION_DOWN # if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_DOWN,current_frame) # apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_DOWN,current_frame)
elsif direction == DIRECTION_LEFT # elsif direction == DIRECTION_LEFT
apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_LEFT,current_frame) # apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_LEFT,current_frame)
elsif direction == DIRECTION_RIGHT # elsif direction == DIRECTION_RIGHT
apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_RIGHT,current_frame) # apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_RIGHT,current_frame)
elsif direction == DIRECTION_UP # elsif direction == DIRECTION_UP
apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_UP,current_frame) # apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_UP,current_frame)
end # end
else # else
@sprite.x = @player_sprite.x - @player_sprite.ox # @sprite.x = @player_sprite.x - @player_sprite.ox
@sprite.y = @player_sprite.y - @player_sprite.oy # @sprite.y = @player_sprite.y - @player_sprite.oy
end # end
@sprite.y -= 2 if current_frame % 2 == 1 # @sprite.y -= 2 if current_frame % 2 == 1
end # end
end end

View File

@@ -17,6 +17,7 @@ class Sprite_Player < Sprite_Character
getClothedPlayerSprite(true) getClothedPlayerSprite(true)
end end
def updateCharacterBitmap def updateCharacterBitmap
skinTone = $Trainer.skin_tone ? $Trainer.skin_tone : 0 skinTone = $Trainer.skin_tone ? $Trainer.skin_tone : 0
baseBitmapFilename = getBaseOverworldSpriteFilename(@character_name, skinTone) baseBitmapFilename = getBaseOverworldSpriteFilename(@character_name, skinTone)
@@ -78,9 +79,7 @@ class Sprite_Player < Sprite_Character
return baseBitmap return baseBitmap
end end
def positionHair(baseBitmap, hairBirmap, offset)
baseBitmap.blt(offset[0], offset[1], hairBirmap, hairBirmap.rect)
end
def update def update

View File

@@ -177,7 +177,7 @@ class PokeBattle_Scene
sprite.setBitmapDirectly(generate_front_trainer_sprite_bitmap()) sprite.setBitmapDirectly(generate_front_trainer_sprite_bitmap())
sprite.zoom_x=2 sprite.zoom_x=2
sprite.zoom_y=2 sprite.zoom_y=2
sprite.z=30 + idxTrainer sprite.z=100 + idxTrainer
sprite.mirror =true sprite.mirror =true
@sprites["player_#{idxTrainer + 1}"] = sprite @sprites["player_#{idxTrainer + 1}"] = sprite

View File

@@ -72,7 +72,7 @@ end
def applyRoamWeather() def applyRoamWeather()
return if $game_screen.weather_type != :None return if $game_screen.weather_type != :None
currently_roaming = $PokemonGlobal.roamPosition.keys currently_roaming = getAllCurrentlyRoamingPokemon()
currently_roaming.each do |roamer_id| currently_roaming.each do |roamer_id|
roamer_switch = Settings::ROAMING_SPECIES[roamer_id][2] roamer_switch = Settings::ROAMING_SPECIES[roamer_id][2]
roamer_active = $game_switches[roamer_switch] roamer_active = $game_switches[roamer_switch]

View File

@@ -244,7 +244,7 @@ ItemHandlers::UseInField.copy(:BICYCLE, :RACEBIKE)
ItemHandlers::UseInField.add(:OLDROD, proc { |item| ItemHandlers::UseInField.add(:OLDROD, proc { |item|
notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player) notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player)
if !$game_player.pbFacingTerrainTag.can_fish || (!$PokemonGlobal.surfing && !notCliff) if !$game_player.pbFacingTerrainTag.can_fish || (!$PokemonGlobal.surfing && !notCliff) || $PokemonGlobal.surfing
pbMessage(_INTL("Can't use that here.")) pbMessage(_INTL("Can't use that here."))
next 0 next 0
end end
@@ -257,7 +257,7 @@ ItemHandlers::UseInField.add(:OLDROD, proc { |item|
ItemHandlers::UseInField.add(:GOODROD, proc { |item| ItemHandlers::UseInField.add(:GOODROD, proc { |item|
notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player) notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player)
if !$game_player.pbFacingTerrainTag.can_fish || (!$PokemonGlobal.surfing && !notCliff) if !$game_player.pbFacingTerrainTag.can_fish || (!$PokemonGlobal.surfing && !notCliff) || $PokemonGlobal.surfing
pbMessage(_INTL("Can't use that here.")) pbMessage(_INTL("Can't use that here."))
next 0 next 0
end end
@@ -270,7 +270,7 @@ ItemHandlers::UseInField.add(:GOODROD, proc { |item|
ItemHandlers::UseInField.add(:SUPERROD, proc { |item| ItemHandlers::UseInField.add(:SUPERROD, proc { |item|
notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player) notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player)
if !$game_player.pbFacingTerrainTag.can_fish || (!$PokemonGlobal.surfing && !notCliff) if !$game_player.pbFacingTerrainTag.can_fish || (!$PokemonGlobal.surfing && !notCliff) || $PokemonGlobal.surfing
pbMessage(_INTL("Can't use that here.")) pbMessage(_INTL("Can't use that here."))
next 0 next 0
end end
@@ -1075,6 +1075,8 @@ ItemHandlers::UseOnPokemon.add(:ABILITYCAPSULE, proc { |item, pkmn, scene|
if scene.pbConfirm(_INTL("Would you like to change {1}'s Ability to {2}?", if scene.pbConfirm(_INTL("Would you like to change {1}'s Ability to {2}?",
pkmn.name, newabilname)) pkmn.name, newabilname))
pkmn.ability_index = newabil pkmn.ability_index = newabil
pkmn.ability = GameData::Ability.get((newabil == 0) ? abil1 : abil2).id
#pkmn.ability = GameData::Ability.get((newabil == 0) ? abil1 : abil2).id #pkmn.ability = GameData::Ability.get((newabil == 0) ? abil1 : abil2).id
scene.pbHardRefresh scene.pbHardRefresh
scene.pbDisplay(_INTL("{1}'s Ability changed to {2}!", pkmn.name, newabilname)) scene.pbDisplay(_INTL("{1}'s Ability changed to {2}!", pkmn.name, newabilname))

View File

@@ -18,6 +18,9 @@ def pbLoadTrainer(tr_type, tr_name, tr_version = 0)
raise _INTL("Trainer type {1} does not exist.", tr_type) if !tr_type_data raise _INTL("Trainer type {1} does not exist.", tr_type) if !tr_type_data
tr_type = tr_type_data.id tr_type = tr_type_data.id
trainer_data = getTrainersDataMode.try_get(tr_type, tr_name, tr_version) trainer_data = getTrainersDataMode.try_get(tr_type, tr_name, tr_version)
if !trainer_data
trainer_data = GameData::Trainer.try_get(tr_type, tr_name, tr_version)
end
return (trainer_data) ? trainer_data.to_trainer : nil return (trainer_data) ? trainer_data.to_trainer : nil
end end

View File

@@ -587,6 +587,7 @@ class PokemonMartScreen
@scene.pbStartBuyScene(@stock,@adapter) @scene.pbStartBuyScene(@stock,@adapter)
item=nil item=nil
loop do loop do
pbWait(4)
item=@scene.pbChooseBuyItem item=@scene.pbChooseBuyItem
break if !item break if !item
quantity=0 quantity=0

View File

@@ -5,7 +5,7 @@ class Player < Trainer
attr_accessor :has_snag_machine attr_accessor :has_snag_machine
attr_accessor :seen_purify_chamber attr_accessor :seen_purify_chamber
alias __shadowPkmn__initialize initialize alias __shadowPkmn__initialize initialize unless method_defined?(:__shadowPkmn__initialize)
def initialize(name, trainer_type) def initialize(name, trainer_type)
__shadowPkmn__initialize(name, trainer_type) __shadowPkmn__initialize(name, trainer_type)
@has_snag_machine = false @has_snag_machine = false

View File

@@ -176,11 +176,11 @@ end
def playPokeFluteAnimation def playPokeFluteAnimation
return if $Trainer.outfit != 0 # return if $Trainer.outfit != 0
$game_player.setDefaultCharName("players/pokeflute", 0, false) # $game_player.setDefaultCharName("players/pokeflute", 0, false)
Graphics.update # Graphics.update
Input.update # Input.update
pbUpdateSceneMap # pbUpdateSceneMap
end end
def restoreDefaultCharacterSprite(charset_number = 0) def restoreDefaultCharacterSprite(charset_number = 0)

View File

@@ -30,7 +30,9 @@ next catchRate
}) })
BallHandlers::OnCatch.add(:ABILITYBALL,proc{|ball,battle,pokemon| BallHandlers::OnCatch.add(:ABILITYBALL,proc{|ball,battle,pokemon|
species = getSpecies(dexNum(pokemon)) species = getSpecies(dexNum(pokemon))
pokemon.ability_index= getAbilityIndexFromID(species.hidden_abilities[-1],pokemon) ability = species.hidden_abilities[-1]
pokemon.ability = ability
pokemon.ability_index= getAbilityIndexFromID(ability,pokemon)
}) })
#VIRUS BALL 27 - give pokerus #VIRUS BALL 27 - give pokerus

View File

@@ -1868,13 +1868,27 @@ ItemHandlers::UseInField.add(:DEVONSCOPE, proc { |item|
#TRACKER (for roaming legendaries) #TRACKER (for roaming legendaries)
ItemHandlers::UseInField.add(:REVEALGLASS, proc { |item| ItemHandlers::UseInField.add(:REVEALGLASS, proc { |item|
track_pokemon() track_pokemon()
next true
}) })
ItemHandlers::UseFromBag.add(:REVEALGLASS, proc { |item| ItemHandlers::UseFromBag.add(:REVEALGLASS, proc { |item|
track_pokemon() track_pokemon()
next true
}) })
def getAllCurrentlyRoamingPokemon
currently_roaming = []
Settings::ROAMING_SPECIES.each_with_index do |data, i|
next if !GameData::Species.exists?(data[0])
next if data[2] > 0 && !$game_switches[data[2]] # Isn't roaming
next if $PokemonGlobal.roamPokemon[i] == true # Roaming Pokémon has been caught
currently_roaming << i
end
return currently_roaming
end
def track_pokemon() def track_pokemon()
currently_roaming = $PokemonGlobal.roamPosition.keys currently_roaming = getAllCurrentlyRoamingPokemon()
echoln currently_roaming
weather_data = [] weather_data = []
mapinfos = $RPGVX ? load_data("Data/MapInfos.rvdata") : load_data("Data/MapInfos.rxdata") mapinfos = $RPGVX ? load_data("Data/MapInfos.rvdata") : load_data("Data/MapInfos.rxdata")
currently_roaming.each do |roamer_id| currently_roaming.each do |roamer_id|
@@ -1891,12 +1905,11 @@ def track_pokemon()
end end
weather_data << forecast_msg if forecast_msg && !weather_data.include?(forecast_msg) weather_data << forecast_msg if forecast_msg && !weather_data.include?(forecast_msg)
end end
weather_data << _INTL("No unusual weather patterns have been detected.") if weather_data.empty?
weather_data.each do |message| weather_data.each do |message|
Kernel.pbMessage(message) Kernel.pbMessage(message)
end end
# nbRoaming = 0 # nbRoaming = 0
# if Settings::ROAMING_SPECIES.length == 0 # if Settings::ROAMING_SPECIES.length == 0
# Kernel.pbMessage(_INTL("No roaming Pokémon defined.")) # Kernel.pbMessage(_INTL("No roaming Pokémon defined."))

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 936 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 874 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 906 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 834 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB