@@ -7168,6 +7168,13 @@ def release?(key = :mouse_left, pr = false)
71687168 return false unless k_sprite
71697169 k_sprite.release?(key, pr)
71707170 end
7171+ #--------------------------------------------------------------------------
7172+ # * Is pixel in sprite ?
7173+ #--------------------------------------------------------------------------
7174+ def pixel_in?(x, y, precise = false)
7175+ return false unless k_sprite
7176+ precise ? k_sprite.precise_in?(x, y) : k_sprite.in?(x, y)
7177+ end
71717178 end
71727179 #==============================================================================
71737180 # ** API
@@ -7538,10 +7545,12 @@ class << self
75387545 attr_accessor :light_emitter
75397546 attr_accessor :tone
75407547 attr_accessor :allow_overlap
7548+ attr_accessor :changing_graphics
75417549 attr_reader :id
75427550
75437551 alias_method :allow_overlap?, :allow_overlap
75447552 alias_method :rme_collide_with_characters?, :collide_with_characters?
7553+ alias_method :rme_set_graphic, :set_graphic
75457554 #--------------------------------------------------------------------------
75467555 # * Initialisation du Buzzer
75477556 #--------------------------------------------------------------------------
@@ -7570,6 +7579,7 @@ def initialize
75707579 @rect = Rect.new(0,0,0,0)
75717580 @sprite_index
75727581 init_tone
7582+ @changing_graphics = false
75737583 end
75747584
75757585 #--------------------------------------------------------------------------
@@ -7764,6 +7774,13 @@ def collide_with_characters?(x, y)
77647774 return false if allow_overlap?
77657775 rme_collide_with_characters?(x, y)
77667776 end
7777+ #--------------------------------------------------------------------------
7778+ # * Change Graphics
7779+ #--------------------------------------------------------------------------
7780+ def set_graphic(character_name, character_index)
7781+ rme_set_graphic(character_name, character_index)
7782+ @changing_graphics = true
7783+ end
77677784
77687785end
77697786
@@ -7997,8 +8014,14 @@ def initialize(viewport, character = nil)
79978014 #--------------------------------------------------------------------------
79988015 def set_character_bitmap
79998016 rm_extender_set_character_bitmap
8000- character.ox = self.ox
8001- character.oy = self.oy
8017+ if character.changing_graphics || (character.ox.nil? && character.oy.nil?)
8018+ character.ox = self.ox
8019+ character.oy = self.oy
8020+ else
8021+ self.ox = character.ox
8022+ self.oy = character.oy
8023+ end
8024+ character.changing_graphics = false
80028025 @old_buzz = 0
80038026 @origin_len_x = self.zoom_x
80048027 end
@@ -8843,6 +8866,12 @@ def refresh_message
88438866 @message_window.dispose
88448867 @message_window = Window_Message.new
88458868 end
8869+ #--------------------------------------------------------------------------
8870+ # * Add Event sprite into spriteset
8871+ #--------------------------------------------------------------------------
8872+ def add_event_sprite(event)
8873+ @spriteset.add_event_sprite(event)
8874+ end
88468875
88478876 #--------------------------------------------------------------------------
88488877 # * Update All Windows
@@ -9164,14 +9193,15 @@ def add_event(map_id, event_id, new_id,x=nil,y=nil)
91649193 return unless event
91659194 event.id = new_id
91669195 clone_events = @events.clone
9167- clone_events.store(new_id, Game_Event.new(@map_id, event))
9196+ new_event = Game_Event.new(@map_id, event)
9197+ clone_events.store(new_id, new_event)
91689198 x ||= event.x
91699199 y ||= event.y
91709200 @events = clone_events
91719201 @events[new_id].moveto(x, y)
91729202 @need_refresh = true
91739203 @max_event_id = [@max_event_id, new_id].max
9174- SceneManager.scene.refresh_spriteset
9204+ SceneManager.scene.add_event_sprite(new_event)
91759205 end
91769206 #--------------------------------------------------------------------------
91779207 # * Clear parallaxes
@@ -9954,6 +9984,14 @@ def show(name, rows, columns, index, origin, x, y, zoom_x, zoom_y, opacity, blen
99549984 self.current = index
99559985 @dirty = true
99569986 end
9987+ #--------------------------------------------------------------------------
9988+ # * Erase Picture
9989+ #--------------------------------------------------------------------------
9990+ def erase
9991+ super
9992+ @dirty = true
9993+ end
9994+
99579995end
99589996
99599997#==============================================================================
@@ -10204,6 +10242,13 @@ def update_parallax
1020410242 end
1020510243 rm_extender_update_parallax
1020610244 end
10245+ #--------------------------------------------------------------------------
10246+ # * Add Event Sprite to Characters
10247+ #--------------------------------------------------------------------------
10248+ def add_event_sprite(event)
10249+ sp = Sprite_Character.new(@viewport1, event)
10250+ @character_sprites.push(sp)
10251+ end
1020710252end
1020810253
1020910254#==============================================================================
@@ -11580,7 +11625,7 @@ def get_tileset_id
1158011625 end
1158111626
1158211627 def switch_tileset(tileset_id)
11583- $game_map.tileset_id = tileset_id
11628+ $game_map.change_tileset( tileset_id)
1158411629 end
1158511630
1158611631 def set_tile(value, x, y, layer)
@@ -12850,7 +12895,7 @@ def fresh_event_id(erased = false)
1285012895 #--------------------------------------------------------------------------
1285112896 def page_runnable?(map_id, ev_id, page, context=false)
1285212897 return unless self.class == Game_Interpreter
12853- page = Game_Interpreter.get_page(map_id, ev_id, p_id ) if page.is_a?(Fixnum)
12898+ page = Game_Interpreter.get_page(map_id, ev_id, page ) if page.is_a?(Fixnum)
1285412899 return unless page
1285512900 return Game_Interpreter.conditions_met?(map_id, ev_id, page) if context
1285612901 c_map_id = Game_Interpreter.current_map_id
@@ -13461,13 +13506,13 @@ def event_look_towards?(source, x, y, scope)
1346113506 ex, ey = event_x(source), event_y(source)
1346213507 case event_direction(source)
1346313508 when Direction::UP
13464- distance = ey - y
13465- x_axis = (ex >= x - distance) && (ex <= x + distance)
13466- y_axis = ey > y
13467- when Direction::DOWN
1346813509 distance = y - ey
1346913510 x_axis = (ex >= x - distance) && (ex <= x + distance)
1347013511 y_axis = ey < y
13512+ when Direction::DOWN
13513+ distance = ey - y
13514+ x_axis = (ex >= x - distance) && (ex <= x + distance)
13515+ y_axis = ey > y
1347113516 when Direction::LEFT
1347213517 distance = ex - x
1347313518 x_axis = ex > x
@@ -13828,7 +13873,9 @@ def player_opacity(value = nil)
1382813873
1382913874 def event_move_with(id, *code)
1383013875 route = RPG::MoveRoute.new
13876+ route.repeat = false
1383113877 route.list = code.map {|i| RPG::MoveCommand.new(i)}
13878+ route.list << RPG::MoveCommand.new(0)
1383213879 event(id).force_move_route(route)
1383313880 end
1383413881
0 commit comments