I only heard what you currently have on your Soundcloud, so I suppose I missed out on your unreleased tracks. I'm looking forward to hearing your second album, getting an album (or even a demo) finished can be rough but i swear it's worth it. I wish you luck in finishing it.
I would also like to complement you as a scripter, Blizzard. Blizz-ABS is a wonderful piece of work. I plan on using it for my side-scrolling mecha ARPG. However, it is still missing a gravity/platformer plugin. To this end, I hope I can contribute. I've never scripted in Ruby before, but I did rack up a good deal of experience as a teenager with Visual Basic (3.0 and 4.0). I still remember bits of it, although I wouldn't call myself proficient in it anymore by any means. Regardless I feel like I have the experience to use creating this platformer plug-in as a crash course in RBSS/Ruby. Thank you for the inspiration, I found the plug-in I need but it is for XAS. While XAS is a flashy ABS, with a somewhat somewhat straightforward configuration; its code feels weird to me, the reliance on event 'tools' seems wasteful in terms of performance, the AI is wanting, and there's no anti-lag system. Your ABS is simply superior in every way, and I look forward to the challenge of creating a plug-in worthy of it.
Well, off to
scripting school I go, wish me luck!
[spoiler]
I hope to be able to utilize some of the Platformer Plug-In for XAS for this. If you're interested, here's what I'm working with. I will be referencing the Blizz-ABS manual in-depth to see if/how I can convert this; failing that gutting what I can and creating the rest around that.
[code]#==============================================================================
# XAS Platform Script! V3.5
#==============================================================================
# By: mr_wiggles, moghunter, g@mef@ce
#
# Based off of parts from Cogwheel's Platform Script (
66rpg.com)
#==============================================================================
# CONFIG
#==============================================================================
XPLAT_SWITCH_ID = 1 # platform disable Switch, to turn platform mode
# on or off.
#-------------------------------------------------------------------------------
# Character graphic offset, used for making the character look like they are
# standing on the ground instead of floating on it. (values must be 0 - 63)
UP = 48 # default = 48
DOWN = 0 # default = 16
SIDE = 32 # default = 32
#------------------------------------------------------------------------------
JUMPADD = 4 # How High can you jump, 0 (lowest) - 6 (highest)
#------------------------------------------------------------------------------
AIR_JUMP = 1 # number of jumps that can be done in the air.
# can be changed in game by using a script command:
# $game_player.air_jump = value
# $game_variables[1]
# (set value to = 1, 2, or 3)
#------------------------------------------------------------------------------
JUMP_STAMINA = 20 # ct cost when jump
JUMP_NEED = 10 # ct requirement to jump
#------------------------------------------------------------------------------
JUMP_BUTTON = Input::X # Button used to jump with
JUMP_SOUND = "V_Attack3" # Play Sound when jump
JUMP_VOLUME = 100 # set volume for jump sound
JUMP_PITCH = 100 # set the pitch for jump sound
JUMP_ANIMATION_ID = 0
AIR_JUMP_ANIMATION_ID = 250
GROUND_ANIMATION_ID = 250
#------------------------------------------------------------------------------
# Types of Events for platform:
# Add one of these words in upper case in a comment on the first page of the
# event.
#
# FIXED = Event is un effected by platform
# AIR = Event will be "flying"
#==============================================================================
#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character
attr_reader :event
attr_accessor :airjump
attr_accessor :revise_x
attr_accessor :revise_y
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize
super
@event = 4
@jumpnow = 0
@twojump = 0
@apassed = false
@revise_x = 0
@revise_y = 0
@move = false
@airjump = AIR_JUMP
@correct_height = false
end
#--------------------------------------------------------------------------
# ● can_jump? # +++ EDITED ++++
#--------------------------------------------------------------------------
def can_jump?(jump_max)
return false if $game_
system.map_interpreter.running?
return false if @move_route_forcing
return false if self.knockbacking?
return false if self.acting?
return false if self.battler.hp == 0
return false if $game_player.pickup_lock
return false if $game_temp.xas_charge_time > 10
return false if
Input.press?(Input::DOWN)
return false if $game_system.action_meter<= JUMP_NEED
return true
end
#--------------------------------------------------------------------------
# ● can_xplat_move? # +++ EDITED ++++
#--------------------------------------------------------------------------
def can_xplat_move?
return false if moving?
return false if $game_
system.map_interpreter.running?
return false if @move_route_forcing
return false if @force_move_times > 0
return true
end
#--------------------------------------------------------------------------
# ● can_gravity? # +++ EDITED ++++
#--------------------------------------------------------------------------
def can_gravity?(jump_max)
return true
end
#--------------------------------------------------------------------------
# ● can_temp_through? # +++ EDITED ++++
#--------------------------------------------------------------------------
def can_temp_through?(jump_max)
return true
end
#--------------------------------------------------------------------------
# ● Movement Command # +++ EDITED ++++
#--------------------------------------------------------------------------
def update_xplat_movement_commnad
return unless can_xplat_move?
@event_run = false
@move = true
platform = $game_switches[XPLAT_SWITCH_ID]
case Input.dir8
when 1
#platform ? move_lower_left_p : move_left_p
move_left_p #+++ EDITED ++++
when 2
move_down_p# if !platform
when 3
#platform ? move_lower_right_p : move_right_p
move_right_p #+++ EDITED ++++
when 4
move_left_p
when 6
move_right_p
when 7
#platform ? move_upper_left_p : move_left_p
move_left_p #+++ EDITED ++++
when 8
turn_up#move_up_p# if !platform
when 9
#platform ? move_upper_right_p : move_right_p
move_right_p #+++ EDITED ++++
end
end
#--------------------------------------------------------------------------
# ● Jumping_Effect (Jump Button Pressed) # +++ EDITED ++++
#--------------------------------------------------------------------------
def update_xplat_jumping_effect(jump_max)
return unless can_jump?(jump_max)
@twojump = 1 if @twojump == 0 and down1(((@x * 128 + @revise_x) / 128.0
).round, ((@y * 128 + @revise_y) / 128.0).round, 5, true)
if (not @apassed) and @twojump <= @airjump
if @twojump > 0
$game_player.animation_id = AIR_JUMP_ANIMATION_ID
else
$game_player.animation_id = JUMP_ANIMATION_ID
end
@apassed = true
@jumpnow = jump_max
@twojump += 1
$game_
system.se_play(RPG::AudioFile.new(JUMP_SOUND, JUMP_VOLUME, JUMP_PITCH))
@jumping_through = true
$game_system.action_meter -= JUMP_STAMINA
else
@jumpnow += 3
end
end
#--------------------------------------------------------------------------
# ● Gravity # +++ EDITED ++++
#--------------------------------------------------------------------------
def update_xplat_gravity(jump_max)
return unless can_gravity?(jump_max)
@jumpnow -= 10
if @jumpnow < 0
@jumpnow = [@jumpnow, -jump_max].max
if not down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, -@jumpnow, true)
@correct_height = true if @twojump != 0 # ++++ EDITED ++++
@jumpnow = 0
@twojump = 0
end
elsif @jumpnow > 0
@jumpnow = [@jumpnow, jump_max].min
if not up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, @jumpnow, true)
@jumpnow = 0
end
end
end
#--------------------------------------------------------------------------
# ● Temp Through # +++ EDITED ++++
#--------------------------------------------------------------------------
def update_xplat_temp_through(jump_max)
return unless can_temp_through?(jump_max)
# Jump up through ground
@wait_time = 0 if @wait_time == nil
@old_y = @y if @old_y == nil
if @y < @old_y
if !$game_map.passable?(@x, @y-1,
and $game_map.passable?(@x, @y-1, 1)#2
@jumping_through = true
@through = true
@wait_time = 2#-----------------------Xbug
end
end
# Drop down through ground
if Input.trigger?(JUMP_BUTTON) and
Input.press?(Input::DOWN)
if !$game_map.passable?(@x, @y+1,
and $game_map.passable?(@x, @y+1, 2)
@jumping_through = true
@through = true
@wait_time = 4
end
end
@wait_time -= 1 if @wait_time > 0
if @jumping_through and @wait_time == 0
@jumping_through = false
@through = false
end
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias xplat_update update
def update
xplat_update
@move_speed = XAS::NORMAL_SPEED if @move_speed == nil #+++ EDITED ++++
return if @force_move_times > 0 # ++++ EDITED ++++
if $game_switches[XPLAT_SWITCH_ID] # platform check
if @revise_x == nil and @revise_y == nil
@revise_x = 0
@revise_y = 0
@correct_height = false
end
# ++++ EDITED ++++
if (@jumpnow == 0 and @correct_height)
@revise_y = 0
@correct_height = false
$game_player.animation_id = GROUND_ANIMATION_ID
end
if @move_route_forcing
last_moving = moving?
last_real_x = @real_x
last_real_y = @real_y
if (@revise_x != 0 or @revise_y != 0) and !jumping? and !@move
if @revise_x != @real_x - @x * 128 or @revise_y != @real_y - @y * 128
@revise_x = @real_x - @x * 128
@revise_y = @real_y - @y * 128
end
distance1 = 2 ** @move_speed
distance2 = Math.sqrt(@revise_x ** 2 + @revise_y ** 2)
if distance1 > distance2
@real_x = @real_x - @revise_x
@real_y = @real_y - @revise_y
@revise_x = 0
@revise_y = 0
else
@real_x -= (distance1 * @revise_x / distance2).round
@real_y -= (distance1 * @revise_y / distance2).round
@revise_x = @real_x - @x * 128
@revise_y = @real_y - @y * 128
end
else
super
end
else
@move = false
update_xplat_movement_commnad # +++ EDITED ++++
last_real_x = @real_x
last_real_y = @real_y
@real_x = @x * 128 + @revise_x #-----------------speed correction
@real_y = @y * 128 + @revise_y
last_moving = moving?
move_on
if (last_real_x != @real_x or last_real_y != @real_y)
@move_distance = 0 if @move_distance == nil
@move_distance += Math.sqrt((last_real_x - @real_x) ** 2 +
(last_real_y - @real_y) ** 2)
if @move_distance >= 128
@move_distance %= 128
increase_steps
end
anime_update2 #-------------------------------------for dash
else
@pattern = 0
end
end
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
$game_map.scroll_down(@real_y - last_real_y)
end
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
$game_map.scroll_left(last_real_x - @real_x)
end
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
$game_map.scroll_right(@real_x - last_real_x)
end
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
$game_map.scroll_up(last_real_y - @real_y)
end
if last_moving
result = check_event_trigger_here([1,2])
if result == true
if (last_real_x / 128.0).round != @x and
(last_real_y / 128.0).round != @y
if @direction == 2 or @direction == 8
if (last_real_x / 128.0).round > @x
turn_left
else
turn_right
end
else
if (last_real_y / 128.0).round > @y
turn_up
else
turn_down
end
end
elsif (last_real_x / 128.0).round > @x
turn_left
elsif (last_real_x / 128.0).round < @x
turn_right
elsif (last_real_y / 128.0).round > @y
turn_up
elsif (last_real_y / 128.0).round < @y
turn_down
end
end
if result == false
unless $DEBUG and
Input.press?(Input::CTRL)
if @encounter_count > 0
@encounter_count -= 1
end
end
end
end
#----------------------- Jump -----------------------------------------------
jump_max = (JUMPADD + 6) * 10
if
Input.press?(JUMP_BUTTON)
update_xplat_jumping_effect(jump_max)
else
@apassed = false
end
#---------------------- Gravity --------------------------------
update_xplat_gravity(jump_max) # +++ EDITED ++++
#---------------------- Temp Through --------------------------------
update_xplat_temp_through(jump_max) # +++ EDITED ++++
#---------------------- Unstuck fix --------------------------------
# if !$game_map.passable?(@x, @y, 10)
# @jumping_through = true
# @through = true
# @wait_time = 8#4
# @y -= 1
# end
end # platform check
#---------------------- Event Check --------------------------------
#if Input.trigger?(Input::C)
# check_event_trigger_here([0])
# check_event_trigger_there([0,1,2])
#return if $game_
map.events.values == event.battler #?
#end
end
#--------------------------------------------------------------------------
# ● Moveto
#--------------------------------------------------------------------------
alias moveto_original moveto
def moveto(x, y)
@revise_x = 0
@revise_y = 0
moveto_original(x, y)
end
#--------------------------------------------------------------------------
# ● Anime Update2 # ++++ EDITED ++++ for dash
#--------------------------------------------------------------------------
def anime_update2
if @walk_anime or @step_anime
@anime_count += 1.0
@anime_count += 1.0 if @pattern == 0
end
if @anime_count > 16 - @move_speed * 2
if not @step_anime and @stop_count > 0
@pattern = @original_pattern
else
@pattern = (@pattern + 1) % 4
end
@anime_count = 0
end
#ani?
end
end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● Move On
#--------------------------------------------------------------------------
def move_on
if @y < (@y + @revise_y / 128.0).round
@y += 1
@revise_y -= 128
end
if @x > (@x + @revise_x / 128.0).round
@x -= 1
@revise_x += 128
end
if @x < (@x + @revise_x / 128.0).round
@x += 1
@revise_x -= 128
end
if @y > (@y + @revise_y / 128.0).round
@y -= 1
@revise_y += 128
end
end
#--------------------------------------------------------------------------
# ● Last Move?
#--------------------------------------------------------------------------
def last_move?(x, y, direction, distance)
if direction == 2 or direction == 6
distance *= -1
end
if (direction == 2 or direction ==
and
(y / 128.0).round != ((y - distance) / 128.0).round
return true
end
if (direction == 4 or direction == 6) and
(x / 128.0).round != ((x - distance) / 128.0).round
return true
end
return false
end
#--------------------------------------------------------------------------
# ● check_move_platform # +++ EDITED ++++
#--------------------------------------------------------------------------
def check_move_platform(distance,d)
return
end
#--------------------------------------------------------------------------
# ● Update Move?
#--------------------------------------------------------------------------
def update_move
distance = 2 ** @move_speed
if @y * 128 > @real_y
@real_y = [@real_y + distance, @y * 128].min
# event gravity
if
self.is_a?(Game_Event) and $game_switches[XPLAT_SWITCH_ID] and
@air_event == nil
@real_y += DOWN
end
check_move_platform(distance,2)
end
if @x * 128 < @real_x
@real_x = [@real_x - distance, @x * 128].max
check_move_platform(distance,4)
end
if @x * 128 > @real_x
@real_x = [@real_x + distance, @x * 128].min
check_move_platform(distance,6)
end
if @y * 128 < @real_y
@real_y = [@real_y - distance, @y * 128].max
check_move_platform(distance,8)
end
if @walk_anime
@anime_count += 1.5
elsif @step_anime
@anime_count += 1
end
end
#--------------------------------------------------------------------------
# ● Moving?
#--------------------------------------------------------------------------
def moving?
if not $game_switches[XPLAT_SWITCH_ID] or (
self.is_a?(Game_Event))
result = (@real_x != @x * 128 or @real_y != @y * 128)
return result
end
if @move_route_forcing
return false
else
return (@x != (@real_x / 128.0).round or @y != (@real_y / 128.0).round)
end
end
#--------------------------------------------------------------------------
# ● Moving_a?
#--------------------------------------------------------------------------
def moving_a?
if @move == false
if (@move_route.list[@move_route_index].code <= 14 or
@move_route.list[@move_route_index].code == 25)
@move = true
end
return false
end
moving?
end
#--------------------------------------------------------------------------
# ● Update_Jump
#--------------------------------------------------------------------------
alias default_update_jump update_jump
def update_jump
# if not in platform run old method
unless $game_switches[XPLAT_SWITCH_ID]
default_update_jump
return
end
@jump_count -= 1
@real_x = (@real_x * @jump_count + @x * 128) / (@jump_count + 1)
@real_y = (@real_y * @jump_count + @y * 128) / (@jump_count + 1)
if @jump_count == 0
@revise_x = 0
@revise_y = 0
end
end
#--------------------------------------------------------------------------
# * Move Upper Left
#--------------------------------------------------------------------------
alias origonal_move_upper_left move_upper_left
def move_upper_left
if $game_switches[XPLAT_SWITCH_ID] and @air_event == nil and
self.tool_id == 0 #++++ EDITED ++++
move_left
return
end
origonal_move_upper_left
end
#--------------------------------------------------------------------------
# * Move Upper Right
#--------------------------------------------------------------------------
alias origonal_move_upper_right move_upper_right
def move_upper_right
if $game_switches[XPLAT_SWITCH_ID] and @air_event == nil and
self.tool_id == 0 #++++ EDITED ++++
move_right
return
end
origonal_move_upper_right
end
#--------------------------------------------------------------------------
# * Move Lower Left
#--------------------------------------------------------------------------
alias origonal_move_lower_left move_lower_left
def move_lower_left
if $game_switches[XPLAT_SWITCH_ID] and @air_event == nil and
self.tool_id == 0 #++++ EDITED ++++
move_left
return
end
origonal_move_lower_left
end
#--------------------------------------------------------------------------
# * Move Lower Right
#--------------------------------------------------------------------------
alias origonal_move_lower_right move_lower_right
def move_lower_right
if $game_switches[XPLAT_SWITCH_ID] and @air_event == nil and
self.tool_id == 0 #++++ EDITED ++++
move_right
return
end
origonal_move_lower_right
end
#--------------------------------------------------------------------------
# ● Move_Down_P
#--------------------------------------------------------------------------
def move_down_p
turn_down
distance = 2 ** @move_speed
down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
# ● Move_Down_aaaaqq
#--------------------------------------------------------------------------
def move_down_aaaagq
distance = 2 ** @move_speed
down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
# ● Down1
#--------------------------------------------------------------------------
def down1(x, y, distance, down = false)
result = down2(x, y, distance)
if result == false
@event_run = check_event_trigger_touch(x, y+1)
return result
end
if @revise_x < -SIDE
result = down2(x, y + 1, distance, 4)
result &= down2(x - 1, y, distance)
if result == false
if down
move_lower_right_p
if @revise_x > SIDE
@revise_x = SIDE
end
end
return result
end
elsif @revise_x > SIDE
result = down2(x, y + 1, distance, 6)
result &= down2(x + 1, y, distance)
if result == false
if down
move_lower_left_p
if @revise_x < -SIDE
@revise_x = -SIDE
end
end
return result
end
end
@revise_y += distance
return result
end
#--------------------------------------------------------------------------
# ● Down2
#--------------------------------------------------------------------------
def down2(x, y, distance, d = 2)
if @revise_y + distance > DOWN
unless passable?(x, y, d)
if @revise_y < DOWN
@revise_y = DOWN
end
return false
end
end
return true
end
#--------------------------------------------------------------------------
# ● Move_Left_P
#--------------------------------------------------------------------------
def move_left_p
turn_left
distance = 2 ** @move_speed #crash
left1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
# ● Left1
#--------------------------------------------------------------------------
def left1(x, y, distance, left = false)
result = left2(x, y, distance)
if result == false
@event_run = check_event_trigger_touch(x-1, y)
return result
end
if @revise_y < -UP and $game_switches[XPLAT_SWITCH_ID]
result = left2(x - 1, y, distance,
result &= left2(x, y - 1, distance)
if result == false
if left
move_lower_left_p
if @revise_y > DOWN
@revise_y = DOWN
end
end
return result
end
elsif @revise_y > DOWN and $game_switches[XPLAT_SWITCH_ID]
result = left2(x - 1, y, distance, 2)
result &= left2(x, y + 1, distance)
if result == false
if left
move_upper_left_p
if @revise_y < -UP
@revise_y = -UP
end
end
return result
end
end
@revise_x -= distance
return result
end
#--------------------------------------------------------------------------
# ● Left2
#--------------------------------------------------------------------------
def left2(x, y, distance, d = 4)
if @revise_x - distance < -SIDE
unless passable?(x, y, d)
if @revise_x > -SIDE
@revise_x = -SIDE
end
return false
end
end
return true
end
#--------------------------------------------------------------------------
# ● Move_Right_P
#--------------------------------------------------------------------------
def move_right_p
turn_right
distance = 2 ** @move_speed
right1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
# ● Right1
#--------------------------------------------------------------------------
def right1(x, y, distance, right = false)
result = right2(x, y, distance)
if result == false
@event_run = check_event_trigger_touch(x+1, y)
return result
end
if @revise_y < -UP and $game_switches[XPLAT_SWITCH_ID]
result = right2(x + 1, y, distance,
result &= right2(x, y - 1, distance)
if result == false
if right
move_lower_right_p
if @revise_y > DOWN
@revise_y = DOWN
end
end
return result
end
elsif @revise_y > DOWN and $game_switches[XPLAT_SWITCH_ID]
result = right2(x + 1, y, distance, 2)
result &= right2(x, y + 1, distance)
if result == false
if right
move_upper_right_p
if @revise_y < -UP
@revise_y = -UP
end
end
return result
end
end
@revise_x += distance
return result
end
#--------------------------------------------------------------------------
# ● Right2
#--------------------------------------------------------------------------
def right2(x, y, distance, d = 6)
if @revise_x + distance > SIDE
unless passable?(x, y, d)
if @revise_x < SIDE
@revise_x = SIDE
end
return false
end
end
return true
end
#--------------------------------------------------------------------------
# ● Move_Up_P
#--------------------------------------------------------------------------
def move_up_p
turn_up
distance = 2 ** @move_speed
up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
# ● Move_Up_aaaaqq
#--------------------------------------------------------------------------
def move_up_aaaagq
distance = 2 ** @move_speed
up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance, true)
end
#--------------------------------------------------------------------------
# ● UP1
#--------------------------------------------------------------------------
def up1(x, y, distance, up = false)
result = up2(x, y, distance)
if result == false
@event_run = check_event_trigger_touch(x, y-1)
return result
end
if @revise_x < -SIDE
result = up2(x, y - 1, distance, 4)
result &= up2(x - 1, y, distance)
if result == false
if up
move_upper_right_p
if @revise_x > SIDE
@revise_x = SIDE
end
end
return result
end
elsif @revise_x > SIDE
result = up2(x, y - 1, distance, 6)
result &= up2(x + 1, y, distance)
if result == false
if up
move_upper_left_p
if @revise_x < -SIDE
@revise_x = -SIDE
end
end
return result
end
end
@revise_y -= distance
return result
end
#--------------------------------------------------------------------------
# ● UP2
#--------------------------------------------------------------------------
def up2(x, y, distance, d =
if @revise_y - distance < -UP
unless passable?(x, y, d)
if @revise_y > -UP
@revise_y = -UP
end
return false
end
end
return true
end
#--------------------------------------------------------------------------
# ● Move Lower Left P
#--------------------------------------------------------------------------
def move_lower_left_p
unless @direction_fix
@direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
end
distance = (2 ** @move_speed) / Math.sqrt(2)
if @direction == 2
turn_left unless down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_down if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 2, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_y > DOWN and -UP > @revise_y - distance
@revise_y = DOWN
end
turn_down unless left1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_left if @event_run
end
else
turn_down unless left1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_left if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 4, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_x + distance> SIDE and -SIDE > @revise_x
@revise_x = -SIDE
end
turn_left unless down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_down if @event_run
end
end
end
#--------------------------------------------------------------------------
# ● Move Lower Right P
#--------------------------------------------------------------------------
def move_lower_right_p
unless @direction_fix
@direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
end
distance = (2 ** @move_speed) / Math.sqrt(2)
if @direction == 2
turn_right unless down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_down if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 2, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_y > DOWN and -UP > @revise_y - distance
@revise_y = DOWN
end
turn_down unless right1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_right if @event_run
end
else
turn_down unless right1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_right if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 6, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_x > SIDE and -SIDE > @revise_x - distance
@revise_x = SIDE
end
turn_right unless down1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_down if @event_run
end
end
end
#--------------------------------------------------------------------------
# ● Move Upper Left P
#--------------------------------------------------------------------------
def move_upper_left_p
unless @direction_fix
@direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
end
distance = (2 ** @move_speed) / Math.sqrt(2)
if @direction == 8
turn_left unless up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_up if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 8, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_y + distance > DOWN and -UP > @revise_y
@revise_y = -UP
end
#+++ EDITED ++++ #turn_up unless left1(((@x * 128 + @revise_x) / 128.0).round,
# ((@y * 128 + @revise_y) / 128.0).round, distance)
turn_left if @event_run
end
else
#+++ EDITED ++++ #turn_up unless left1(((@x * 128 + @revise_x) / 128.0).round,
# ((@y * 128 + @revise_y) / 128.0).round, distance)
turn_left if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 4, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_x > SIDE and -SIDE > @revise_x - distance
@revise_x = SIDE
end
turn_left unless up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_up if @event_run
end
end
end
#--------------------------------------------------------------------------
# ● Move Upper Right P
#--------------------------------------------------------------------------
def move_upper_right_p
unless @direction_fix
@direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
end
distance = (2 ** @move_speed) / Math.sqrt(2)
if @direction == 8
turn_right unless up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_up if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 8, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_y + distance > DOWN and -UP > @revise_y
@revise_y = -UP
end
#+++ EDITED ++++ #turn_up unless right1(((@x * 128 + @revise_x) / 128.0).round,
# ((@y * 128 + @revise_y) / 128.0).round, distance)
turn_right if @event_run
end
else
#+++ EDITED ++++ #turn_up unless right1(((@x * 128 + @revise_x) / 128.0).round,
# ((@y * 128 + @revise_y) / 128.0).round, distance)
turn_right if @event_run
unless @event_run
if last_move?(@real_x, @real_y, 6, distance)
result = check_event_triggers_here([1,2], false)
if result == true
return
end
end
move_on
if @revise_x > SIDE and -SIDE > @revise_x - distance
@revise_x = SIDE
end
turn_right unless up1(((@x * 128 + @revise_x) / 128.0).round,
((@y * 128 + @revise_y) / 128.0).round, distance)
turn_up if @event_run
end
end
end
#--------------------------------------------------------------------------
# ● Check Event Triggers Here
#--------------------------------------------------------------------------
def check_event_triggers_here(triggers, run = true)
result = false
if $game_
system.map_interpreter.running?
return result
end
for event in $game_
map.events.values
if event.x == ((@x * 128 + @revise_x) / 128.0).