Code: |
#============================================================================== # ■ Follow Me Pokémon # par Brendan75 #----------------------------------------------------------------------------- # Rend le premier pokémon de l'équipe visible sur la map. #============================================================================== PKM_TRANSPARENT_SWITCHES = 50 # Index de l'interrupteur pour rendre invisible class Follower_Pkm < Game_Character include POKEMON_S def initialize super() @through = false @step_anime = true @pkm_id = 0 end def update if $pokemon_party.size != 0 @pkm_id = $pokemon_party.actors[0].id string = "pkm #{sprintf('%03d', @pkm_id)}.png" if @character_name != string @character_name = string @character_hue = 0 @opacity = 255 @blend_type = 0 end if @opacity != ($game_switches[PKM_TRANSPARENT_SWITCHES] ? 0 : 255) @opacity = ($game_switches[PKM_TRANSPARENT_SWITCHES] ? 0 : 255) end else @character_name = "" end self.move_speed = $game_player.move_speed super end def screen_z(height = 0) if $game_player.x == @x and $game_player.y == @y return $game_player.screen_z(height) - 1 end super(height) end def check_event_trigger_touch(x, y) end def passable?(x, y, d) new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0) new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0) unless $game_map.valid?(new_x, new_y) return false end if @through return true end unless $game_map.passable?(x, y, d, self) return false end unless $game_map.passable?(new_x, new_y, 10 - d) return false end for event in $game_map.events.values if event.x == new_x and event.y == new_y unless event.through if self != $game_player return false end if event.character_name != "" return false end end end end return true end end #----------------------------------------------------------------------------- # ● Spriteset Map #----------------------------------------------------------------------------- class Spriteset_Map alias follow_me_initialize initialize def initialize follow_me_initialize @character_sprites.push(Sprite_Character.new(@viewport1, $game_party.follower_pkm)) update end end #----------------------------------------------------------------------------- # ● Scene Map #----------------------------------------------------------------------------- class Scene_Map alias follow_me_transfer_player transfer_player def transfer_player $game_party.erase_moves follow_me_transfer_player end alias follow_me_update update def update follow_me_update $game_party.follower_pkm.update end end #----------------------------------------------------------------------------- # ● Game Player #----------------------------------------------------------------------------- class Game_Player alias follow_me_moveto moveto def moveto(x, y) follow_me_moveto(x, y) $game_party.follower_pkm.moveto(x, y) end def move_down(turn_enabled = true) if passable?(@x, @y, 2) $game_party.move_party_actors $game_party.add_move_list(Input::DOWN, turn_enabled) end super(turn_enabled) end def move_left(turn_enabled = true) if passable?(@x, @y, 4) $game_party.move_party_actors $game_party.add_move_list(Input::LEFT, turn_enabled) end super(turn_enabled) end def move_right(turn_enabled = true) if passable?(@x, @y, 6) $game_party.move_party_actors $game_party.add_move_list(Input::RIGHT, turn_enabled) end super(turn_enabled) end def move_up(turn_enabled = true) if passable?(@x, @y, 8) $game_party.move_party_actors $game_party.add_move_list(Input::UP, turn_enabled) end super(turn_enabled) end end #----------------------------------------------------------------------------- # ● Game Party #----------------------------------------------------------------------------- class Game_Party include POKEMON_S attr_accessor :follower_pkm alias follow_me_initialize initialize def initialize follow_me_initialize @follower_pkm = Follower_Pkm.new @next_move = nil end def move_party_actors case @next_move.type when Input::DOWN @follower_pkm.move_down(@next_move.turn_enabled) when Input::LEFT @follower_pkm.move_left(@next_move.turn_enabled) when Input::RIGHT @follower_pkm.move_right(@next_move.turn_enabled) when Input::UP @follower_pkm.move_up(@next_move.turn_enabled) else return end erase_moves end def add_move_list(type, turn_enabled) @next_move = Move_List_Element.new(type, turn_enabled) end def erase_moves @next_move = nil end end #----------------------------------------------------------------------------- # ● Move List Element #----------------------------------------------------------------------------- class Move_List_Element attr_reader :type attr_reader :turn_enabled def initialize(type, turn_enabled) @type = type @turn_enabled = turn_enabled end end |
Code: |
[code] [/code] |