#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>SCRIPT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
# #
# Emotions Script #
# by Ánemus (www.arcadiumrpg.net) #
# #
# This script shows emotions over the player or over the other #
# characters of the map. #
# #
# $scene.emotion(id,ev,image) #
# #
# For any comments: anemus@arcadiumrpg.net #
# #
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>SETTINGS<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
# #
# Number of Repetitions or LOOP: #
# That's the number of times the animation of the emotion will #
# repeat. I recomend 1, because bigger numbers are just way to #
# repetitive. #
LOOP = 1
# #
# Delay: #
# That's the slowness of the animation. I recomend 3 or 4, #
# smaller numbers are like flashes, so they aren't really #
# useful. #
DELAY = 5
# #
# Deafult file for emotions: #
# This is a tool to make it easier to use, this way you just #
# write the id of the animation and the event where you want to #
# show it.
DEFAULTFILE = "Balloon"
# #
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>INSTRUCTIONS<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
# #
# Whenever you want to use it just use Call Script command #
# then write: #
# $scene.emotion(id, ev, image) #
# Being id the number of the emotion in the file (the top one is#
# the 0 and the lowest one the 9), ev the event over which you #
# are showing the emotion (being -1 for the player and any #
# other number for events, and image, that is the image file #
# that you are using for the emotions. This file is to be placed#
# on Pictures folder and should be 256x320 px. #
# #
# Some tips: #
# If you are using the emotion file specified in DEFAULTFILE #
# you dont need to include it in the sentence. #
# $scene.emotion(id, ev) #
# Now if you are using the default file and also placing the #
# emotion on the main character, the sentence is reduced to: #
# $scene.emotion(id) #
# #
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>END<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
#===============================================================#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>CODE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
#===============================================================#
class Sprite_Character < RPG::Sprite
alias :old_updateEmo :update
def update
old_updateEmo
if @frames != nil
@pic.x = (@character.screen_x + 5)
@pic.y = (@character.screen_y - @ph - @ch.to_i+2)
if @frames > (1 + LOOP*7)*DELAY
@pic.zoom_x = 0.6
@pic.zoom_y = 0.6
@pic.opacity = 100
@frames -= 1
return
elsif @frames > (LOOP*7)*DELAY
@pic.zoom_x = 1
@pic.zoom_y = 1
@pic.opacity = 255
@frames -= 1
@iframe = 1
@gota = 0
return
elsif @frames == 0
@frames = nil
@pic.bitmap.dispose
@pic.dispose
@picid = nil
return
else
@pic.bitmap.clear
@pic.bitmap.blt(0,0,RPG::Cache.picture(@picig),Rect.new(@iframe*32, @picid*32, 32, 32))
@pic.zoom_x = 1
@pic.zoom_y = 1
@pic.opacity = 255
@frames -= 1
if @gota == DELAY
@iframe += 1
if @iframe > 7
@iframe = 1
end
@gota = 0
end
@gota +=1
end
end
end
def emotion (id,ig="Balloon",wt=false)
@frames = (2 + LOOP*7)*DELAY
@picid = id > 9 ? 9 : id
@picig = ig
@pic = Sprite.new
@pic.bitmap = Bitmap.new(32,32)
@pic.bitmap.blt(0, 0, RPG::Cache.picture(@picig), Rect.new(0,32*@picid,32,32))
@pic.ox = @pic.bitmap.width / 2
@pic.oy = @ph = @pic.bitmap.height / 2
@pic.z = 100
if wt
return @frames
else
return 0
end
end
def dispose
super
if @pic != nil
@pic.bitmap.dispose
@pic.dispose
end
end
end
class Spriteset_Map
def emotion (id,ev=-1,ig=DEFAULTFILE,wt=false)
if ev.to_i > -1
@frames = @character_sprites[ev].emotion (id,ig,wt)
else
@frames = @character_sprites[@character_sprites.size - 1].emotion(id,ig,wt)
end
return @frames
end
end
class Scene_Map
def emotion (id,ev=-1,ig=DEFAULTFILE,wt=false)
$game_system.map_interpreter.wait_count = @spriteset.emotion (id,ev,ig,wt)
end
end
class Interpreter
def wait_count=(frames)
@wait_count = frames.to_i
end
end