#==============================================================================
# Cart
#==============================================================================
# Author : ASCIIgod
# Version : 0.5 beta
# note: this script is similar to pet script. it does nothing but look as thought
# you have a Ragnarok styled cart

#==============================================================================
# Pet enable switch number
CART_ENABLE_SWITCH = 4
# Pet ID (database actor number)
CART_ID = 5
#==============================================================================
# Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# Public instance variables
#--------------------------------------------------------------------------
attr_accessor :priority_type
end
#==============================================================================
# Game_Player
#==============================================================================
class Game_Player
#--------------------------------------------------------------------------
# Public instance variables
#--------------------------------------------------------------------------
attr_reader :move_speed
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
alias cart_game_player_update update unless $@
def update
$game_party.update_cart
cart_game_player_update
end
#--------------------------------------------------------------------------
# Move to
#--------------------------------------------------------------------------
alias cart_game_player_moveto moveto unless $@
def moveto(x, y)
$game_party.moveto_cart(x, y)
cart_game_player_moveto(x, y)
end
#--------------------------------------------------------------------------
# Move down
#--------------------------------------------------------------------------
alias cart_game_player_move_down move_down unless $@
def move_down(turn = true)
if passable?(@x, @y + 1)
$game_party.move_cart(2, turn)
end
cart_game_player_move_down(turn)
end
#--------------------------------------------------------------------------
# Move left
#--------------------------------------------------------------------------
alias cart_game_player_move_left move_left unless $@
def move_left(turn = true)
if passable?(@x - 1, @y)
$game_party.move_cart(4, turn)
end
cart_game_player_move_left(turn)
end
#--------------------------------------------------------------------------
# Move right
#--------------------------------------------------------------------------
alias cart_game_player_move_right move_right unless $@
def move_right(turn = true)
if passable?(@x + 1, @y)
$game_party.move_cart(6, turn)
end
cart_game_player_move_right(turn)
end
#--------------------------------------------------------------------------
# Move up
#--------------------------------------------------------------------------
alias cart_game_player_move_up move_up unless $@
def move_up(turn = true)
if passable?(@x, @y - 1)
$game_party.move_cart(8, turn)
end
cart_game_player_move_up(turn)
end
#--------------------------------------------------------------------------
# Move down left
#--------------------------------------------------------------------------
alias cart_game_playermove_lower_left move_lower_left unless $@
def move_lower_left
if passable?(@x - 1, @y + 1)
$game_party.move_cart(1)
end
cart_game_playermove_lower_left
end
#--------------------------------------------------------------------------
# Move down right
#--------------------------------------------------------------------------
alias cart_game_playermove_lower_right move_lower_right unless $@
def move_lower_right
if passable?(@x + 1, @y + 1)
$game_party.move_cart(3)
end
cart_game_playermove_lower_right
end
#--------------------------------------------------------------------------
# Move up left
#--------------------------------------------------------------------------
alias cart_game_player_move_upper_left move_upper_left unless $@
def move_upper_left
if passable?(@x - 1, @y - 1)
$game_party.move_cart(5)
end
cart_game_player_move_upper_left
end
#--------------------------------------------------------------------------
# Move up right
#--------------------------------------------------------------------------
alias cart_game_player_move_upper_right move_upper_right unless $@
def move_upper_right
if passable?(@x + 1, @y - 1)
$game_party.move_cart(7)
end
cart_game_player_move_upper_right
end
#--------------------------------------------------------------------------
# Jump
#--------------------------------------------------------------------------
alias cart_game_player_jump jump unless $@
def jump(cart_x, cart_y)
new_x = @x + cart_x
new_y = @y + cart_y
if (cart_x == 0 and cart_y == 0) or passable?(new_x, new_y)
$game_party.move_cart(9, [cart_x, cart_y])
end
cart_game_player_jump(cart_x, cart_y)
end
end
#==============================================================================
# Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# Public instance variables
#--------------------------------------------------------------------------
attr_reader :cart
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
alias cart_game_party_initialize initialize unless $@
def initialize
cart_game_party_initialize
@cart = Game_cart.new(nil)
@move_cart = []
end
#--------------------------------------------------------------------------
# Update pet
#--------------------------------------------------------------------------
def update_cart
@cart.actor = CART_ID
@cart.move_speed = $game_player.move_speed
if $game_player.dash?
@cart.move_speed += 1
end
@cart.update
@cart.transparent = !$game_switches[CART_ENABLE_SWITCH]
end
#--------------------------------------------------------------------------
# Move to (cart)
#--------------------------------------------------------------------------
def moveto_cart(x, y)
@cart.moveto(x, y)
@move_cart.clear
end
#--------------------------------------------------------------------------
# Move cart
#--------------------------------------------------------------------------
def move_cart(type, turn = false)
if @move_cart == nil
@move_cart = [type, turn]
do_type = 0
else
do_type = @move_cart[0]
do_turn = @move_cart[1]
@move_cart = [type, turn]
end
case do_type
when 1
@cart.move_lower_left
when 2
@cart.move_down(do_turn)
when 3
@cart.move_lower_right
when 4
@cart.move_left(do_turn)
when 5
@cart.move_upper_left
when 6
@cart.move_right(do_turn)
when 7
@cart.move_upper_right
when 8
@cart.move_up(do_turn)
when 9
@cart.jump(do_turn[0], do_turn[1])
end
end
end
#==============================================================================
# Game_Pet
#==============================================================================
class Game_cart < Game_Character
#--------------------------------------------------------------------------
# Public instance variables
#--------------------------------------------------------------------------
attr_reader :actor
attr_accessor :move_speed
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize(actor)
super()
@through = true
@actor = actor
end
#--------------------------------------------------------------------------
# Set actor
#--------------------------------------------------------------------------
def actor=(actor)
@actor = actor
setup
end
#--------------------------------------------------------------------------
# Setup
#--------------------------------------------------------------------------
def setup
if @actor != nil
@character_name = $game_actors[@actor].character_name
@character_index = $game_actors[@actor].character_index
else
@character_name = ""
@character_index = 0
end
@priority_type = $game_player.priority_type
end
#--------------------------------------------------------------------------
# Get screen Z
#--------------------------------------------------------------------------
def screen_z
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z - 1
end
super
end
#--------------------------------------------------------------------------
# Chek event trigger (here)
#--------------------------------------------------------------------------
def check_event_trigger_here(triggers)
return false
end
#--------------------------------------------------------------------------
# Check event trigger (there)
#--------------------------------------------------------------------------
def check_event_trigger_there(triggers)
return false
end
#--------------------------------------------------------------------------
# Check event trigger (touch)
#--------------------------------------------------------------------------
def check_event_trigger_touch(x, y)
return false
end
#--------------------------------------------------------------------------
# Jump
#--------------------------------------------------------------------------
def jump(x, y)
super(x, y)
end
end
#==============================================================================
# Spriteset_Map
#==============================================================================
class Spriteset_Map
#--------------------------------------------------------------------------
# Create characters
#--------------------------------------------------------------------------
alias cart_spriteset_map_create_characters create_characters unless $@
def create_characters
cart_spriteset_map_create_characters
@character_sprites << Sprite_Character.new(@viewport4, $game_party.cart)
end
end