- Pokémon Essentials Version
- v18.1 ➖
Since I noticed Carmaniac's Speech Bubbles script wasn't compatible with v18, I've decided to update it!
Instructions:
1) Download the files and place the images in the corresponding folders of Essentials, while ignoring the PokemonMessages text file.
2) Next, add this script in above Main:
How to use:
To call a speech bubble, call the following in a script: pbCallBub(type, eventid)
The type can be either 1 or 2, with 1 being a bubble over the event, and 2 being a normal message box with an arrow, resembling the BW style.
Example of type 1:
Example of type 2:
If you don't want to have to change the event ID every time, you can use @event_id as opposed to the number.
Instructions:
1) Download the files and place the images in the corresponding folders of Essentials, while ignoring the PokemonMessages text file.
2) Next, add this script in above Main:
Code:
PluginManager.register({
:name => "Carmaniac's Speech Bubbles",
:version => "1.1",
:credits => ["Carmaniac","Avery","Boonzeet"],
:link => "https://reliccastle.com/resources/461/"
})
#-------------------------------------------------------------------------------
# Carmaniac's Speech Bubbles for v18
# Updated by Avery
#-------------------------------------------------------------------------------
# To use, call pbCallBub(type, eventID)
#
# Where type is either 1 or 2:
# 1 - floating bubble
# 2 - speech bubble with arrow
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Class modifiers
#-------------------------------------------------------------------------------
class PokemonTemp
attr_accessor :speechbubble_bubble
attr_accessor :speechbubble_vp
attr_accessor :speechbubble_arrow
attr_accessor :speechbubble_outofrange
attr_accessor :speechbubble_talking
end
module MessageConfig
BUBBLETEXTBASE = Color.new(22,22,22)
BUBBLETEXTSHADOW = Color.new(166,160,151)
end
#-------------------------------------------------------------------------------
# Function modifiers
#-------------------------------------------------------------------------------
class Window_AdvancedTextPokemon
def text=(value)
if value != nil && value != "" && $PokemonTemp.speechbubble_bubble && $PokemonTemp.speechbubble_bubble > 0
if $PokemonTemp.speechbubble_bubble == 1
$PokemonTemp.speechbubble_bubble = 0
resizeToFit2(value,400,100)
@x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
@y = $game_map.events[$PokemonTemp.speechbubble_talking].screen_y - (32 + @height)
if @y>(Graphics.height-@height-2)
@y = (Graphics.height-@height)
elsif @y<2
@y=2
end
if @x>(Graphics.width-@width-2)
@x = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_x-@width)
elsif @x<2
@x=2
end
else
$PokemonTemp.speechbubble_bubble = 0
end
end
setText(value)
end
end
def pbRepositionMessageWindow(msgwindow, linecount=2)
msgwindow.height=32*linecount+msgwindow.borderY
msgwindow.y=(Graphics.height)-(msgwindow.height)
if $game_temp && $game_temp.in_battle && !$scene.respond_to?("update_basic")
msgwindow.y=0
elsif $game_system && $game_system.respond_to?("message_position")
case $game_system.message_position
when 0 # up
msgwindow.y=0
when 1 # middle
msgwindow.y=(Graphics.height/2)-(msgwindow.height/2)
when 2
if $PokemonTemp.speechbubble_bubble==1
msgwindow.setSkin("Graphics/windowskins/frlgtextskin")
msgwindow.height = 100
msgwindow.width = 400
elsif $PokemonTemp.speechbubble_bubble==2
msgwindow.setSkin("Graphics/windowskins/frlgtextskin")
msgwindow.height = 102
msgwindow.width = Graphics.width
if $game_player.direction==8
$PokemonTemp.speechbubble_vp = Viewport.new(0, 0, Graphics.width, 280)
msgwindow.y = 6
else
$PokemonTemp.speechbubble_vp = Viewport.new(0, 6 + msgwindow.height, Graphics.width, 280)
msgwindow.y = (Graphics.height - msgwindow.height) - 6
if $PokemonTemp.speechbubble_outofrange==true
msgwindow.y = 6
end
end
else
msgwindow.height = 102
msgwindow.y = Graphics.height - msgwindow.height - 6
end
end
end
if $game_system && $game_system.respond_to?("message_frame")
if $game_system.message_frame != 0
msgwindow.opacity = 0
end
end
if $game_message
case $game_message.background
when 1 # dim
msgwindow.opacity=0
when 2 # transparent
msgwindow.opacity=0
end
end
end
def pbCreateMessageWindow(viewport=nil,skin=nil)
arrow = nil
if $PokemonTemp.speechbubble_bubble==2 && $game_map.events[$PokemonTemp.speechbubble_talking] != nil # Message window set to floating bubble.
if $game_player.direction==8 # Player facing up, message window top.
$PokemonTemp.speechbubble_vp = Viewport.new(0, 104, Graphics.width, 280)
$PokemonTemp.speechbubble_vp.z = 999999
arrow = Sprite.new($PokemonTemp.speechbubble_vp)
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x - Graphics.width
arrow.y = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_y - Graphics.height) - 136
arrow.z = 999999
arrow.bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Arrow4")
arrow.zoom_x = 2
arrow.zoom_y = 2
if arrow.x<-230
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Arrow3")
end
else # Player facing left, down, right, message window bottom.
$PokemonTemp.speechbubble_vp = Viewport.new(0, 0, Graphics.width, 280)
$PokemonTemp.speechbubble_vp.z = 999999
arrow = Sprite.new($PokemonTemp.speechbubble_vp)
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.y = $game_map.events[$PokemonTemp.speechbubble_talking].screen_y
arrow.z = 999999
arrow.bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Arrow1")
if arrow.y>=Graphics.height-120 # Change arrow direction.
$PokemonTemp.speechbubble_outofrange=true
$PokemonTemp.speechbubble_vp.rect.y+=104
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x - Graphics.width
arrow.bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Arrow4")
arrow.y = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_y - Graphics.height) - 136
if arrow.x<-250
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Arrow3")
end
if arrow.x>=256
arrow.x-=15# = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x-Graphics.width
arrow.bitmap = BitmapCache.load_bitmap("Graphics/Pictures/Arrow3")
end
else
$PokemonTemp.speechbubble_outofrange=false
end
arrow.zoom_x = 2
arrow.zoom_y = 2
end
end
$PokemonTemp.speechbubble_arrow = arrow
msgwindow=Window_AdvancedTextPokemon.new("")
if !viewport
msgwindow.z=99999
else
msgwindow.viewport=viewport
end
msgwindow.visible=true
msgwindow.letterbyletter=true
msgwindow.back_opacity=MessageConfig::WindowOpacity
pbBottomLeftLines(msgwindow,2)
$game_temp.message_window_showing=true if $game_temp
$game_message.visible=true if $game_message
skin=MessageConfig.pbGetSpeechFrame() if !skin
msgwindow.setSkin(skin)
return msgwindow
end
def pbDisposeMessageWindow(msgwindow)
$game_temp.message_window_showing=false if $game_temp
$game_message.visible=false if $game_message
msgwindow.dispose
$PokemonTemp.speechbubble_arrow.dispose if $PokemonTemp.speechbubble_arrow
$PokemonTemp.speechbubble_vp.dispose if $PokemonTemp.speechbubble_vp
end
def pbCallBub(status=0,value=0)
$PokemonTemp.speechbubble_talking=get_character(value).id
$PokemonTemp.speechbubble_bubble=status
end
How to use:
To call a speech bubble, call the following in a script: pbCallBub(type, eventid)
The type can be either 1 or 2, with 1 being a bubble over the event, and 2 being a normal message box with an arrow, resembling the BW style.
Example of type 1:
Example of type 2:
If you don't want to have to change the event ID every time, you can use @event_id as opposed to the number.
- Credits
- The script was originally made by Carmaniac. https://www.pokecommunity.com/showthread.php?t=295277
Plug-and-Play version made by Boonzeet, so tysm to him! This wouldn't have been possible without him.