# -*- coding: utf-8 -*-
#==============================================================================
# ** RME Commands
#------------------------------------------------------------------------------
# With :
# Grim (original project)
# Nuki
# Raho
# Help :
# Fabien
# Zeus81
# Joke
# Zangther
# Spyrojojo
#------------------------------------------------------------------------------
# Commands API
# Provide all commands of the EvEx
#==============================================================================
module RMECommands
#--------------------------------------------------------------------------
# * Public Commands
#--------------------------------------------------------------------------
def fadeout(time = 100)
RPG::BGM.fade(time)
RPG::BGS.fade(time)
RPG::ME.fade(time)
Graphics.fadeout(time * Graphics.frame_rate / 1000)
RPG::BGM.stop
RPG::BGS.stop
RPG::ME.stop
end
def fadein(time = 100)
Graphics.fadein(time * Graphics.frame_rate / 1000)
end
def call_common_event(id)
$game_temp.reserve_common_event(id)
end
def max(a, b); [a, b].max; end
def min(a, b); [a, b].min; end
def screen; Game_Screen.get; end
def pictures; screen.pictures; end
def scene; SceneManager.scene; end
def spriteset; scene.spriteset; end
def tilemap; spriteset.tilemap; end
def wait(d); d.times { Fiber.yield}; end
def session_username; USERNAME; end
def length(a); a.length; end
def get(a, i); a[i]; end
def event(id)
if id.is_a?(Array) && id[0] == :follower
e = $game_player.followers[id[1]]
return e if e
raise sprintf("Follower n° %d doesn't exist", id)
end
return $game_player if id == 0
return $game_map.events[id] if $game_map.events[id]
raise sprintf("Event %d doesn't exist", id)
end
def follower(pos)
[:follower, pos]
end
def rm_kill; SceneManager.exit; end
def website(url); Thread.new { system("start #{url}") };end
def split_each_char(str); str.scan(/./); end
def wait_with(time, &block)
time.times do
block.call
Fiber.yield
end
end
def qte(key, time, strict = true)
i = 0
wait_with(time) do
unless strict
return true if Keyboard.trigger?(key) && i > 6
else
c = Keyboard.rgss_current_key(:trigger?)
return c == key if c && i > 6
end
i += 1
end
return false
end
def random_combination(len, *keys)
Array.new(len) {keys[Kernel.rand(keys.length)]}
end
def wait_trigger(key)
wait(1)
Fiber.yield while(!Keyboard.trigger?(key))
end
def wait_release(key)
wait(1)
Fiber.yield while(!Keyboard.release?(key))
end
def pick_random(*args)
if args.length == 1 && args[0].is_a?(Array)
return args[0][Kernel.rand(args[0].length)]
end
args[Kernel.rand(args.length)]
end
def get_tileset_id
$game_map.tileset_id
end
def switch_tileset(tileset_id)
$game_map.tileset_id = tileset_id
end
def set_tile(value, x, y, layer)
$game_map.instance_variable_get(:@map).data[x, y, layer] = value
end
#--------------------------------------------------------------------------
# * Change Message height
#--------------------------------------------------------------------------
def message_height(n)
Window_Message.line_number = n
scene = SceneManager.scene
scene.refresh_message if scene.respond_to?(:refresh_message)
end
def message(value, face_name = nil, face_index = 0, position = 2, background = 0)
if face_name
$game_message.face_name = face_name
$game_message.face_index = face_index
end
$game_message.position = position
$game_message.background = background
$game_message.add(value)
wait_for_message
end
# Fix Username
alias_method :windows_username, :session_username
append_commands
#==============================================================================
# ** Parallaxes
#------------------------------------------------------------------------------
# Parallaxes Commands
#==============================================================================
module Parallaxes
#--------------------------------------------------------------------------
# * Show parallax
#--------------------------------------------------------------------------
def parallax_show(
id,
name,
z = -100,
op = 255,
ax = 0,
ay = 0,
mx = 2,
my = 2,
b = 0,
zx = 100,
zy = 100
)
$game_map.parallaxes[id].show(name, z, op, ax, ay, mx, my, b, zx, zy)
end
#--------------------------------------------------------------------------
# * Move parallax
#--------------------------------------------------------------------------
def parallax_transform(
id,
duration,
wf = false,
zoom_x = 100,
zoom_y = 100,
opacity = 255,
tone = nil,
ease = :linear
)
$game_map.parallaxes[id].move(duration, zoom_x, zoom_y, opacity, tone, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Hide parallax
#--------------------------------------------------------------------------
def parallax_erase(id)
$game_map.parallaxes[id].hide
end
#--------------------------------------------------------------------------
# * Hide all parallax
#--------------------------------------------------------------------------
def parallaxes_clear
$game_map.clear_parallaxes
end
#--------------------------------------------------------------------------
# * Change blend type of a parallax
#--------------------------------------------------------------------------
def parallax_blend(id, v)
$game_map.parallaxes[id].blend_type = v
end
#--------------------------------------------------------------------------
# * Change autospeed_x
#--------------------------------------------------------------------------
def parallax_autoscroll_x(id, v, duration = 0, wf = false, ease = :linear)
$game_map.parallaxes[id].set_transition('autospeed_x', v, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Change autospeed_x
#--------------------------------------------------------------------------
def parallax_autoscroll_y(id, v, duration = 0, wf = false, ease = :linear)
$game_map.parallaxes[id].set_transition('autospeed_y', v, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Change autospeed
#--------------------------------------------------------------------------
def parallax_autoscroll(id, x, y, d = 0, wf = false, ease = :linear)
parallax_autoscroll_x(id, x, d, false, ease)
parallax_autoscroll_y(id, y, d, wf, ease)
end
#--------------------------------------------------------------------------
# * Change z
#--------------------------------------------------------------------------
def parallax_z(id, v)
$game_map.parallaxes[id].z = v
end
#--------------------------------------------------------------------------
# * Change scroll_x
#--------------------------------------------------------------------------
def parallax_scroll_x(id, v)
$game_map.parallaxes[id].move_x = v
end
#--------------------------------------------------------------------------
# * Change scroll_y
#--------------------------------------------------------------------------
def parallax_scroll_y(id, v)
$game_map.parallaxes[id].move_y = v
end
#--------------------------------------------------------------------------
# * Change speed
#--------------------------------------------------------------------------
def parallax_scroll(id, x, y)
parallax_scroll_x(id, x)
parallax_scroll_y(id, y)
end
#--------------------------------------------------------------------------
# * Change zoom_x
#--------------------------------------------------------------------------
def parallax_zoom_x(id, v, duration = 0, wf = false, ease = :linear)
$game_map.parallaxes[id].set_transition('zoom_x', v, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Change zoom_y
#--------------------------------------------------------------------------
def parallax_zoom_y(id, v, duration = 0, wf = false, ease = :linear)
$game_map.parallaxes[id].set_transition('zoom_y', v, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Change zoom
#--------------------------------------------------------------------------
def parallax_zoom(id, v, duration = 0, wf = false, ease = :linear)
parallax_zoom_x(id, v, duration, false, ease)
parallax_zoom_y(id, v, duration, wf, ease)
end
#--------------------------------------------------------------------------
# * Change tone
#--------------------------------------------------------------------------
def parallax_tone(id, tone, duration = 0, wf = false, ease = :linear)
$game_map.parallaxes[id].start_tone_change(tone, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Change opacity
#--------------------------------------------------------------------------
def parallax_opacity(id, v, duration = 0, wf = false, ease = :linear)
$game_map.parallaxes[id].set_transition('opacity', v, duration, ease)
wait(duration) if wf
end
# fix for EE4
alias_method :parallax_scrollspeed, :parallax_scroll
append_commands
end
#==============================================================================
# ** Commands Picture
#------------------------------------------------------------------------------
# Pictures manipulation
#==============================================================================
module Pictures
#--------------------------------------------------------------------------
# * Sprite picture
#--------------------------------------------------------------------------
def sprite_picture(id)
spriteset.picture_sprites[id]
end
#--------------------------------------------------------------------------
# * Picture show
#--------------------------------------------------------------------------
def picture_show(id, n, x=0, y=0, ori=0, z_x=100, z_y=100, op=255, bl=0)
pictures[id].show(n, ori, x, y, z_x, z_y, op, bl)
end
#--------------------------------------------------------------------------
# * Picture erase
#--------------------------------------------------------------------------
def picture_erase(ids)
ids = select_pictures(ids)
ids.each {|id| pictures[id].erase}
end
#--------------------------------------------------------------------------
# * Picture name
#--------------------------------------------------------------------------
def picture_name(id, name = nil)
return pictures[id].name unless name
pictures[id].name = name
end
#--------------------------------------------------------------------------
# * Modify Origin
# Origin : 0 | 1 (0 = Corner High Left, 1 = Center)
#--------------------------------------------------------------------------
def picture_origin(id, *origin)
origin = origin[0] if origin.length == 1
pictures[id].origin = origin
end
#--------------------------------------------------------------------------
# * Modify x position
#--------------------------------------------------------------------------
def picture_x(id, x=false, duration = 0, wf = false, ease = :linear)
return pictures[id].x unless x
pictures[id].set_transition('x', x, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Modify y position
#--------------------------------------------------------------------------
def picture_y(id, y=false, duration = 0, wf = false, ease = :linear)
return pictures[id].y unless y
pictures[id].set_transition('y', y, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Modify position
#--------------------------------------------------------------------------
def picture_position(ids, x, y, duration = 0, wf = false, ease = :linear)
ids = select_pictures(ids)
ids.each do |id|
picture_x(id, x, duration, false, ease)
picture_y(id, y, duration, false, ease)
end
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Move picture
#--------------------------------------------------------------------------
def picture_move(ids, x, y, zoom_x, zoom_y, dur, wf = true, opacity = -1, bt = -1, o = -1, ease = :linear)
ids = select_pictures(ids)
ids.each do |id|
p = pictures[id]
opacity = (opacity == -1) ? p.opacity : opacity
blend = (bt == -1) ? p.blend_type : bt
origin = (o == -1) ? p.origin : o
p.move(origin, x, y, zoom_x, zoom_y, opacity, blend, dur, ease)
end
wait(dur) if wf
end
#--------------------------------------------------------------------------
# * Modify wave
#--------------------------------------------------------------------------
def picture_wave(ids, amp, speed)
ids = select_pictures(ids)
ids.each do |id|
pictures[id].wave_amp = amp
pictures[id].wave_speed = speed
end
end
#--------------------------------------------------------------------------
# * Apply Mirror
#--------------------------------------------------------------------------
def picture_flip(ids)
ids = select_pictures(ids)
ids.each do |id|
pictures[id].mirror = !pictures[id].mirror
end
end
#--------------------------------------------------------------------------
# * Modify Angle
#--------------------------------------------------------------------------
def picture_angle(id, angle=false, duration = 0, wf = false, ease = :linear)
return pictures[id].angle unless angle
pictures[id].set_transition('angle', angle, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Rotate
#--------------------------------------------------------------------------
def picture_rotate(ids, speed)
ids = select_pictures(ids)
ids.each do |id|
pictures[id].rotate(speed)
end
end
#--------------------------------------------------------------------------
# * change Zoom X
#--------------------------------------------------------------------------
def picture_zoom_x(id, zoom_x=false, duration = 0, wf = false, ease = :linear)
return pictures[id].zoom_x unless zoom_x
pictures[id].set_transition('zoom_x', zoom_x, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * change Zoom Y
#--------------------------------------------------------------------------
def picture_zoom_y(id, zoom_y=false, duration = 0, wf = false, ease = :linear)
return pictures[id].zoom_y unless zoom_y
pictures[id].set_transition('zoom_y', zoom_y, duration, ease)
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * change Zoom
#--------------------------------------------------------------------------
def picture_zoom(ids, zoom_x, zoom_y, duration = 0, wf = false, ease = :linear)
select_pictures(ids).each do |id|
picture_zoom_x(id, zoom_x, duration, false, ease)
picture_zoom_y(id, zoom_y, duration, false, ease)
end
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * change Tone
#--------------------------------------------------------------------------
def picture_tone(id, tone, d = 0, wf = false, ease = :linear)
if d.is_a?(Fixnum)
pictures[id].start_tone_change(tone, d, ease)
wait(d) if wf
else
pictures[id].tone = tone
end
end
#--------------------------------------------------------------------------
# * Change blend type
#--------------------------------------------------------------------------
def picture_blend(ids, blend)
select_pictures(ids).each {|id| pictures[id].blend = blend }
end
#--------------------------------------------------------------------------
# * Pin picture on the map
#--------------------------------------------------------------------------
def picture_pin(ids, x=nil, y=nil)
select_pictures(ids).each do |id|
unless x
x_s = 16 * pictures[id].scroll_speed_x
y_s = 16 * pictures[id].scroll_speed_y
x = picture_x(id) + $game_map.display_x * x_s + pictures[id].shake
y = picture_y(id) + $game_map.display_y * y_s
end
picture_x(id, x)
picture_y(id, y)
pictures[id].pin
end
end
#--------------------------------------------------------------------------
# * Unpin picture on the map
#--------------------------------------------------------------------------
def picture_unpin(ids)
select_pictures(ids).each {|id| pictures[id].unpin }
end
#--------------------------------------------------------------------------
# * Check if a picture is in movement
#--------------------------------------------------------------------------
def picture_move?(id)
pictures[id].move?
end
def picture_erased?(id)
pictures[id].name.empty?
end
def picture_showed?(id)
!picture_erased?(id)
end
#--------------------------------------------------------------------------
# * Change Picture Opacity
#--------------------------------------------------------------------------
def picture_opacity(ids, value, duration = 0, wf = false, ease = :linear)
select_pictures(ids).each do |id|
pictures[id].set_transition('opacity', value, duration, ease)
end
wait(duration) if wf
end
#--------------------------------------------------------------------------
# * Shake the picture
#--------------------------------------------------------------------------
def picture_shake(ids, power, speed, duration)
ids.each do |id|
pictures[id].start_shake(power, speed, duration)
end
end
#--------------------------------------------------------------------------
# * Point in picture
#--------------------------------------------------------------------------
def pixel_in_picture?(id, x, y, precise = false)
spr = sprite_picture(id)
return false unless spr
precise ? spr.precise_in?(x, y) : spr.in?(x, y)
end
def picture_mouse_hover?(id, precise = false)
pixel_in_picture?(id, Mouse.x, Mouse.y, precise)
end
def picture_mouse_click?(id, precise = false)
picture_mouse_hover?(id, precise) && Mouse.click?
end
def picture_mouse_press?(id, key = :mouse_left, precise = false)
picture_mouse_hover?(id, precise) && Mouse.press?(key)
end
def picture_mouse_trigger?(id, key = :mouse_left, precise = false)
picture_mouse_hover?(id, precise) && Mouse.trigger?(key)
end
def picture_mouse_repeat?(id, key = :mouse_left, precise = false)
picture_mouse_hover?(id, precise) && Mouse.repeat?(key)
end
def picture_mouse_release?(id, key = :mouse_left, precise = false)
picture_mouse_hover?(id, precise) && Mouse.release?(key)
end
#--------------------------------------------------------------------------
# * Picture collisions
#--------------------------------------------------------------------------
def pictures_collide?(a, b)
spr_a = sprite_picture(a)
spr_b = sprite_picture(b)
return if (!spr_a) || (!spr_b)
spr_a.collide_with?(spr_b)
end
#--------------------------------------------------------------------------
# * Picture collisions (perfect pixel)
#--------------------------------------------------------------------------
def pictures_perfect_collide?(a, b)
spr_a = sprite_picture(a)
spr_b = sprite_picture(b)
return if (!spr_a) || (!spr_b)
spr_a.pixel_collide_with(spr_b)
end
#--------------------------------------------------------------------------
# * Change scroll speed (in X)
#--------------------------------------------------------------------------
def picture_scroll_x(ids, speed = nil)
return pictures[ids].scroll_speed_x unless speed
select_pictures(ids).each {|id| pictures[id].scroll_speed_x = speed}
end
#--------------------------------------------------------------------------
# * Change scroll speed (in Y)
#--------------------------------------------------------------------------
def picture_scroll_y(ids, speed = nil)
return pictures[ids].scroll_speed_y unless speed
select_pictures(ids).each {|id| pictures[id].scroll_speed_y = speed}
end
#--------------------------------------------------------------------------
# * Change scroll speed
#--------------------------------------------------------------------------
def picture_scroll(ids, speed)
select_pictures(ids).each do |id|
picture_scroll_x(id, speed)
picture_scroll_y(id, speed)
end
end
#--------------------------------------------------------------------------
# * Clear all pictures
#--------------------------------------------------------------------------
def pictures_clear
screen.clear_pictures
end
#--------------------------------------------------------------------------
# * Get pictures dimension
#--------------------------------------------------------------------------
def picture_width(id, v = nil, duration = 0, wf = false, ease = :linear)
pict = pictures[id]
unless v
return 0 if !pict || pict.name.empty?
bmp = Sprite_Picture.swap_cache(pict.name)
return (((bmp.width * pict.zoom_x))/100.0).to_i
end
zoom = Command.percent(v, picture_width(id))
picture_zoom_x(id, zoom, duration, wf, ease)
end
#--------------------------------------------------------------------------
# * Get pictures dimension
#--------------------------------------------------------------------------
def picture_height(id, v = nil, duration = 0, wf = false, ease = :linear)
pict = pictures[id]
unless v
return 0 if !pict || pict.name.empty?
bmp = Sprite_Picture.swap_cache(pict.name)
return (((bmp.height * pict.zoom_y))/100.0).to_i
end
zoom = Command.percent(v, picture_height(id))
picture_zoom_y(id, zoom, duration, wf, ease)
end
#--------------------------------------------------------------------------
# * set pictures dimension
#--------------------------------------------------------------------------
def picture_dimension(id, w, h, duration = 0, wf = false, ease = :linear)
picture_width(id, w, duration, false, ease)
picture_height(id, h, duration, wf, ease)
end
# Fix for EE4
alias_method :picture_origine, :picture_origin
alias_method :picture_detach, :picture_unpin
append_commands
end
#==============================================================================
# ** Commands Base
#------------------------------------------------------------------------------
# Basics Commands
#==============================================================================
module Std
#--------------------------------------------------------------------------
# * Random number from a range
#--------------------------------------------------------------------------
def random(min=0, max)
min, max = [min.to_i, max.to_i].sort
min + Kernel.rand(max-min+1)
end
#--------------------------------------------------------------------------
# * Random floating point value between x and its successor
#--------------------------------------------------------------------------
def random_figures(x=0)
x + Kernel.rand
end
#--------------------------------------------------------------------------
# * Return ID of current map
#--------------------------------------------------------------------------
def map_id
$game_map.map_id
end
#--------------------------------------------------------------------------
# * Return map's name
#--------------------------------------------------------------------------
def map_name
$game_map.display_name
end
#--------------------------------------------------------------------------
# * Get Event Id form coords
#--------------------------------------------------------------------------
def id_at(x, y)
result = $game_map.event_id_xy(x, y)
return result if result > 0
return 0 if $game_player.x == x && $game_player.y == y
return -1
end
#--------------------------------------------------------------------------
# * Get terrain Tag from coords
#--------------------------------------------------------------------------
def terrain_tag(x, y)
$game_map.terrain_tag(x, y)
end
#--------------------------------------------------------------------------
# * Get Tile ID from coords and layer (0,1,2)
#--------------------------------------------------------------------------
def tile_id(x, y, layer, map_id = nil)
return $game_map.tile_id(x, y, layer) unless map_id
if !Game_Temp.cached_map || Game_Temp.cached_map[0] != map_id
Game_Temp.cached_map =
[map_id, load_data(sprintf("Data/Map%03d.rvdata2", map_id))]
end
Game_Temp.cached_map[1].data[x, y, layer]
end
#--------------------------------------------------------------------------
# * retreive data about tiles
#--------------------------------------------------------------------------
def wall?(x, y)
tile_id = tile_id(x, y, 0)
tile_id.between?(2288, 2335) || tile_id.between?(2384, 2431) ||
tile_id.between?(2480, 2527) || tile_id.between?(2576, 2623) ||
tile_id.between?(2672, 2719) || tile_id.between?(2768, 2815) ||
tile_id.between?(4736, 5119) || tile_id.between?(5504, 5887) ||
tile_id.between?(6272, 6655) || tile_id.between?(7040, 7423) ||
tile_id > 7807
end
def roof?(x, y)
tile_id = tile_id(x, y, 0)
tile_id.between?(4352, 4735) || tile_id.between?(5120, 5503) ||
tile_id.between?(5888, 6271) || tile_id.between?(6656, 7039) ||
tile_id.between?(7424, 7807)
end
def stair?(x, y)
tile_id = tile_id(x, y, 0)
tile_id.between?(1541, 1542) || tile_id.between?(1549, 1550) ||
tile_id.between?(1600, 1615)
end
def table?(x, y)
tile_id = tile_id(x, y, 0)
tile_id.between?(3152, 3199) || tile_id.between?(3536, 3583) ||
tile_id.between?(3920, 3967) || tile_id.between?(4304, 4351)
end
def ground?(x, y)
tile_id = tile_id(x, y, 0)
(tile_id.between?(2816, 4351) && !table?(x,y)) ||
(tile_id > 1663 && !stair?(x,y))
end
#--------------------------------------------------------------------------
# * Get Region ID from coords
#--------------------------------------------------------------------------
def region_id(x, y)
$game_map.region_id(x, y)
end
#--------------------------------------------------------------------------
# * Check passability
#--------------------------------------------------------------------------
def square_passable?(x, y, d=2)
$game_map.passable?(x, y, d)
end
#--------------------------------------------------------------------------
# * Check wounding
#--------------------------------------------------------------------------
def damage_floor?(x, y)
$game_map.damage_floor?(x, y)
end
#--------------------------------------------------------------------------
# * Get a percent
#--------------------------------------------------------------------------
def percent(value, max)
((value*100.0)/max).to_i
end
#--------------------------------------------------------------------------
# * Get a value from a percent
#--------------------------------------------------------------------------
def apply_percent(percent, max)
((percent*max)/100.0).to_i
end
#--------------------------------------------------------------------------
# * Include event page
#--------------------------------------------------------------------------
def include_page(map_id, ev_id, p_id, if_runnable = false, context=false)
return unless self.class == Game_Interpreter
page = Game_Interpreter.get_page(map_id, ev_id, p_id)
return unless page
if !if_runnable || page_runnable?(map_id, ev_id, page, context)
self.append_interpreter(page)
end
end
#--------------------------------------------------------------------------
# * Invoke Event
#--------------------------------------------------------------------------
def invoke_event(map_id, ev_id, new_id, x=nil, y=nil)
$game_map.add_event(map_id, ev_id, new_id, x, y)
end
#--------------------------------------------------------------------------
# * Get the max Event ID
#--------------------------------------------------------------------------
def max_event_id; $game_map.max_id; end
def fresh_event_id; max_event_id + 1; end
#--------------------------------------------------------------------------
# * Check if a page is runnable
#--------------------------------------------------------------------------
def page_runnable?(map_id, ev_id, page, context=false)
return unless self.class == Game_Interpreter
page = Game_Interpreter.get_page(map_id, ev_id, p_id) if page.is_a?(Fixnum)
return unless page
return Game_Interpreter.conditions_met?(map_id, ev_id, page) if context
c_map_id = Game_Interpreter.current_map_id
c_ev_id = self.event_id
Game_Interpreter.conditions_met?(c_map_id, c_ev_id, page)
end
#--------------------------------------------------------------------------
# * Create a tone
#--------------------------------------------------------------------------
def tone(r, v, b, gray = 0)
Tone.new(r, v, b, gray)
end
#--------------------------------------------------------------------------
# * Create a Color
#--------------------------------------------------------------------------
def color(r, v, b, a = 255)
Color.new(r,v,b,a)
end
def map_width; $game_map.width; end
def map_height; $game_map.height; end
#--------------------------------------------------------------------------
# * Flash a square
#--------------------------------------------------------------------------
def flash_square(x, y, color)
tilemap.flash_data ||= Table.new($game_map.width, $game_map.height)
tilemap.flash_data[x, y] = color.to_hex
end
#--------------------------------------------------------------------------
# * UnFlash a square
#--------------------------------------------------------------------------
def unflash_square(x, y)
flash_square(x, y, Color.new(0, 0, 0))
end
#--------------------------------------------------------------------------
# * Flash rect
#--------------------------------------------------------------------------
def flash_rect(x, y, width, height, color)
(x..x+width).each do |i|
(y..y+height).each do |j|
flash_square(i, j, color)
end
end
end
#--------------------------------------------------------------------------
# * UnFlash rect
#--------------------------------------------------------------------------
def unflash_rect(x, y, width, height)
flash_rect(x, y, width, height, Color.new(0, 0, 0))
end
append_commands
end
#==============================================================================
# ** Commands Device
#------------------------------------------------------------------------------
# Device commands
#==============================================================================
module Device
#--------------------------------------------------------------------------
# * Keyboard support
#--------------------------------------------------------------------------
def key_press?(k); Keyboard.press?(k); end
def key_trigger?(k); Keyboard.trigger?(k); end
def key_release?(k); Keyboard.release?(k); end
def key_repeat?(k); Keyboard.repeat?(k); end
def ctrl?(k=nil); Keyboard.ctrl?(k); end
def keyboard_all?(m, *k); Keyboard.all?(m, *k); end
def keyboard_any?(m, *k); Keyboard.any?(m, *k); end
def caps_lock?; Keyboard.caps_lock?; end
def num_lock?; Keyboard.num_lock?; end
def scroll_lock?; Keyboard.scroll_lock?; end
def shift?; Keyboard.shift?; end
def alt_gr?; Keyboard.alt_gr?; end
def key_time(k); Keyboard.time(k); end
def key_current(*m); Keyboard.current_key(*m); end
def key_current_rgss(*m); Keyboard.rgss_current_key(*m); end
def keyboard_current_digit; Keyboard.current_digit; end
def keyboard_current_char; Keyboard.current_char; end
#--------------------------------------------------------------------------
# * Mouse Support
#--------------------------------------------------------------------------
def mouse_press?(k); Mouse.press?(k); end
def mouse_click?; Mouse.click?; end
def mouse_trigger?(k); Mouse.trigger?(k); end
def mouse_release?(k); Mouse.release?(k); end
def mouse_dragging?; Mouse.dragging?; end
def mouse_repeat?(k); Mouse.repeat?(k); end
def mouse_all?(m, *k); Mouse.all?(m, *k); end
def mouse_any?(m, *k); Mouse.any?(m, *k); end
def mouse_x; Mouse.x; end
def mouse_y; Mouse.y; end
def mouse_point; Mouse.point; end
def mouse_square_x; Mouse.square_x; end
def mouse_square_y; Mouse.square_y; end
def mouse_rect; Mouse.rect; end
def mouse_last_rect; Mouse.last_rect; end
def click_time(k); Mouse.time(k); end
def mouse_in?(rect); Mouse.in?(rect); end
def mouse_current_key(*m) Mouse.current_key(*m); end
def cursor_system(m)
flag = (!!flag) ? 1 : 0
Externlib::ShowCursor.(flag)
end
# Fix for EE4
alias_method :key_number, :keyboard_current_digit
alias_method :key_char, :keyboard_current_char
alias_method :key_char?, :keyboard_current_char
alias_method :maj?, :shift?
alias_method :mouse_x_square, :mouse_square_x
alias_method :mouse_y_square, :mouse_square_y
alias_method :show_cursor_system, :cursor_system
append_commands
end
#==============================================================================
# ** Commands Team
#------------------------------------------------------------------------------
# Team Commands
#==============================================================================
module Party
#--------------------------------------------------------------------------
# * Party data
#--------------------------------------------------------------------------
def team_size; $game_party.members.size; end
def gold; $game_party.gold; end
def steps; $game_party.steps; end
def play_time; (Graphics.frame_count / Graphics.frame_rate); end
def timer; $game_timer.sec; end
def save_count; $game_system.save_count; end
def battle_count; $game_system.battle_count; end
def gain_gold(amount); $game_party.gain_gold(amount); end
def lose_gold(amount); $game_party.lose_gold(amount); end
#--------------------------------------------------------------------------
# * Items
#--------------------------------------------------------------------------
def items_possessed
$game_party.items.map {|i| [i.id] * $game_party.item_number(i)}.flatten
end
def armors_possessed
$game_party.weapons.map {|i| [i.id] * $game_party.item_number(i)}.flatten
end
def weapons_possessed
$game_party.armors.map {|i| [i.id] * $game_party.item_number(i)}.flatten
end
def item_count(id); $game_party.item_number($data_items[id]); end
def weapon_count(id); $game_party.item_number($data_weapons[id]); end
def armor_count(id); $game_party.item_number($data_armors[id]); end
def item_name(id); $data_items[id].name; end
def weapon_name(id); $data_weapons[id].name; end
def armor_name(id); $data_armors[id].name; end
def item_note(id); $data_items[id].note; end
def weapon_note(id); $data_weapons[id].note; end
def armor_note(id); $data_armors[id].note; end
def item_description(id); $data_items[id].description; end
def weapon_description(id); $data_weapons[id].description; end
def armor_description(id); $data_armors[id].description; end
def item_icon(id); $data_items[id].icon_index; end
def weapon_icon(id); $data_weapons[id].icon_index; end
def armor_icon(id); $data_armors[id].icon_index; end
def item_price(id); $data_items[id].price; end
def weapon_price(id); $data_weapons[id].price; end
def armor_price(id); $data_armors[id].price; end
def item_consumable?(id); $data_items[id].consumable; end
def is_key_item?(id); $data_items[id].key_item?; end
def weapon_max_hit_points(id); $data_weapons[id].params[0]; end
def weapon_max_magic_points(id); $data_weapons[id].params[1]; end
def weapon_attack_power(id); $data_weapons[id].params[2]; end
def weapon_defense_power(id); $data_weapons[id].params[3]; end
def weapon_magic_attack_power(id); $data_weapons[id].params[4]; end
def weapon_magic_defense_power(id); $data_weapons[id].params[5]; end
def weapon_agility(id); $data_weapons[id].params[6]; end
def weapon_luck(id); $data_weapons[id].params[7]; end
def armor_max_hit_points(id); $data_armors[id].params[0]; end
def armor_max_magic_points(id); $data_armors[id].params[1]; end
def armor_attack_power(id); $data_armors[id].params[2]; end
def armor_defense_power(id); $data_armors[id].params[3]; end
def armor_magic_attack_power(id); $data_armors[id].params[4]; end
def armor_magic_defense_power(id); $data_armors[id].params[5]; end
def armor_agility(id); $data_armors[id].params[6]; end
def armor_luck(id); $data_armors[id].params[7]; end
# def armor_element_rate(i, actor_id, element_id)
# item = $data_armors[i]
# user = $game_actors[i]
# if item.damage.element_id < 0
# user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements)
# else
# element_rate(item.damage.element_id)
# end
# end
# def weapon_element_rate(i, actor_id, element_id)
# item = $data_weapons[i]
# user = $game_actors[i]
# if item.damage.element_id < 0
# user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements)
# else
# element_rate(item.damage.element_id)
# end
# end
def give_item(id, amount)
item = $data_items[id];
$game_party.gain_item(item, amount)
end
def give_weapon(id, amount, include_equip = false)
item = $data_weapons[id];
$game_party.gain_item(item, amount, include_equip)
end
def give_armor(id, amount, include_equip = false)
item = $data_armors[id];
$game_party.gain_item(item, amount, include_equip)
end
def has_item?(id)
item = $data_items[id]
$game_party.has_item?(item)
end
def has_weapon?(id, include_equip = false)
item = $data_weapons[id]
$game_party.has_item?(item, include_equip)
end
def has_armor?(id, include_equip = false)
item = $data_armors[id]
$game_party.has_item?(item, include_equip)
end
def weapon_equiped?(id, member = nil)
item = $data_weapons[id]
return $game_party.members_equip_include?(item) unless member
$game_actors[member].equips.include?(item)
end
def armor_equiped?(id, member = nil)
item = $data_armors[id]
return $game_party.members_equip_include?(item) unless member
$game_actors[member].equips.include?(item)
end
def weapon_type(id)
i = $data_weapons[id].wtype_id
$data_system.weapon_types[i]
end
def armor_type(id)
i = $data_armors[id].atype_id
$data_system.armor_types[i]
end
def item_scope(id)
$data_items[id].scope
end
def item_has_no_scope?(id)
item_scope(id) == 0
end
def item_for_one_enemy?(id)
item_scope(id) == 1
end
def item_for_all_enemies?(id)
item_scope(id) == 2
end
def item_for_one_random_enemy?(id)
item_scope(id) == 3
end
def item_for_two_random_enemies?(id)
item_scope(id) == 4
end
def item_for_three_random_enemies?(id)
item_scope(id) == 5
end
def item_for_four_random_enemies?(id)
item_scope(id) == 6
end
def item_for_one_ally?(id)
item_scope(id) == 7
end
def item_for_all_allies?(id)
item_scope(id) == 8
end
def item_for_one_dead_ally?(id)
item_scope(id) == 9
end
def item_for_all_dead_allies?(id)
item_scope(id) == 10
end
def item_for_caller?(id)
item_scope(id) == 11
end
def item_occasion(id)
$data_items[id].occasion
end
def item_always_usable?(id)
item_occasion(id) == 0
end
def item_battle_usable?(id)
item_always_usable?(id) || item_occasion(id) == 1
end
def item_menu_usable?(id)
item_always_usable?(id) || item_occasion(id) == 2
end
def item_never_usable?(id)
item_occasion(id) == 3
end
def item_for_opponent?(i); $data_items[i].for_opponent?; end
def item_for_friend?(i); $data_items[i].for_friend?; end
def item_for_dead_friend?(i); $data_items[i].for_dead_friend?; end
def item_for_one?(i); $data_items[i].for_one?; end
def item_for_random?(i); $data_items[i].for_random?; end
def item_for_all?(i); $data_items[i].for_all?; end
def item_need_selection?(i); $data_items[i].need_selection?; end
def item_certain?(i); $data_items[i].certain?; end
def item_physical?(i); $data_items[i].physical?; end
def item_magical?(i); $data_items[i].magical?; end
def item_number_of_targets(i); $data_items[i].number_of_targets; end
def item_speed(i); $data_items[i].speed; end
def item_nb_hits(i); $data_items[i].repeats; end
def item_success_rate(i); $data_items[i].success_rate; end
def item_tp_gain(i); $data_items[i].tp_gain; end
# def item_element_rate(i, actor_id, element_id)
# item = $data_items[i]
# user = $game_actors[i]
# if item.damage.element_id < 0
# user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements)
# else
# element_rate(item.damage.element_id)
# end
# end
append_commands
end
#==============================================================================
# ** Commands System
#------------------------------------------------------------------------------
# System Commands
#==============================================================================
module System
def sys; $data_system; end
def game_title; sys.game_title; end
def version_id; sys.version_id; end
def currency; sys.currency_unit; end
def start_map_id; sys.start_map_id; end
def start_x; sys.start_x; end
def start_y; sys.start_y; end
append_commands
end
#==============================================================================
# ** Database Actor reader
#------------------------------------------------------------------------------
# DatabaseActor commands
#==============================================================================
module Actors
def type_equip(str)
[:Weapon, :Shield, :Head, :Body, :Accessory].index(str)
end
def actor_equip(id, t)
k = $game_actors[id].equips[type_equip(t)]
(k.nil?) ? 0 : k.id
end
def actor_weapon(id); actor_equip(id, :Weapon); end
def actor_shield(id); actor_equip(id, :Shield); end
def actor_head(id); actor_equip(id, :Head); end
def actor_body(id); actor_equip(id, :Body); end
def actor_description(id); $game_actors[id].description; end
def actor_accessory(id); actor_equip(id, :Accessory); end
def actor_has_weapon?(id); actor_weapon(id) != 0; end
def actor_has_shield?(id); actor_shield(id) != 0; end
def actor_has_head?(id); actor_head(id) != 0; end
def actor_has_body?(id); actor_body(id) != 0; end
def actor_has_accessory?(id); actor_accessory(id) != 0; end
def actor_level(id); $game_actors[id].level; end
def actor_level_max(id); $game_actors[id].max_level; end
def actor_exp(id); $game_actors[id].exp; end
def actor_note(id); $game_actors[id].actor.note; end
def actor_hp(id); $game_actors[id].hp; end
def actor_mp(id); $game_actors[id].mp; end
def actor_tp(id); $game_actors[id].tp; end
def actor_max_hp(id); $game_actors[id].mhp; end
def actor_max_mp(id); $game_actors[id].mmp; end
def actor_attack(id); $game_actors[id].atk; end
def actor_defense(id); $game_actors[id].def; end
def actor_magic_attack(id); $game_actors[id].mat; end
def actor_magic_defense(id); $game_actors[id].mdf; end
def actor_agility(id); $game_actors[id].agi; end
def actor_luck(id); $game_actors[id].luk; end
def actor_hit_rate(id); $game_actors[id].hit; end
def actor_evasion_rate(id); $game_actors[id].eva; end
def actor_critical_rate(id); $game_actors[id].cri; end
def actor_critical_evasion_rate(id); $game_actors[id].cev; end
def actor_magical_evasion_rate(id); $game_actors[id].mev; end
def actor_magical_reflection_rate(id); $game_actors[id].mrf; end
def actor_counter_attack_rate(id); $game_actors[id].cnt; end
def actor_hp_regeneration_rate(id); $game_actors[id].hrg; end
def actor_mp_regeneration_rate(id); $game_actors[id].mrg; end
def actor_tp_regeneration_rate(id); $game_actors[id].trg; end
def actor_target_rate(id); $game_actors[id].tgr; end
def actor_guard_effect_rate(id); $game_actors[id].grd; end
def actor_recovery_effect_rate(id); $game_actors[id].rec; end
def actor_pharmacology(id); $game_actors[id].pha; end
def actor_mp_cost_rate(id); $game_actors[id].mcr; end
def actor_tp_charge_rate(id); $game_actors[id].tcr; end
def actor_physical_damage_rate(id); $game_actors[id].pdr; end
def actor_magical_damage_rate(id); $game_actors[id].mdr; end
def actor_floor_damage_rate(id); $game_actors[id].fdr; end
def actor_experience_rate(id); $game_actors[id].exr; end
def actor_name(id); $game_actors[id].name; end
def set_actor_name(id, n); $game_actors[id].name = n; end
def actor_nickname(id); $game_actors[id].nickname; end
def set_actor_nickname(id, n); $game_actors[id].nickname = n; end
def actor_character_name(id); $game_actors[id].character_name; end
def actor_character_index(id); $game_actors[id].character_index; end
def actor_face_name(id); $game_actors[id].face_name; end
def actor_face_index(id); $game_actors[id].face_index; end
def actor_class(id); $game_actors[id].class_id; end
def actor_exp_for_next_level(id); $game_actors[id].next_level_exp; end
def actor_change_equip(id, slot, wp_id)
$game_actors[id].change_equip_by_id(type_equip(slot), wp_id)
end
def actor_equip_weapon(id, wp); actor_equip(id, :Weapon, wp_id); end
def actor_equip_shield(id, wp); actor_equip(id, :Shield, wp_id); end
def actor_equip_head(id, wp); actor_equip(id, :Head, wp_id); end
def actor_equip_body(id, wp); actor_equip(id, :Body, wp_id); end
def actor_equip_accessory(id, wp); actor_equip(id, :Accessory, wp_id); end
def actor_optimize_equipement(id); $game_actors[id].optimize_equipement; end
def actor_level_up(id); $game_actors[id].level_up; end
def actor_level_down(id); $game_actors[id].level_down; end
def actor_give_exp(id, exp); $game_actors[id].gain_exp(exp); end
def actor_learn(id, skill_id); $game_actors[id].learn_skill(skill_id); end
def actor_forget(id, skill_id); $game_actors[id].forget_skill(skill_id); end
def actor_knowns?(id, skill_id); $game_actors[id].skill_learn?($data_skills[skill_id]); end
def actor_set_graphic(character_name, character_index, face_name, face_index)
$game_actors.set_graphic(character_name, character_index, face_name, face_index)
end
def actor_change_appear(id, character_name, character_index, face_name, face_index)
$game_actors[id].set_graphic(character_name, character_index, face_name, face_index)
$game_player.refresh
end
def actor_change_character(id, character_name, character_index)
$game_actors[id].character_name = character_name
$game_actors[id].character_index = character_index
$game_player.refresh
end
def actor_change_face(id, face_name, face_index)
$game_actors[id].face_name = face_name
$game_actors[id].face_index = face_index
$game_player.refresh
end
def actor_skills(id); $game_actors[id].skills.map{|s| s.id}; end
def actor_weapons(id); $game_actors[id].weapons.map{|w| w.id}; end
def actor_armors(id); $game_actors[id].armors.map{|a| a.id}; end
def actor_element_rate(id, element_id)
$game_actors[id].element_rate(element_id)
end
def actor_slot(id)
return 0 unless $game_party.members[id - 1]
$game_party.members[id - 1].id
end
# Fix for EE4
alias_method :actor_experience, :actor_exp
alias_method :actor_exp_rate, :actor_experience_rate
alias_method :actor_magic, :actor_magic_attack
append_commands
end
#==============================================================================
# ** Events positions
#------------------------------------------------------------------------------
# Events positions commands
#==============================================================================
module Events
def event_moving?(id); event(id).moving?; end
def player_moving?; event_moving?(0); end
def event_name(id); event(id).name; end
def event_x(id); event(id).x; end
def event_y(id); event(id).y; end
def event_screen_x(id); event(id).screen_x; end
def event_screen_y(id); event(id).screen_y; end
def event_pixel_y(id)
($game_map.display_y * 32) + event_screen_y(id)
end
def event_pixel_x(id)
($game_map.display_x * 32) + event_screen_x(id)
end
def event_direction(id, value = nil)
return event(id).direction unless value
event(id).set_direction(value)
end
def player_x; event(0).x; end
def player_y; event(0).y; end
def player_screen_x; event(0).screen_x; end
def player_screen_y; event(0).screen_y; end
def player_pixel_x; event_pixel_x(0); end
def player_pixel_y; event_pixel_y(0); end
def player_direction(value = nil) ; event_direction(0, value) end
def distance_between(flag, ev1, ev2)
ev1, ev2 = event(ev1), event(ev2)
args = (ev1.screen_x-ev2.screen_x),(ev1.screen_y-ev2.screen_y)
args = (ev1.x-ev2.x),(ev1.y-ev2.y) if flag == :square
Math.hypot(*args).to_i
end
def squares_between(ev1, ev2); distance_between(:square, ev1, ev2); end
def pixels_between(ev1, ev2); distance_between(:pixel, ev1, ev2); end
def angle_between(ev1, ev2)
ev1, ev2 = event(ev1), event(ev2)
args = (ev2.screen_y-ev1.screen_y),(ev2.screen_x-ev1.screen_x)
- (Math.atan2(*args)*57.29)%360
end
def event_look_at?(ev, to, scope, metric = :square)
if event_direction(ev) == 8
x_axis = event_x(to) == event_x(ev)
y_axis = event_y(ev) > event_y(to)
end
if event_direction(ev) == 2
x_axis = event_x(to) == event_x(ev)
y_axis = event_y(ev) < event_y(to)
end
if event_direction(ev) == 4
x_axis = event_x(to) < event_x(ev)
y_axis = event_y(ev) == event_y(to)
end
if event_direction(ev) == 6
x_axis = event_x(to) > event_x(ev)
y_axis = event_y(ev) == event_y(to)
end
return x_axis && y_axis && (distance_between(metric, ev, to)<=scope)
end
def events_collide?(ev1, ev2)
event1 = event(ev1)
event2 = event(ev2)
flag = case event1.direction
when 2; event2.x == event1.x && event2.y == event1.y+1
when 4; event2.x == event1.x-1 && event2.y == event1.y
when 6; event2.x == event1.x+1 && event2.y == event1.y
when 8; event2.x == event1.x && event2.y == event1.y-1
else; false
end
return flag && !event1.moving?
end
def pixel_in_event?(id, x, y, pr = false)
event(id).pixel_in?(x, y, pr)
end
def pixel_in_player?(x, y, pr = false)
pixel_in_event?(0, x, y, pr)
end
def event_in_screen?(id)
ev = event(id)
check_x = ev.screen_x > 0 && ev.screen_x < Graphics.width
check_y = ev.screen_y > 0 && ev.screen_y < Graphics.height
check_x && check_y
end
def player_in_screen?
event_in_screen?(0)
end
def event_ox(id, value = nil)
return event(id).ox unless value
event(id).ox = value
end
def event_oy(id, value = nil)
return event(id).oy unless value
event(id).oy = value
end
def player_ox(value = nil); event_ox(0, value); end
def player_oy(value = nil); event_oy(0, value); end
def event_zoom_x(id, value = nil)
return event(id).zoom_x unless value
event(id).zoom_x = value
end
def event_zoom_y(id, value = nil)
return event(id).zoom_y unless value
event(id).zoom_y = value
end
def event_zoom(id, value)
event_zoom_x(id, value)
event_zoom_y(id, value)
end
def player_zoom_x(value = nil); event_zoom_x(0, value); end
def player_zoom_y(value = nil); event_zoom_y(0, value); end
def player_zoom(value); event_zoom(0, value); end
def event_restore_origin(id)
event(id).restore_oxy
end
def player_restore_origin; event_restore_origin(0); end
[:last_clicked,
:last_pressed,
:last_triggered,
:last_released ,
:last_repeated,
:last_hovered].each do |m|
define_method("#{m}_event") do
Game_CharacterBase.send(m)
end
end
def events_buzzer_properties(e, amplitude, length)
es = select_events(e)
es.each do |e|
event(e).buzz_amplitude = amplitude
event(e).buzz_length = length
end
end
def followers_buzzer_properties(*ids, amplitude, length)
if ids.length == 0
$game_player.followers.each do |f|
f.buzz_amplitude = amplitude
f.buzz_length = length
end
return
end
ids.each do |i|
e = $game_player.followers[i]
if e
e.buzz_amplitude = amplitude
e.buzz_length = length
end
end
end
def events_buzz(e, duration=16)
es = select_events(e)
es.each do |e|
event(e).buzz = duration
end
end
def followers_buzz(ids, duration=16)
return if !$game_player.followers.visible
if ids.length == 0
$game_player.followers.each do |f|
f.buzz = duration
end
return
end
ids.each do |i|
e = $game_player.followers[i]
e.buzz = duration if e
end
end
def event_erased?(id); event(id).erased?; end
def event_erase(ids)
select_events(ids).not(0).each do |id_event|
event(id_event).erase
end
end
def show_animation(ids, id_animation, wait_flag=false)
character = nil
select_events(ids).each do |id_event|
character = event(id_event)
character.animation_id = id_animation
end
Fiber.yield while character.animation_id > 0 if wait_flag && character
end
def show_balloon(ids, id_balloon, wait_flag=false)
character = nil
select_events(ids).each do |id_event|
character = event(id_event)
character.balloon_id = id_balloon
end
Fiber.yield while character.balloon_id > 0 if wait_flag
end
def event_move_speed(ids, v = nil)
return event(ids).move_speed if !v && ids.is_a?(Fixnum)
select_events(ids).each do |id_event|
event(id_event).move_speed = v
end
end
def player_move_speed(v = nil)
event_move_speed(0, v)
end
def event_move_frequency(ids, f = nil)
return event(ids).move_frequency if !f && ids.is_a?(Fixnum)
select_events(ids).each do |id_event|
event(id_event).move_frequency = f
end
end
def player_move_frequency(f = nil)
event_move_frequency(0, f)
end
def event_move_speed_frequency(ids, v, f)
select_events(ids).each do |id_event|
event(id_event).move_speed = v
event(id_event).move_frequency = f
end
end
def player_move_speed_frequency(v, f)
event_move_speed(0, v)
event_move_frequency(0, f)
end
def event_priority(ids, priority = nil)
return event(ids).priority_type unless !priority && ids.is_a?(Fixnum)
select_events(ids).not(0).each do |id_event|
event(id_event).priority_type = priority
end
end
def event_trigger(ids, trigger = nil)
return event(ids).trigger unless !trigger && ids.is_a?(Fixnum)
select_events(ids).not(0).each do |id_event|
event(id_event).trigger = trigger
end
end
def event_transfert(id, new_x, new_y)
event(id).moveto(new_x, new_y)
end
def player_transfert(new_x, new_y)
event_transfert(0, new_x, new_y)
end
def player_teleport(map_id, x, y, direction, fade_type = 0)
$game_player.reserve_transfer(map_id, x, y, direction)
$game_temp.fade_type = fade_type
Fiber.yield while $game_player.transfer?
end
def event_transparent?(id)
event(id).transparent
end
def player_transparent?
event_transparent?(0)
end
def event_transparent(id)
event(id).transparent = true
end
def player_transparent; event_transparent(0); end
def event_opaque(id)
event(id).transparent = false
end
def player_opaque; event_opaque(0); end
def event_through?(id); event(id).through; end
def player_through?; event_through?(0); end
def event_through(id, flag = true); event(id).through = flag; end
def player_through(flag = true); event_through(flag); end
def event_trail(ids, len, mode = 0, tone = nil)
select_events(ids).each do |id_event|
event(id_event).trails = len
event(id_event).trails_prop = {:blend_type => mode, :tone => tone}
end
end
def player_trail(len, mode = 0, tone = nil)
event_trail(0, len, mode, tone)
end
def event_stop_trail(ids)
select_events(ids).each do |id_event|
event(id_event).trails_signal = true
end
end
def player_stop_trail; event_stop_trail(0); end
def event_brutal_stop_trail(ids)
select_events(ids).each do |id_event|
event(id_event).trails = 0
end
end
def player_brutal_stop_trail; event_brutal_stop_trail(0); end
def event_opacity(ids, value = nil)
return event(ids).opacity unless value
select_events(ids).each do |id_event|
event(id_event).opacity = value
end
end
def player_opacity(value = nil)
event_opacity(0, value)
end
def event_move_with(id, *code)
route = RPG::MoveRoute.new
route.list = code.map {|i| RPG::MoveCommand.new(i)}
event(id).force_move_route(route)
end
def player_move_with(*code)
event_move_with(0, *code)
end
#--------------------------------------------------------------------------
# * Move event to x, y coords
#--------------------------------------------------------------------------
def move_to(id, x, y, w=false, no_t = false); event(id).move_to_position(x, y, w, no_t); end
#--------------------------------------------------------------------------
# * Jump event to x, y coords
#--------------------------------------------------------------------------
def jump_to(id, x, y, w=true); event(id).jump_to(x, y, w); end
# Fix for EE4
alias_method :collide?, :events_collide?
alias_method :look_at, :event_look_at?
alias_method :look_at?, :look_at
alias_method :buzz, :events_buzz
append_commands
end
#==============================================================================
# ** Skills
#------------------------------------------------------------------------------
# Skills commands
#==============================================================================
module Skills
def skill_name(id); $data_skills[id].name; end
def skill_note(id); $data_skills[id].note; end
def skill_description(id); $data_skills[id].description; end
def skill_icon(id); $data_skills[id].icon_index; end
def skill_scope(id)
$data_skills[id].scope
end
def skill_has_no_scope?(id)
skill_scope(id) == 0
end
def skill_for_one_enemy?(id)
skill_scope(id) == 1
end
def skill_for_all_enemies?(id)
skill_scope(id) == 2
end
def skill_for_one_random_enemy?(id)
skill_scope(id) == 3
end
def skill_for_two_random_enemies?(id)
skill_scope(id) == 4
end
def skill_for_three_random_enemies?(id)
skill_scope(id) == 5
end
def skill_for_four_random_enemies?(id)
skill_scope(id) == 6
end
def skill_for_one_ally?(id)
skill_scope(id) == 7
end
def skill_for_all_allies?(id)
skill_scope(id) == 8
end
def skill_for_one_dead_ally?(id)
skill_scope(id) == 9
end
def skill_for_all_dead_allies?(id)
skill_scope(id) == 10
end
def skill_for_caller?(id)
skill_scope(id) == 11
end
def skill_occasion(id)
$data_skills[id].occasion
end
def skill_always_usable?(id)
skill_occasion(id) == 0
end
def skill_battle_usable?(id)
skill_always_usable(id) || skill_occasion(id) == 1
end
def skill_menu_usable?(id)
skill_always_usable(id) || skill_occasion(id) == 2
end
def skill_never_usable?(id)
skill_occasion(id) == 3
end
def skill_for_opponent?(i); $data_skills[i].for_opponent?; end
def skill_for_friend?(i); $data_skills[i].for_friend?; end
def skill_for_dead_friend?(i); $data_skills[i].for_dead_friend?; end
def skill_for_one?(i); $data_skills[i].for_one?; end
def skill_for_random?(i); $data_skills[i].for_random?; end
def skill_for_all?(i); $data_skills[i].for_all?; end
def skill_need_selection?(i); $data_skills[i].need_selection?; end
def skill_certain?(i); $data_skills[i].certain?; end
def skill_physical?(i); $data_skills[i].physical?; end
def skill_magical?(i); $data_skills[i].magical?; end
def skill_number_of_targets(i); $data_skills[i].number_of_targets; end
def skill_speed(i); $data_skills[i].speed; end
def skill_nb_hits(i); $data_skills[i].repeats; end
def skill_success_rate(i); $data_skills[i].success_rate; end
def skill_tp_gain(i); $data_skills[i].tp_gain; end
append_commands
end
#==============================================================================
# ** Mathematics
#------------------------------------------------------------------------------
# Math cmds
#==============================================================================
module Mathematics
def pi; Math::PI; end
def acos(x); Math.acos(x); end
def acosh(x); Math.acosh(x); end
def asin(x); Math.asin(x); end
def asinh(x); Math.asinh(x); end
def atan(x); Math.atan(x); end
def atan2(x, y); Math.atan2(x, y); end
def atanh(x); Math.atanh(x); end
def cos(x); Math.cos(x); end
def cosh(x); Math.cosh(x); end
def hypot(x, y); Math.hypot(x, y); end
def sin(x); Math.sin(x); end
def sinh(x); Math.sinh(x); end
def sqrt(x); Math.sqrt(x); end
def tan(x); Math.tan(x); end
def tanh(x); Math.tanh(x); end
def to_deg(x); (x.to_f)*57.2957795; end
def to_rad(x); (x.to_f)/57.2957795; end
# This ugly method is only for preserve the precision !
def mantissa(x)
[0, x.to_s.split('.')[1]].join('.').to_f
end
#--------------------------------------------------------------------------
# * Find angle from a couple of point
#--------------------------------------------------------------------------
def angle_xy(xa, ya, xb, yb)
- Math.atan2(yb-ya, xb-xa)*57.29%360
end
append_commands
end
#==============================================================================
# ** TroopAndEnemy
#------------------------------------------------------------------------------
# cmd about troops
#==============================================================================
module TroopAndEnemy
def enemy(id)
return id.enemy if id.is_a?(Game_Enemy)
$data_enemies[id]
end
def troop(id); $data_troops[id]; end
def troop_size(id); troop(id).members.length; end
def troop_name(id); troop(id).name; end
def troop_members(id); troop(id).members.collect{|e| e.enemy_id}; end
def troop_member(id, pos); troop_members(id)[pos]; end
def troop_member_x(id, pos); troop(id).members[pos].x; end
def troop_member_y(id, pos); troop(id).members[pos].y; end
def picture_show_enemy(id_pic, id, pos)
x = troop_member_x(id, pos)
y = troop_member_y(id, pos)
enemy = enemy(troop_member(id, pos))
picture = enemy.battler_name
picture_name = "Battlers/"+picture
bmp = Cache.battler(picture, enemy.battler_hue)
w, h = bmp.width/2, bmp.height
c(:picture_show, id_pic, picture_name, x, y, [w, h])
end
def monster_battler_dimension(pos)
enemy = enemy(troop_member(current_troop, pos))
picture = enemy.battler_name
picture_name = "Battlers/"+picture
bmp = Cache.battler(picture, enemy.battler_hue)
return [bmp.width, bmp.height]
end
def monster_battler_width(i); monster_battler_dimension(i)[0]; end
def monster_battler_height(i); monster_battler_dimension(i)[1]; end
def monster_name(id); enemy(id).name; end
def monster_icon(id); enemy(id).icon_index; end
def monster_description(id); enemy(id).description; end
def monster_note(id); enemy(id).note; end
def monster_max_hp(id); enemy(id).params[0]; end
def monster_max_mp(id); enemy(id).params[1]; end
def monster_attack_power(id); enemy(id).params[2]; end
def monster_defense_power(id); enemy(id).params[3]; end
def monster_magic_attack_power(id); enemy(id).params[4]; end
def monster_magic_defense_power(id); enemy(id).params[5]; end
def monster_agility(id); enemy(id).params[6]; end
def monster_luck(id); enemy(id).params[7]; end
def monster_give_exp(id); enemy(id).exp; end
def monster_give_gold(id); enemy(id).gold; end
def monster_battler_name(id); enemy(id).battler_name; end
def monster_battler_hue(id); enemy(id).battler_hue; end
def current_troop; Kernel.current_troop; end
# def monster_element_rate(id, element_id)
# enemy(id).element_rate(element_id)
# end
# Fix for EE4
alias_method :monster_attack, :monster_attack_power
alias_method :monster_magic_attack, :monster_magic_attack_power
alias_method :monster_magic_defense, :monster_magic_defense_power
alias_method :monster_defense, :monster_defense_power
alias_method :monster_hp, :monster_max_hp
alias_method :monster_mp, :monster_max_mp
alias_method :troop_member_id, :troop_member
def enemy_hp(id); $game_troop.members[id].hp; end
def enemy_mp(id); $game_troop.members[id].mp; end
def enemy_tp(id); $game_troop.members[id].tp; end
def enemy_max_hp(id); $game_troop.members[id].mhp; end
def enemy_max_mp(id); $game_troop.members[id].mmp; end
def enemy_attack(id); $game_troop.members[id].atk; end
def enemy_defense(id); $game_troop.members[id].def; end
def enemy_magic_attack(id); $game_troop.members[id].mat; end
def enemy_magic_defense(id); $game_troop.members[id].mdf; end
def enemy_agility(id); $game_troop.members[id].agi; end
def enemy_luck(id); $game_troop.members[id].luk; end
def enemy_hit_rate(id); $game_troop.members[id].hit; end
def enemy_evasion_rate(id); $game_troop.members[id].eva; end
def enemy_critical_rate(id); $game_troop.members[id].cri; end
def enemy_critical_evasion_rate(id); $game_troop.members[id].cev; end
def enemy_magical_evasion_rate(id); $game_troop.members[id].mev; end
def enemy_magical_reflection_rate(id); $game_troop.members[id].mrf; end
def enemy_counter_attack_rate(id); $game_troop.members[id].cnt; end
def enemy_hp_regeneration_rate(id); $game_troop.members[id].hrg; end
def enemy_mp_regeneration_rate(id); $game_troop.members[id].mrg; end
def enemy_tp_regeneration_rate(id); $game_troop.members[id].trg; end
def enemy_target_rate(id); $game_troop.members[id].tgr; end
def enemy_guard_effect_rate(id); $game_troop.members[id].grd; end
def enemy_recovery_effect_rate(id); $game_troop.members[id].rec; end
def enemy_pharmacology(id); $game_troop.members[id].pha; end
def enemy_mp_cost_rate(id); $game_troop.members[id].mcr; end
def enemy_tp_charge_rate(id); $game_troop.members[id].tcr; end
def enemy_physical_damage_rate(id); $game_troop.members[id].pdr; end
def enemy_magical_damage_rate(id); $game_troop.members[id].mdr; end
def enemy_floor_damage_rate(id); $game_troop.members[id].fdr; end
def enemy_experience_rate(id); $game_troop.members[id].exr; end
def enemy_hidden?(id); $game_troop.members[id].hidden?; end
def enemy_die?(id); $game_troop.members[id].hp <= 0; end
def current_enemies; $game_troop.members; end
def total_enemies; $game_troop.members.size; end
def active_actor
return BattleManager.actor.id if BattleManager.actor
nil
end
def active_actor?; !!active_actor; end
append_commands
end
#==============================================================================
# ** Texts
#------------------------------------------------------------------------------
# cmd about texts
#==============================================================================
module Texts
#--------------------------------------------------------------------------
# * Display a text
#--------------------------------------------------------------------------
def text_show(id, *args)
Game_Screen.get.texts[id].show(*args)
end
#--------------------------------------------------------------------------
# * Texte movement
#--------------------------------------------------------------------------
def text_move(id, duration, wait_flag, x, y, zoom_x = -1,
zoom_y = -1, opacity = -1, blend_type = -1, origin = -1)
Game_Screen.get.texts[id].move(
duration, x, y, zoom_x, zoom_y, opacity,
blend_type, origin
)
wait(duration) if wait_flag
end
def text_move?(id)
Game_Screen.get.texts[id].move?
end
#--------------------------------------------------------------------------
# * Erase
#--------------------------------------------------------------------------
def text_erase(id)
Game_Screen.get.texts[id].erase
end
#--------------------------------------------------------------------------
# * Change text
#--------------------------------------------------------------------------
def text_change(id, value)
Game_Screen.get.texts[id].text_value = value
end
#--------------------------------------------------------------------------
# * Change profile
#--------------------------------------------------------------------------
def text_profile(id, profile = nil)
return Game_Screen.get.texts[id].profile unless profile
Game_Screen.get.texts[id].profile = profile
end
#--------------------------------------------------------------------------
# * Rotation
#--------------------------------------------------------------------------
def text_rotate(id, speed)
Game_Screen.get.texts[id].rotate(speed)
end
#--------------------------------------------------------------------------
# * Modify x position
#--------------------------------------------------------------------------
def text_x(id, x=false, duration = nil, wf = false)
return Game_Screen.get.texts[id].x unless x
if duration.is_a?(Fixnum)
Game_Screen.get.texts[id].target_x = x
Game_Screen.get.texts[id].duration = duration
wait(duration) if wf
else
Game_Screen.get.texts[id].x = x
end
end
#--------------------------------------------------------------------------
# * Modify y position
#--------------------------------------------------------------------------
def text_y(id, y=false, duration = nil, wf = false)
return Game_Screen.get.texts[id].y unless y
if duration.is_a?(Fixnum)
Game_Screen.get.texts[id].target_y = y
Game_Screen.get.texts[id].duration = duration
wait(duration) if wf
else
Game_Screen.get.texts[id].y = y
end
end
#--------------------------------------------------------------------------
# * change position
#--------------------------------------------------------------------------
def text_position(id, x, y, duration = nil, wf = false)
text_x(id, x, duration)
text_y(id, y, duration, wf)
end
#--------------------------------------------------------------------------
# * Modify zoom x
#--------------------------------------------------------------------------
def text_zoom_x(id, x=false, duration = nil, wf = false)
return Game_Screen.get.texts[id].zoom_x unless x
if duration.is_a?(Fixnum)
Game_Screen.get.texts[id].target_zoom_x = x
Game_Screen.get.texts[id].duration = duration
wait(duration) if wf
else
Game_Screen.get.texts[id].zoom_x = x
end
end
#--------------------------------------------------------------------------
# * Modify zoom y
#--------------------------------------------------------------------------
def text_zoom_y(id, y=false, duration = nil, wf = false)
return Game_Screen.get.texts[id].zoom_y unless y
if duration.is_a?(Fixnum)
Game_Screen.get.texts[id].target_zoom_y = y
Game_Screen.get.texts[id].duration = duration
wait(duration) if wf
else
Game_Screen.get.texts[id].zoom_y = y
end
end
#--------------------------------------------------------------------------
# * change zoom
#--------------------------------------------------------------------------
def text_zoom(id, x, y, duration = nil, wf = false)
text_zoom_x(id, x, duration)
text_zoom_y(id, y, duration, wf)
end
#--------------------------------------------------------------------------
# * Change Text Opacity
#--------------------------------------------------------------------------
def text_opacity(id, value = nil, duration = nil, wf = false)
return Game_Screen.get.texts[id].opacity unless value
if duration.is_a?(Fixnum)
Game_Screen.get.texts[id].target_opacity = value
Game_Screen.get.texts[id].opacity_duration = duration
wait(duration) if wf
else
Game_Screen.get.texts[id].opacity = value
end
end
def text_value(id)
Game_Screen.get.texts[id].text_value
end
def text_angle(id, value = nil)
return Game_Screen.get.texts[id].angle unless value
Game_Screen.get.texts[id].angle = value
end
#--------------------------------------------------------------------------
# * Clear all texts
#--------------------------------------------------------------------------
def texts_clear; Game_Screen.get.clear_texts; end
append_commands
end
#==============================================================================
# ** Time
#------------------------------------------------------------------------------
# cmd about Time
#==============================================================================
module CmdTime
#--------------------------------------------------------------------------
# * Get the current year
#--------------------------------------------------------------------------
def time_year; Time.now.year ;end
#--------------------------------------------------------------------------
# * Get the current month
#--------------------------------------------------------------------------
def time_month; Time.now.month; end
#--------------------------------------------------------------------------
# * Get the current day
#--------------------------------------------------------------------------
def time_day; Time.now.day; end
#--------------------------------------------------------------------------
# * Get the current hour
#--------------------------------------------------------------------------
def time_hour; Time.now.hour; end
#--------------------------------------------------------------------------
# * Get the current min
#--------------------------------------------------------------------------
def time_min; Time.now.min; end
#--------------------------------------------------------------------------
# * Get the current sec
#--------------------------------------------------------------------------
def time_sec; Time.now.sec; end
append_commands
end
#==============================================================================
# ** Socket
#------------------------------------------------------------------------------
# cmd about Socket
#==============================================================================
module TCP
#--------------------------------------------------------------------------
# * Check Socket
#--------------------------------------------------------------------------
def socket_connected?
Socket.instance && Socket.instance.connected?
end
#--------------------------------------------------------------------------
# * Connect to serveur
#--------------------------------------------------------------------------
def socket_connect(address, port)
Socket.instance.close if socket_connected?
Socket.instance = Socket.new(address, port)
Socket.instance.connect!
end
#--------------------------------------------------------------------------
# * Disconnect of serveur
#--------------------------------------------------------------------------
def socket_disconnect
Socket.instance.close
end
#--------------------------------------------------------------------------
# * Send data
#--------------------------------------------------------------------------
def socket_send(data)
return unless socket_connected?
Socket.instance.send(data)
end
#--------------------------------------------------------------------------
# * Recv data
#--------------------------------------------------------------------------
def socket_recv(len = 1024)
return false unless socket_connected?
Socket.instance.recv(len)
end
#--------------------------------------------------------------------------
# * Wait a response
#--------------------------------------------------------------------------
def socket_wait_recv(len = 1024)
return false unless socket_connected?
flag = false
while !flag
Graphics.update
Input.update
flag = socket_recv(len)
end
flag
end
## EE4 fixtures
alias_method :server_single_close_connection, :socket_disconnect
alias_method :server_single_connect, :socket_connect
alias_method :server_single_recv, :socket_recv
alias_method :server_single_send, :socket_send
alias_method :server_single_wait_recv, :socket_wait_recv
append_commands
end
#==============================================================================
# ** Scene
#------------------------------------------------------------------------------
# cmd about scene navigation
#==============================================================================
module Scene
#--------------------------------------------------------------------------
# * Go to title Screen
#--------------------------------------------------------------------------
def call_title_screen
SceneManager.call(Scene_Title)
end
#--------------------------------------------------------------------------
# * Go to Load Screen
#--------------------------------------------------------------------------
def call_load_screen
SceneManager.call(Scene_Load)
end
#--------------------------------------------------------------------------
# * call scene
#--------------------------------------------------------------------------
def scene_call(scene)
SceneManager.call(scene)
end
#--------------------------------------------------------------------------
# * Goto scene
#--------------------------------------------------------------------------
def scene_goto(scene)
SceneManager.goto(scene)
end
#--------------------------------------------------------------------------
# * Return scene
#--------------------------------------------------------------------------
def scene_return
SceneManager.return
end
#--------------------------------------------------------------------------
# * Clear scene history
#--------------------------------------------------------------------------
def scene_clear_history
SceneManager.clear
end
append_commands
end
#==============================================================================
# ** Save
#------------------------------------------------------------------------------
# cmd about saves
#==============================================================================
module Save
#--------------------------------------------------------------------------
# * Start new Game from the RMVXAce Editor
#--------------------------------------------------------------------------
def start_new_game
DataManager.setup_new_game
SceneManager.goto(Scene_Map)
$game_map.autoplay
end
#--------------------------------------------------------------------------
# * Save Game
#--------------------------------------------------------------------------
def save_game(index)
DataManager.save_game(index - 1)
end
#--------------------------------------------------------------------------
# * Load Game
#--------------------------------------------------------------------------
def load_game(index, time=100)
DataManager.load_game(index-1)
fadeout(time)
$game_system.on_after_load
SceneManager.goto(Scene_Map)
end
#--------------------------------------------------------------------------
# * Determine if save exists
#--------------------------------------------------------------------------
def a_save_exists?
DataManager.save_file_exists?
end
#--------------------------------------------------------------------------
# * Determine if save exists
#--------------------------------------------------------------------------
def save_exists?(index)
File.exists?(DataManager.make_filename(index-1))
end
#--------------------------------------------------------------------------
# * Delete save
#--------------------------------------------------------------------------
def save_delete(index)
DataManager.delete_save_file(index-1)
end
#--------------------------------------------------------------------------
# * Import_data
#--------------------------------------------------------------------------
def import_variable(ids, idvar); DataManager.export(ids-1)[:variables][idvar]; end
def import_switch(ids, idswitch); DataManager.export(ids-1)[:switches][idswitch]; end
def import_label(ids, idlabel); DataManager.export(ids-1)[:labels][idlabel]; end
# Fix for EE4
alias_method :delete_save, :save_delete
append_commands
end
#==============================================================================
# ** Areas
#------------------------------------------------------------------------------
# Areas commands
#==============================================================================
module AreaCmds
def create_rect_area(x, y, width, height); Area::Rect.new(x, y, width, height); end
def create_circle_area(x, y, rayon); Area::Circle.new(x, y, rayon); end
def create_ellipse_area(x, y, width, height); Area::Ellipse.new(x, y, width, height); end
def create_polygon_area(*points); Area::Polygon.new(*points); end
def in_area?(area, x, y); area.in?(x, y); end
def mouse_hover_area?(area); area.hover?; end
def mouse_hover_square_area?(area); area.square_hover?; end
def mouse_click_area?(area, k=nil); area.click?; end
def mouse_click_square_area?(area, k=nil); area.square_click?; end
def mouse_trigger_area?(area, k=:mouse_left)
area.trigger?(k)
end
def mouse_trigger_square_area?(area, k=:mouse_left)
area.square_trigger?(k)
end
def mouse_press_area?(area, k=:mouse_left)
area.press?(k)
end
def mouse_press_square_area?(area, k=:mouse_left)
area.square_press?(k)
end
def mouse_release_area?(area, k=:mouse_left)
area.release?(k)
end
def mouse_release_square_area?(area, k=:mouse_left)
area.square_release?(k)
end
def mouse_repeat_area?(area, k=:mouse_left)
area.repeat?(k)
end
def mouse_repeat_square_area?(area, k=:mouse_left)
area.square_repeat?(k)
end
# EE4 compatibilities
alias_method :mouse_square_hover_area?, :mouse_hover_square_area?
alias_method :mouse_clicked_area?, :mouse_click_area?
alias_method :mouse_square_clicked_area?, :mouse_click_square_area?
alias_method :mouse_triggered_area?, :mouse_trigger_area?
alias_method :mouse_square_triggered_area?, :mouse_trigger_square_area?
alias_method :mouse_pressed_area?, :mouse_press_area?
alias_method :mouse_square_pressed_area?, :mouse_press_square_area?
alias_method :mouse_released_area?, :mouse_release_area?
alias_method :mouse_square_released_area?, :mouse_release_square_area?
alias_method :mouse_repeated_area?, :mouse_repeat_area?
alias_method :mouse_square_repeated_area?, :mouse_repeat_square_area?
append_commands
end
#==============================================================================
# ** Clipboard
#------------------------------------------------------------------------------
# Clipboar commands
#==============================================================================
module RMEClipboard
def clipboard_push_text(text); Clipboard.push_text(text); end
def clipboard_get_text; Clipboard.get_text; end
def clipboard_push_command(cmd); Clipboard.push_command(cmd); end
append_commands
end
#==============================================================================
# ** Pad360
#------------------------------------------------------------------------------
# Vibration commands
#==============================================================================
module Pad360
def pad360_plugged?(id = 0); Devices::XBOX360Pad.plugged?(id); end
def pad360_stop_vibration_left(id = 0)
Devices::XBOX360Pad.stop_left_vibration(id)
end
def pad360_stop_vibration_right(id = 0)
Devices::XBOX360Pad.stop_right_vibration(id)
end
def pad360_vibrate(id = 0, left = 100, right = 100)
Devices::XBOX360Pad.left_vibration(id, left)
Devices::XBOX360Pad.right_vibration(id, right)
end
def pad360_stop_vibration(id = 0)
Devices::XBOX360Pad.stop_left_vibration(id)
Devices::XBOX360Pad.stop_right_vibration(id)
end
def pad360_vibrate_left(id = 0, s = 100)
Devices::XBOX360Pad.left_vibration(id, s)
end
def pad360_vibrate_right(id = 0, s = 100)
Devices::XBOX360Pad.right_vibration(id, s)
end
append_commands
end
#==============================================================================
# ** Textfields
#------------------------------------------------------------------------------
# Textfields commands
#==============================================================================
module Textfields
def scene; SceneManager.scene; end
def textfield_text_show(id, text, x, y, w, profile, range = false, active = true, op = 255)
scene.add_textfield(id, UI::Window_Textfield.new(x, y, w, text, profile, range))
textfield_opacity(id, op)
textfield_activate(id)
end
def textfield_int_show(id, number, x, y, w, profile, range = false, active = true, op = 255)
scene.add_textfield(id, UI::Window_Intfield.new(x, y, w, text, profile, range))
textfield_opacity(id, op)
textfield_activate(id)
end
def textfield_float_show(id, number, x, y, w, profile, range = false, active = true, op = 255)
scene.add_textfield(id, UI::Window_Floatfield.new(x, y, w, text, profile, range))
textfield_opacity(id, op)
textfield_activate(id)
end
def textfield_erase(id = nil)
unless id
scene.erase_textfields
return
end
scene.erase_textfield(id)
end
def textfield_activate(id)
scene.unactivate_textfields
scene.textfields[id].activate if scene.textfields[id]
end
def textfield_deactivate(id = nil)
unless id
scene.unactivate_textfields
return
end
scene.textfields[id].deactivate if scene.textfields[id]
end
def textfield_active?(id)
return scene.textfields[id].active? if scene.textfields[id]
false
end
def textfield_get_value(id)
return scene.textfields[id].value if scene.textfields[id]
""
end
def textfield_set_value(id, value)
scene.textfields[id].value = value if scene.textfields[id]
end
def textfield_hover?(id)
return scene.textfields[id].in?(Mouse.x, Mouse.y) if scene.textfields[id]
false
end
def textfield_click?(id)
textfield_hover?(id) && Mouse.click?
end
[:press?, :release?, :trigger?, :repeat?].each do |m|
define_method("textfield_#{m}") do |id, *key|
key = key[0] || :mouse_left
textfield_hover?(id) && Mouse.send(m, key)
end
end
def textfield_visible(id, flag)
scene.textfields[id].visibility = !!flag if scene.textfields[id]
end
def textfield_visible?(id)
return scene.textfields[id].visible if scene.textfields[id] && !scene.textfields[id].disposed?
false
end
def textfield_opacity(id, opacity = nil)
if scene.textfields[id]
return scene.textfields[id].opacity unless opacity
scene.textfields[id].opacity = opacity%256
end
0
end
append_commands
end
#==============================================================================
# ** CmdSounds
#------------------------------------------------------------------------------
# Command for Sound manipulation
#==============================================================================
class RPG::BGM
attr_accessor :name
end
module CmdSounds
def bgm_play(name, volume=100, pitch=100)
RPG::BGM.new(name, volume, pitch).play
end
def bgs_play(name, volume=80, pitch=100)
RPG::BGS.new(name, volume, pitch).play
end
def se_play(name, volume=80, pitch=100)
RPG::SE.new(name, volume, pitch).play
end
def me_play(name, volume=100, pitch=100)
RPG::ME.new(name, volume, pitch).play
end
def bgm_volume(volume)
RPG::BGM.last.replay.volume = volume
end
def bgs_volume(volume)
RPG::BGS.last.replay.volume = volume
end
def bgm_pitch(pitch)
RPG::BGM.last.replay.pitch = pitch
end
def bgs_pitch(pitch)
RPG::BGS.last.replay.pitch = pitch
end
def bgm_fade(wait, frame=false)
wait *= frame ? 17 : 1000
RPG::BGM.fade(wait)
end
def bgs_fade(wait, frame=false)
wait *= frame ? 17 : 1000
RPG::BGS.fade(wait)
end
def me_fade(wait, frame=false)
wait *= frame ? 17 : 1000
RPG::ME.fade(wait)
end
def sound_fade(wait, frame=false)
wait *= frame ? 17 : 1000
RPG::BGM.fade(wait)
RPG::BGS.fade(wait)
RPG::ME.fade(wait)
end
def bgm_stop; RPG::BGM.stop; end
def bgs_stop; RPG::BGS.stop; end
def se_stop; RPG::SE.stop; end
def me_stop; RPG::ME.stop; end
def sound_stop
RPG::BGM.stop
RPG::BGS.stop
RPG::SE.stop
RPG::ME.stop
end
def save_bgm; $game_system.save_bgm; end
def replay_bgm; $game_system.replay_bgm; end
append_commands
end
#==============================================================================
# ** Camera
#------------------------------------------------------------------------------
# Command for Camera manipulation
#==============================================================================
module Camera
CENTER_X = (Graphics.width / 32 - 1) / 2.0
CENTER_Y = (Graphics.height / 32 - 1) / 2.0
def camera_scroll(direction, distance, speed)
Fiber.yield while $game_map.scrolling?
$game_map.start_scroll(direction, distance, speed)
end
def camera_move_on(x, y)
$game_map.set_display_pos(x-CENTER_X, y-CENTER_Y)
end
def camera_scroll_on(x, y, speed)
Fiber.yield while $game_map.scrolling?
camera_scroll(((dx = $game_map.display_x) > x)?4:6, (dx-x).abs-CENTER_X, speed)
Fiber.yield while $game_map.scrolling?
camera_scroll(((dy = $game_map.display_y) > y)?8:2, (dy-y).abs-CENTER_Y, speed)
end
def camera_lock; $game_map.target_camera = nil; end
def camera_unlock; $game_map.target_camera = $game_player; end
def camera_change_focus(event_id)
e = event(event_id)
camera_move_on(e.x, e.y)
$game_map.target_camera = e
end
def camera_zoom(zoom, duration = 0, wait_flag = false, ease = :linear)
Graphics.screen.set_transition('zoom', zoom, duration, ease)
wait(duration) if wait_flag
end
def camera_motion_blur(v, duration = 0, wait_flag = false, ease = :linear)
Graphics.screen.set_transition('motion_blur', v, duration, ease)
wait(duration) if wait_flag
end
append_commands
end
#==============================================================================
# ** Screen
#------------------------------------------------------------------------------
# Change screen data
#==============================================================================
module Screen
def screen_fadeout(duration)
Fiber.yield while $game_message.visible
screen.start_fadeout(duration)
wait(duration)
end
def screen_fadein(duration)
Fiber.yield while $game_message.visible
screen.start_fadein(duration)
wait(duration)
end
def screen_tone(tone, duration, wait_flag = false)
$game_map.screen.start_tone_change(tone, duration)
wait(duration) if wait_flag
end
def screen_flash(color, duration, wait_flag = false)
screen.start_flash(color, duration)
wait(duration) if wait_flag
end
def screen_shake(power, speed, duration, wait_flag = false)
$game_map.screen.start_shake(power, speed, duration)
wait(duration) if wait_flag
end
def screen_width; Graphics.width; end
def screen_height; Graphics.height; end
def screen_pixelation(v, duration = 0, wait_flag = false, ease = :linear)
Graphics.screen.set_transition('pixelation', v, duration, ease)
wait(duration) if wait_flag
end
def screen_blur(v, duration = 0, wait_flag = false, ease = :linear)
Graphics.screen.set_transition('blur', v, duration, ease)
wait(duration) if wait_flag
end
append_commands
end
#==============================================================================
# ** Window
#------------------------------------------------------------------------------
# uhu
#==============================================================================
module CmdWindow
def create_text_window(id, content, x, y, w=-1, h=-1, op = 255, closed=nil)
f = Window_Text.new(x, y, content, w, h, closed)
SceneManager.scene.add_window(id, f)
end
def create_commands_window(id, x, y, w, hash, op = 255, closed =nil, h = hash.size)
f = Window_EvCommand.new(x, y, w, h, hash, closed)
SceneManager.scene.add_window(id, f)
end
def create_horizontal_commands_window(id, x, y, hash, op=255, closed = nil, rows = hash.length)
f = Window_EvHorzCommand.new(x, y, rows, hash, closed)
SceneManager.scene.add_window(id, f)
end
def create_selectable_window(id, x, y, width, height, hash, op=255, closed = nil)
f = Window_EvSelectable.new(x, y, width, height, hash, closed)
SceneManager.scene.add_window(id, f)
end
def remove_window(id)
SceneManager.scene.erase_window(id)
end
def remove_all_windows
SceneManager.scene.erase_windows
end
def close_window(id)
SceneManager.scene.windows[id].close if SceneManager.scene.windows[id]
end
def open_window(id)
SceneManager.scene.windows[id].open if SceneManager.scene.windows[id]
end
def window_closed?(id); SceneManager.scene.windows[id].close?; end
def window_opened?(id); SceneManager.scene.windows[id].open?; end
def window_content(id, content = nil, resize = false)
return SceneManager.scene.windows[id].content unless content
SceneManager.scene.windows[id].content = content
SceneManager.scene.windows[id].refresh(resize)
end
def window_moveto(id, x, y, duration = 0, wf = false)
SceneManager.scene.windows[id].move_position(x, y, duration)
wait(duration) if wf
end
def window_dimension(id, width, height, duration = 0, wf = false)
if duration > 0
SceneManager.scene.windows[id].move_size(x, y, duration)
wait(duration) if wf
return
end
SceneManager.scene.windows[id].width = width
SceneManager.scene.windows[id].height = height
end
def window_opacity(id, value = nil, duration = 0, wf = false)
return SceneManager.scene.windows[id].opacity unless value
if duration > 0
SceneManager.scene.windows[id].move_opacity(value, duration)
wait(duration) if wf
return
end
SceneManager.scene.windows[id].opacity = value
end
def window_move(id, x, y, w, h, opacity, duration = 0, wf = false)
SceneManager.scene.windows[id].extra_move(x, y, w, h, opacity, duration)
wait(duration) if wf
end
def window_current_symbol(id)
SceneManager.scene.windows[id].current_symbol
end
def window_activate(id)
SceneManager.scene.windows[id].activate
end
def window_deactivate(id)
SceneManager.scene.windows[id].deactivate
end
def window_width(id)
SceneManager.scene.windows[id].width
end
def window_height(id)
SceneManager.scene.windows[id].height
end
def window_x(id, x = nil)
return SceneManager.scene.windows[id].x unless x
SceneManager.scene.windows[id].x = x
end
def window_y(id, y = nil)
return SceneManager.scene.windows[id].y unless y
SceneManager.scene.windows[id].y = y
end
append_commands
end
end