class Scene_Battle_TBS
def effect(event=1, effect='', lock='event', x=0, y=0)
@spriteset.add_effect(event, effect, lock, x, y)
end
end
class Spriteset_Battle_GTBS
attr_reader :particles
alias particle_ssm_init initialize
alias particle_ssm_update update
alias particle_ssm_dispose dispose
#-----------------------------------------------------------------------------
def initialize
@particles = []
particle_ssm_init
end
#-----------------------------------------------------------------------------
def dispose
@particles.each{ |d| d.dispose }
particle_ssm_dispose
end
#-----------------------------------------------------------------------------
def update
@particles.each_with_index{ |p,i|
@particles[i].update
if p.opacity == 0
p.dispose
@particles.delete_at(i)
end
}
particle_ssm_update
end
#-----------------------------------------------------------------------------
def add_effect(event=1, effect='', lock='event', x=0, y=0)
case event
when -1
object = $game_player
else
object = $game_map.events[event]
end
case effect
# (sprite, acceleration[x,y], gravity[x,y], opacity[base,loss], blending)
when 'blue'
sprite='star_blue'
add_particles(object, x, y, sprite, [1.00*(-15+rand(30))/10, 1.00*(-15+rand(30))/10], [0,0], [160,5+rand(15)], lock, 1)
when 'red'
sprite='star_red'
add_particles(object, x, y, sprite, [1.00*(-15+rand(30))/10, 1.00*(-15+rand(30))/10], [0,0], [160,5+rand(15)], lock, 1)
when 'green'
sprite='star_green'
add_particles(object, x, y, sprite, [1.00*(-15+rand(30))/10, 1.00*(-15+rand(30))/10], [0,0], [160,5+rand(15)], lock, 1)
when 'yellow'
sprite='star_yellow'
add_particles(object, x, y, sprite, [1.00*(-15+rand(30))/10, 1.00*(-15+rand(30))/10], [0,0], [160,5+rand(15)], lock, 1)
when 'smash'
sprite='smash'
add_particles(object, x, y, sprite, [1.00*(-15+rand(30))/10, 1.00*(-15+rand(30))/10], [0,0], [160,5+rand(15)], lock, 1)
when 'fire'
sprite='particle_yellow'
add_particles(object, x, y, sprite, [(rand(7)-3)*0.2, 0], [0,0.15], [255,8+rand(5)], lock, 1)
when 'fire2'
sprite='particle_orange'
add_particles(object, x, y, sprite, [(rand(7)-3)*0.2, 0], [0,0.15], [255,8+rand(5)], lock, 1)
when 'sparks'
sprite='particle_red'
add_particles(object, x, y, sprite, [0.5*(-25+rand(50))/10, -4], [0,-0.5], [255,20], lock, 1)
when 'smoke'
sprite='smoke'
add_particles(object, x, y, sprite, [0.1*(-25+rand(50))/10, 0], [0,0.13], [128,3], lock, 1)
when 'cells'
sprite='particle_red'
dx = 1.00*(-100 + rand(200))/100
dy = 1.00*(-100 + rand(200))/100
add_particles(object, x, y, sprite, [5*dx, 5*dy], [0.3*dx,0.3*dy], [255,10], lock, 1)
end
end
#-----------------------------------------------------------------------------
def add_particles(object=$game_player, x=0, y=0, sprite='', acc=[0,0], grav=[0,0], opacity=[255,0], lock='event', blend=0)
if lock=='event'
@particles << Particle_Event.new(@viewport1, object, x, y, sprite, acc, grav, opacity, blend)
elsif lock=='screen'
@particles << Particle_Screen.new(@viewport1, object, x, y, sprite, acc, grav, opacity, blend)
end
end
end