#============================================================================== # #¡¡¡á?ªêÚª?íå¡¡¡àVer. 2.81¡¡¡àð²íÂíº£ºêÅãëÞÍ #¡¡?RPG«Ä«¯?«ëVXéÄ RGSS2«¹«¯«ê«×«È # # ¡Ü¡¦ßöª­üµª¨«á«½«Ã«É(Ìæùêñ¼ëò)¡¡¡Ý¡¦«á«½«Ã«ÉªÎ«¨«¤«ê«¢«¹¡¡¡Û¡¦ãæЮ«á«½«Ã«É # # ¡Øì£ó­ÛÕøÖÐ×ò­£¡ÛÕøÖꪪ˪Ï××éÄЮ峪¬ª¢ªêªÞª¹¡£ù±ªºª½ªÁªéªò̸ªÆª¯ªÀªµª¤¡£ #------------------------------------------------------------------------------ # ÌÚãæ×Û? # Ver. 2.81 ÙòªßªËªèªë«¨«ó«««¦«ó«È?Ê¥ª¬Þ«ú¼ñéªËîêéĪµªìªÊª¤ªèª¦áóïá¡£ # Ver. 2.80 ?ªêÚª«¹«Æ?«ÈªÎѦÒöªòõÚÊ¥¡£ # Ver. 2.70 «¨«ó«««¦«ó«Èª·ªÊª¤?ªêڪѦÒöª¬Ú±??ªÀªÃª¿?¡¢õÚÊ¥¡£ # Ver. 2.63 îñüÞªÎáóï᪬Üôä¨ÝªÀªÃª¿ª³ªÈªËªèªëÜôÎýùêªòî¢áóïá¡£ # Ver. 2.62 «¤«Ù«ó«È?ªêÚªªò?ªê?ª¤ªÀð·ªËî¢Óø?ªìªÊª¯ªÊªëÜôÎýùêªòáóïá¡£ # Ver. 2.61 ù»ÑÀÌÚãæªÎÚ°ðàïÚ¡£ # Ver. 2.60 HARTS HORN?ªÎ¡¸ÓéÖª?ú¼«¹«¯«ê«×«È¡¹?éÄÔÑíªÎáóïáªÈ # êÅãëÞͪΫ¹«¯«ê«×«È¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéĪÎÌÚãæ¡£ # Ver. 2.51 «¹«¯«ê«×«ÈªÎ̸òÁª·ªÈᬪ«ª¤ÔÑíÂáóïá¡£ # Ver. 2.50 ?ªêÚªªË?ªÃª¿?÷¾ªÇªÎ«»?«Ö?«í?«ÉãÁªÎÜôÎýùêªòú°á¼¡£ # # ¡Øª³ªìì¤îñªÎÌÚãæ×Û?ªÏ«Þ«Ë«å«¢«ëªò?ÍŪ˪·ªÆª¯ªÀªµª¤¡£ #============================================================================== =begin ¡¡ª³ªÎ«¹«¯«ê«×«ÈªÇõÚÊ¥ªµªìªëªÎªÏì¤ù»ªÎѦÒöªÇª¹¡£ ¡¡¡¡¡ÛØ©¡¢ÓÞúþÞ«ú¼àÏ¡¢ØªÛöªÎëÖ?ªÈª¤ª¦ªßªÃªÄªÎã檷ª¤?ªêÚªªòõÚÊ¥¡£ ¡¡¡¡¡Û«­«ã«é«¯«¿?ª¬ß¾ªË?ªë¡¢ÑÈ?«¿«¤«×ªÎ?ªêÚªªòíÂà÷ªÇª­ªë¡£ ¡¡¡¡¡Û«¤«Ù«ó«ÈªË«×«ì«¤«ä?ªò?ªê?ªÞª»ª¿ªê¡¢ÑÈ?ªµª»ª¿ªêªÇª­ªë¡£ ¡¡¡¡¡Û«¤«Ù«ó«ÈªË«¤«Ù«ó«ÈªòÑÈ?ªµª»ªëª³ªÈª¬ªÇª­ªë¡£ ¡¡¡¡¡Û«·«¹«Æ«àªÎ?éĪ˪ơ¢«¤«Ù«ó«Èªòò¥ªÁß¾ª²ªë¡¢ê¡ªÖ¡¢ªÈª¤ªÃª¿ª³ªÈªâʦÒöªË¡£ ¡¡¡Ø ßÙª·ª¤?Ù¥ªÏ«Þ«Ë«å«¢«ëªòª´?ª¯ªÀªµª¤¡£ =end #============================================================================== # ¡à ?ªêÚª?íå?«â«¸«å?«ë£¨«««¹«¿«Þ«¤«ºú£ÙÍ£© #============================================================================== module Expansion_Vehicle # Ø©ªÎôøÑ¢àâïÒ # ----------------------------------------------------- # ôøÑ¢ÛÕöǪ¹ªë«Þ«Ã«×ªÎID£¯Xñ¨øö£¯Yñ¨øö HORSE_MAP_ID = 0 HORSE_X = 0 HORSE_Y = 0 # ?ßÀ«Õ«¡«¤«ëªÎÙ£îñ£¯?ßÀ«Õ«¡«¤«ëªÎINDEX HORSE_FILE_NAME = "Animal" HORSE_FILE_INDEX = 5 # BGM«Õ«¡«¤«ëªÎÙ£îñ HORSE_BGM_NAME = "¸¸ÁÖÀÇ ¸Å (³ð³ð³ð OST)" # ÓÞúþÞ«ú¼àϪÎôøÑ¢àâïÒ # ---------------------------------------------- # ôøÑ¢ÛÕöǪ¹ªë«Þ«Ã«×ªÎID£¯Xñ¨øö£¯Yñ¨øö BIG_AIRSHIP_MAP_ID = 1 BIG_AIRSHIP_X = 11 BIG_AIRSHIP_Y = 10 # ?ßÀ«Õ«¡«¤«ëªÎÙ£îñ£¯?ßÀ«Õ«¡«¤«ëªÎINDEX BIG_AIRSHIP_FILE_NAME = "$Wivern" BIG_AIRSHIP_FILE_INDEX = 0 # BGM«Õ«¡«¤«ëªÎÙ£îñ BIG_AIRSHIP_BGM_NAME = "Scene9" # تÛöªÎëÖ?ªÎôøÑ¢àâïÒ # ---------------------------------------------- # ôøÑ¢ÛÕöǪ¹ªë«Þ«Ã«×ªÎID£¯Xñ¨øö£¯Yñ¨øö MAGIC_CARPET_MAP_ID = 0 MAGIC_CARPET_X = 0 MAGIC_CARPET_Y = 0 # ?ßÀ«Õ«¡«¤«ëªÎÙ£îñ£¯?ßÀ«Õ«¡«¤«ëªÎINDEX MAGIC_CARPET_FILE_NAME = "Ride" MAGIC_CARPET_FILE_INDEX = 6 # BGM«Õ«¡«¤«ëªÎÙ£îñ MAGIC_CARPET_BGM_NAME = "Airship" # ª½ªÎöâªÎàâïÒ # ------------------------------------------------------ # «¨«ó«««¦«ó«Èª·ªÊª¤?ªêÚªªÎID NOT_ENCOUNTER_VEHICIE_ID = [0, 1, 2, 3, 4, 5] # ID = 0:á³úþàÏ£¯1:ÓÞúþàÏ£¯2:Þ«ú¼àÏ£¯3:Ø©£¯4:ÓÞúþÞ«ú¼àÏ£¯5:تÛöªÎëÖ? # ?ªêÚª«¹«Æ?«È BOAT_STATE = [] # á³úþàÏ SHIP_STATE = [] # ÓÞúþàÏ AIRSHIP_STATE = [] # Þ«ú¼àÏ HORSE_STATE = [] # Ø© BIG_AIRSHIP_STATE = [] # ÓÞúþÞ«ú¼àÏ MAGIC_CARPET_STATE = [] # تÛöªÎëÖ? end #============================================================================== # ¡à Riding_Data #------------------------------------------------------------------------------ # ¡¡ÑÈ?ãÁªÎ?ßÀ?×âªËù±é©ªÊ«Ç?«¿ªòÐ⪦«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÎ«¤«ó«¹«¿«ó«¹ªÏ # $riding_data ªÇ?ðΪµªìªÞª¹¡£ #============================================================================== class Riding_Data #-------------------------------------------------------------------------- # ¡Û ÑÈ?éÄ«­«ã«é«¯«¿??«Ç?«¿ #-------------------------------------------------------------------------- # @riding_pct_name # ÑÈ?ãÁªËñìªÍªë?ßÀªÎ«Õ«¡«¤«ëÙ£ # # ¡Ø ª³ª³ªò "self" ªËª¹ªëªÈêª?ªÎ«­«ã«é«¯«¿??ßÀªò # # ÑÈ?ãÁªËñìªÍªë?ßÀªËÞŪ¤ªÞª¹¡£ # @riding_pct_index # ÑÈ?ãÁªËñìªÍªë?ßÀªÎ«¤«ó«Ç«Ã«¯«¹ # @positioning_down # ù»ú¾ª­ªÎð·ªÎêÈöÇáóïáö· # @positioning_left # ñ§ú¾ª­ªÎð·ªÎêÈöÇáóïáö· # @positioning_right # éÓú¾ª­ªÎð·ªÎêÈöÇáóïáö·(àýÕÔʦ?àýÕÔãÁªÏñ§ú¾ª­ªÎ潪Îö·ªòÞÅéÄ) # @positioning_up # ß¾ú¾ª­ªÎð·ªÎêÈöÇáóïáö· # @priority_type # ÓâѦãÁªÎªÕªµªïª·ª¤«×«é«¤«ª«ê«Æ«£(0 ªÎãÁªÎªßàâïÒ) # @object_type # ?ªëö°ªÈ?ªéªìªëö°ªÎ?×âæ½?(ª¹ªëíÞùêªÎªßtrueªòïÒëù) # # ¡Ø Úªªòò¥ªÁß¾ª²ªëøúúÞªËÞŪ¤ªÞª¹¡£ #-------------------------------------------------------------------------- def make_ride_data # ÑÈØ© @character_name = "Animal" @character_index = 5 @riding_pct_name = "Ride" @riding_pct_index = 0 @positioning_down = [[0, -18], [0, -17], [0, -18]] @positioning_left = [[4, -17], [4, -16], [4, -17]] @positioning_up = [[0, -15], [0, -14], [0, -15]] set_ride_data # «ª«ª«««ß @character_name = "Animal" @character_index = 6 @riding_pct_name = "Ride" @riding_pct_index = 1 @positioning_down = [[0, -20], [0, -19], [0, -20]] @positioning_left = [[4, -16], [4, -15], [4, -16]] @positioning_up = [[0, -15], [0, -14], [0, -15]] set_ride_data # ª¤ª«ªÀ @character_name = "Ride" @character_index = 2 @positioning_down = [[0, -13], [0, -12], [0, -11]] @positioning_left = [[0, -11], [0, -12], [0, -13]] @positioning_up = [[0, -15], [0, -14], [0, -13]] @priority_type = 0 set_ride_data # «Õ«í?«È @character_name = "Ride" @character_index = 5 @positioning_down = [[0, -11], [0, -12], [0, -13]] @positioning_left = [[0, -11], [0, -12], [0, -13]] @positioning_up = [[0, -11], [0, -12], [0, -13]] @priority_type = 0 set_ride_data # «Ú«¬«µ«¹ @character_name = "Ride" @character_index = 3 @riding_pct_name = "Ride" @riding_pct_index = 7 @positioning_down = [[0, -19], [0, -20], [0, -21]] @positioning_left = [[4, -19], [4, -18], [4, -17]] @positioning_up = [[0, -15], [0, -14], [0, -13]] set_ride_data # «È«í«Ã«³ @character_name = "Vehicle" @character_index = 6 @riding_pct_name = "Ride" @riding_pct_index = 4 @positioning_down = [[0, -10], [0, -11], [0, -10]] @positioning_left = [[-2, -10], [-1, -10], [-2, -10]] @positioning_right = [[1, -10], [2, -10], [1, -10]] @positioning_up = [[0, -10], [0, -11], [0, -10]] set_ride_data # «ª«Ö«¸«§«¯«È @character_name = "!$Object" @riding_pct_name = "self" @positioning_down = [[-1, -9], [0, -10], [1, -9]] @positioning_left = [[-6, -11], [-5, -10], [-4, -9]] @positioning_up = [[1, -11], [0, -12], [-1, -11]] @object_type = true set_ride_data # «¢«¤«Æ«à @character_name = "$Item" @riding_pct_name = "self" @positioning_down = [[-1, 1], [0, 0], [1, 1]] @positioning_left = [[-6, -1], [-5, 0], [-4, 1]] @positioning_up = [[1, -1], [0, -2], [-1, -1]] @object_type = true set_ride_data # تÛöªÎëÖ? @character_name = "Ride" @character_index = 6 @positioning_down = [[0, -12], [0, -13], [0, -14]] @positioning_left = [[0, -10], [0, -11], [0, -12]] @positioning_up = [[0, -12], [0, -13], [0, -14]] @priority_type = 0 set_ride_data # Þ«? @character_name = "$Wivern" @character_index = 0 @riding_pct_name = "$Wivern_Ride" @riding_pct_index = 0 @positioning_down = [[0, -25], [0, -24], [0, -24]] @positioning_left = [[7, -19], [7, -19], [7, -20]] @positioning_up = [[0, -24], [0, -23], [0, -23]] set_ride_data # «é«ó«¿«ó @character_name = "!Flame" @character_index = 1 @riding_pct_name = "self" @positioning_down = [[-6, 5], [-5, 4], [-4, 5]] @positioning_left = [[-3, 3], [-2, 4], [-1, 5]] @positioning_up = [[7, 1], [8, 0], [7, -1]] @object_type = true set_ride_data # ?è¬ @character_name = "!Other1" @character_index = 6 @riding_pct_name = "self" @positioning_down = [[-1, 12], [0, 11], [1, 12]] @positioning_left = [[-6, 10], [-5, 11], [-4, 12]] @positioning_up = [[1, 10], [0, 9], [-1, 10]] @object_type = true set_ride_data # «Ë«ï«È«ê @character_name = "Animal" @character_index = 2 @riding_pct_name = "self" @positioning_down = [[-1, 2], [0, 1], [1, 2]] @positioning_left = [[-8, -1], [-7, 0], [-6, 1]] @positioning_up = [[1, -2], [0, -3], [-1, -2]] @object_type = true set_ride_data end #-------------------------------------------------------------------------- # ¡Û ÍëËÒ«¤«ó«¹«¿«ó«¹??£¨«Ç?«¿«Ù?«¹ú£ÙͪÎ?Ù¥£© #-------------------------------------------------------------------------- #¡¡[character_name, character_index] ªò«­?ªÈª·ª¿«Ï«Ã«·«åªÈª·ªÆ # ö⫯«é«¹ªèªê?ðΪ·ªÞª¹¡£ #-------------------------------------------------------------------------- attr_accessor :data_riding_pct_name attr_accessor :data_riding_pct_index attr_accessor :data_positioning_down attr_accessor :data_positioning_left attr_accessor :data_positioning_right attr_accessor :data_positioning_up attr_accessor :data_priority_type attr_accessor :data_object_type #-------------------------------------------------------------------------- # ¡Û «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- def initialize @data_riding_pct_name = {} @data_riding_pct_index = {} @data_positioning_down = {} @data_positioning_left = {} @data_positioning_right = {} @data_positioning_up = {} @data_priority_type = {} @data_object_type = {} clear make_ride_data end #-------------------------------------------------------------------------- # ¡Û «¯«ê«¢ #-------------------------------------------------------------------------- def clear @character_name = "" @character_index = 0 @riding_pct_name = "" @riding_pct_index = 0 @positioning_down = [[0, 0], [0, 0], [0, 0]] @positioning_left = [[0, 0], [0, 0], [0, 0]] @positioning_right = nil @positioning_up = [[0, 0], [0, 0], [0, 0]] @priority_type = nil @object_type = false end #-------------------------------------------------------------------------- # ¡Û ÑÈ?éÄ«­«ã«é«¯«¿??«Ç?«¿«Ù?«¹ûù #-------------------------------------------------------------------------- def set_ride_data key = [@character_name, @character_index] @data_riding_pct_name[key] = @riding_pct_name @data_riding_pct_index[key] = @riding_pct_index @data_positioning_down[key] = @positioning_down @data_positioning_left[key] = @positioning_left if @positioning_right == nil @data_positioning_right[key] = [[], [], []] @data_positioning_right[key][0][0] = -@positioning_left[0][0] @data_positioning_right[key][0][1] = @positioning_left[0][1] @data_positioning_right[key][1][0] = -@positioning_left[1][0] @data_positioning_right[key][1][1] = @positioning_left[1][1] @data_positioning_right[key][2][0] = -@positioning_left[2][0] @data_positioning_right[key][2][1] = @positioning_left[2][1] else @data_positioning_right[key] = @positioning_right end @data_positioning_up[key] = @positioning_up @data_priority_type[key] = @priority_type @data_object_type[key] = @object_type clear end end #============================================================================== # ¡á Game_Vehicle #------------------------------------------------------------------------------ # ¡¡?ªêÚªªòÐ⪦«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ Game_Map «¯«é«¹ªÎ?Ý»ªÇÞÅéĪµªìªÞª¹¡£ # úÞΫޫëתË?ªêÚªª¬ªÊª¤ªÈª­ªÏ¡¢«Þ«Ã«×ñ¨øö (-1,-1) ªËàâïÒªµªìªÞª¹¡£ #============================================================================== class Game_Vehicle < Game_Character #-------------------------------------------------------------------------- # ¡Û ?íåªÎ?ªêÚªªÎ«»«Ã«Æ«£«ó«° # @move_speed : ?ªêÚªªÎáÜÓø # @walk_anime : ì¹ÔÑãÁ«¢«Ë«á # @step_anime : ïÎò­ãÁ«¢«Ë«á #-------------------------------------------------------------------------- def riding_vehicle_settings case @type when 3 # Ø© @map_id = Expansion_Vehicle::HORSE_MAP_ID @x = Expansion_Vehicle::HORSE_X @y = Expansion_Vehicle::HORSE_Y @character_name = Expansion_Vehicle::HORSE_FILE_NAME @character_index = Expansion_Vehicle::HORSE_FILE_INDEX @bgm = RPG::BGM.new @bgm.name = Expansion_Vehicle::HORSE_BGM_NAME @move_speed = 5 @walk_anime = true @step_anime = false when 4 # ÓÞúþÞ«ú¼àÏ @map_id = Expansion_Vehicle::BIG_AIRSHIP_MAP_ID @x = Expansion_Vehicle::BIG_AIRSHIP_X @y = Expansion_Vehicle::BIG_AIRSHIP_Y @character_name = Expansion_Vehicle::BIG_AIRSHIP_FILE_NAME @character_index = Expansion_Vehicle::BIG_AIRSHIP_FILE_INDEX @bgm = RPG::BGM.new @bgm.name = Expansion_Vehicle::BIG_AIRSHIP_BGM_NAME @move_speed = 5 @walk_anime = true @step_anime = true when 5 # تÛöªÎëÖ? @map_id = Expansion_Vehicle::MAGIC_CARPET_MAP_ID @x = Expansion_Vehicle::MAGIC_CARPET_X @y = Expansion_Vehicle::MAGIC_CARPET_Y @character_name = Expansion_Vehicle::MAGIC_CARPET_FILE_NAME @character_index = Expansion_Vehicle::MAGIC_CARPET_FILE_INDEX @bgm = RPG::BGM.new @bgm.name = Expansion_Vehicle::MAGIC_CARPET_BGM_NAME @move_speed = 6 @walk_anime = true @step_anime = true end end #-------------------------------------------------------------------------- # ¡Û ?ðíªÎ?ªêÚªªÎ«»«Ã«Æ«£«ó«° # @move_speed : ?ªêÚªªÎáÜÓø # @walk_anime : ì¹ÔÑãÁ«¢«Ë«á # @step_anime : ïÎò­ãÁ«¢«Ë«á #-------------------------------------------------------------------------- def tig_ev_vehicle_initialize case @type when 0 # á³úþàÏ @move_speed = 4 @walk_anime = true @step_anime = true when 1 # ÓÞúþàÏ @move_speed = 5 @walk_anime = false @step_anime = true when 2 # Þ«ú¼àÏ @move_speed = 5 @walk_anime = true @step_anime = true end end #-------------------------------------------------------------------------- # ¡Û ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_reader :pattern # «Ñ«¿?«ó attr_reader :bgm # ?ªê?ªßãÁBGM attr_accessor :priority_type # «×«é«¤«ª«ê«Æ«£«¿«¤«× attr_accessor :move_speed # ì¹ÔÑáÜÓø attr_accessor :walk_anime # ?ú¼«¢«Ë«á attr_accessor :step_anime # ðëÓΪ߫¢«Ë«á attr_accessor :instant # ìéãÁîܪÊû¼ªÓõóª·«Õ«é«° #-------------------------------------------------------------------------- # ¡Ý «·«¹«Æ«ààâïҪΫí?«É #-------------------------------------------------------------------------- alias tig_ev_load_system_settings load_system_settings def load_system_settings tig_ev_load_system_settings tig_ev_vehicle_initialize riding_vehicle_settings @instant = false end #-------------------------------------------------------------------------- # ¡Ü «ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def refresh # êÈöǪÎðàïÚ if @driving @map_id = $game_map.map_id sync_with_player elsif @map_id == $game_map.map_id moveto(@x, @y) end # «×«é«¤«ª«ê«Æ«£«¿«¤«×ðàïÚ if [2, 4].include?(@type) # Þ«ú¼àÏ?ÓÞúþÞ«ú¼àϪÎíÞùê @priority_type = @driving ? 2 : vehicle_priority else # ª½ªÎöâªÎ?ªêÚª @priority_type = @driving ? 1 : vehicle_priority end end #-------------------------------------------------------------------------- # ¡Ü «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- def update super if [2, 4, 5].include?(@type) # Þ«ú¼àÏ?ÓÞúþÞ«ú¼àÏ?تÛöªÎëÖ?ªÎíÞùê case @type # «¿«¤«×ªËùêªïª»ª¿õÌð¢ïêÎÍÔªµªÎö¢Ôð when 2 ; height = 1 when 4 ; height = 2 when 5 ; height = 1 end if @driving return if $game_player.follow_member_gathering == true if @altitude < MAX_ALTITUDE * height @altitude += 1 # ÍÔÓøªòß¾ª²ªë end elsif @altitude > 0 @altitude -= 1 # ÍÔÓøªòù»ª²ªë if @altitude == 0 @priority_type = vehicle_priority # ÓâѦãÁªÎ«×«é«¤«ª«ê«Æ«£ªË $game_player.ride_off_character $game_player.turn_down update_bush_depth turn_left end end end end #-------------------------------------------------------------------------- # ¡Ý «¢«Ë«á«««¦«ó«ÈªÎÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update_animation update_animation unless $@ def update_animation if riding_type? and rided_character == nil # ?ªê?ªßõÌñéªÎ«¢«Ë«áªò«ª«ÕªË @pattern = @original_pattern return end unless @driving or @altitude > 0 # ?ªêÚªÚ±ÞÅéÄãÁªÎ«¢«Ë«áªò«ª«ÕªË @pattern = @original_pattern return end tig_ev_update_animation end #-------------------------------------------------------------------------- # ¡Ý «×«ì«¤«ä?ªÈªÎÔÒÑ¢ #-------------------------------------------------------------------------- alias tig_ev_ve_sync_with_player sync_with_player def sync_with_player tig_ev_ve_sync_with_player @stop_count = $game_player.stop_count # ïÎò­ãÁªÎ«¢«Ë«áªòï᪷ª¯«·«ó«¯«íªµª»ªë?ªÎ«««¦«ó«ÈÔÒÑ¢õÚÊ¥ end #-------------------------------------------------------------------------- # ¡Ý ì¹ÔÑʦÒö÷÷ïÒ #-------------------------------------------------------------------------- alias tig_ev_ve_movable? movable? def movable? return false if (@type == 4 and @altitude < MAX_ALTITUDE * 2) return false if (@type == 5 and @altitude < MAX_ALTITUDE) # ß¾ã°ñé¡¢ù»Ë½ñéªÊªéªÐÔѪ±ªÊª¤(õÚÊ¥?ªêÚª) return tig_ev_ve_movable? end #-------------------------------------------------------------------------- # ¡Û ÓâѦñéªÎ«×«é«¤«ª«ê«Æ«£ªÎö¢Ôð #-------------------------------------------------------------------------- def vehicle_priority key = [@character_name, @character_index] result = $riding_data.data_priority_type[key] return result == nil ? 1 : result end #-------------------------------------------------------------------------- # ¡Ý ?Øü Y ñ¨øöªÎö¢Ôð #-------------------------------------------------------------------------- alias tig_ev_ve_screen_y screen_y def screen_y if @type == 5 super - altitude / 5 # تÛöªÎëÖ?ªòÝ©ë´ªµª»ªë(ÍÔªµªÎðàï½) else tig_ev_ve_screen_y end end #-------------------------------------------------------------------------- # ¡Ü ?ªêÚªªË?ªë #-------------------------------------------------------------------------- def get_on @driving = true if [2, 4].include?(@type) # Þ«ú¼àÏ?ÓÞúþÞ«ú¼àϪÎíÞùê @priority_type = 2 # «×«é«¤«ª«ê«Æ«£ªò¡¸÷×ßÈ«­«ã«éªÎß¾¡¹ªË?ÌÚ end @bgm.play if @bgm.name != "" # BGM ËÒã· (àâïÒªµªìªÆª¤ªÊª±ªìªÐÐѪÎÍتò??) add_vehicle_states end #-------------------------------------------------------------------------- # ¡Ü ?ªêÚªª«ªé˽ªêªë #-------------------------------------------------------------------------- def get_off @driving = false unless [2, 4, 5].include?(@type) # Þ«ú¼àÏ?ÓÞúþÞ«ú¼àÏ?تÛöªÎëÖ?ªÎíÞùê @priority_type = vehicle_priority # Üâ?ªÎ«×«é«¤«ª«ê«Æ«£ªË?ª¹ $game_player.ride_off_character # ÑÈ??÷¾ªÎú°ð¶ end @direction = 4 remove_vehicle_state end #-------------------------------------------------------------------------- # ¡Û ?ªêÚª«¹«Æ?«ÈªÎö¢Ôð #-------------------------------------------------------------------------- def vehicle_states states = [] case @type when 0 ; states = Expansion_Vehicle::BOAT_STATE when 1 ; states = Expansion_Vehicle::SHIP_STATE when 2 ; states = Expansion_Vehicle::AIRSHIP_STATE when 3 ; states = Expansion_Vehicle::HORSE_STATE when 4 ; states = Expansion_Vehicle::BIG_AIRSHIP_STATE when 5 ; states = Expansion_Vehicle::MAGIC_CARPET_STATE end return states end #-------------------------------------------------------------------------- # ¡Û ?ªêÚª«¹«Æ?«ÈªÎÜõÊ¥ #-------------------------------------------------------------------------- def add_vehicle_states for state in vehicle_states $game_party.members.each {|actor|actor.add_state(state)} end end #-------------------------------------------------------------------------- # ¡Û ?ªêÚª«¹«Æ?«ÈªÎú°ð¶ #-------------------------------------------------------------------------- def remove_vehicle_state for state in vehicle_states $game_party.members.each {|actor|actor.remove_state(state)} end end #-------------------------------------------------------------------------- # ¡Ü êÈöǪÎ?ÌÚ¡¡¡Ø??ò¦ïÒªòðÚªß?ªß # map_id : ì¹ÔÑ໪Ϋޫë×ID # x : ì¹ÔÑ໫ޫëתÎXñ¨øö # y : ì¹ÔÑ໫ޫëתÎYñ¨øö # variables : ??ò¦ïÒª¹ªëª«£¿ #-------------------------------------------------------------------------- def set_location(map_id, x, y, variables = false) # ??ªÇò¦ïÒªÎíÞùê if variables map_id = $game_variables[map_id] x = $game_variables[x] y = $game_variables[y] end @map_id = map_id @x = x @y = y refresh end #-------------------------------------------------------------------------- # ¡Û ?ªêÚªªòû¼ªÓõóª¹ # here : true = «×«ì?«ä?ªÈÔÒêÈöÇ¡¡false = «×«ì?«ä?ªÎÙͪÎîñ #-------------------------------------------------------------------------- def call(test = false, here = false) return false if $game_player.event_vehicle_lock # ?ßڪȪʪëêÈöÇñ¨øöªòö¢Ôð if here # ª³ªÎíÞ x = $game_player.x y = $game_player.y else # ÙͪÎîñ x = $game_map.x_with_direction($game_player.x, $game_player.direction) y = $game_map.y_with_direction($game_player.y, $game_player.direction) end # Þ«ú¼àÏòäìýÐ×ò­«¨«ê«¢(?í嫹«¯«ê«×«ÈàâïÒ)?ªÇû¼ªÓõóª·Ð×ò­ªµªìªÆª¤ªë«¿«¤«× if $game_map.airship_obstacle_area != nil and $game_map.airship_obstacle_area.include?([x, y]) return false if Expansion_Vehicle::CAN_T_CALL.include?(@type) end # öâªÎ?ªêÚªª¬ª½ª³ªËª¢ªë£¿ return false if $game_map.vehicle_pos_nt?(x, y) # «¿«¤«×ܬªË÷×ú¼÷÷ïÒ?ó·×Á÷÷ïÒ case @type when 0 # á³úþàÏ can_call = $game_map.boat_passable?(x, y) when 1 # ÓÞúþàÏ can_call = $game_map.ship_passable?(x, y) when 2 # Þ«ú¼àÏ can_call = $game_map.airship_land_ok?(x, y) when 3 # Ø© can_call = $game_map.horse_passable?(x, y) when 4 # ÓÞúþÞ«ú¼àÏ can_call = $game_map.big_airship_land_ok?(x, y) when 5 # تÛöªÎëÖ? can_call = $game_map.airship_land_ok?(x, y) end # ÷÷ïÒªËÙýð¹ªÊª±ªìªÐ?ð·ªËû¼ªÖ if can_call set_location($game_map.map_id, x, y) unless test return true else return false end end #-------------------------------------------------------------------------- # ¡Û ª³ªÎíÞªË?ªêÚªªòû¼ªÓõóª¹ # ª³ªÎ«³«Þ«ó«ÉªÇû¼ªóªÀ?ªêÚªªÏ¡¢Ë½ªêª¿ãÁªËἪ¨ªÆª·ªÞª¦¡£ #-------------------------------------------------------------------------- def call_here call(false, true) end #-------------------------------------------------------------------------- # ¡Û ÙͪÎîñªË?ªêÚªªòû¼ªÓõ󪻪몫ªÎ«Æ«¹«È #-------------------------------------------------------------------------- def call_test return call(true) end #-------------------------------------------------------------------------- # ¡Û ª³ªÎíÞªË?ªêÚªªòû¼ªÓõ󪻪몫ªÎ«Æ«¹«È #-------------------------------------------------------------------------- def call_test_here return call(true, true) end #-------------------------------------------------------------------------- # ¡Û ìéãÁîܪË?ªêÚªªòû¼ªÓõóª¹ # ª³ªÎ«³«Þ«ó«ÉªÇû¼ªóªÀ?ªêÚªªÏ¡¢Ë½ªêª¿ãÁªËἪ¨ªÆª·ªÞª¦¡£ #-------------------------------------------------------------------------- def instant_call @instant = true call end #-------------------------------------------------------------------------- # ¡Û ª³ªÎíÞªËìéãÁîܪË?ªêÚªªòû¼ªÓõóª¹ # ª³ªÎ«³«Þ«ó«ÉªÇû¼ªóªÀ?ªêÚªªÏ¡¢Ë½ªêª¿ãÁªËἪ¨ªÆª·ªÞª¦¡£ #-------------------------------------------------------------------------- def instant_call_here @instant = true call(false, true) end end #============================================================================== # ¡á Scene_Title #------------------------------------------------------------------------------ # ¡¡«¿«¤«È«ë?ØüªÎ?×âªòú¼ª¦«¯«é«¹ªÇª¹¡£ #============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ¡Ý ÊÀðú«²?«à«ª«Ö«¸«§«¯«ÈªÎíÂà÷ #-------------------------------------------------------------------------- alias tig_ev_create_game_objects create_game_objects def create_game_objects tig_ev_create_game_objects $riding_data = Riding_Data.new # ÑÈ?úþ«­«ã«é«¯«¿?ªÎ«Ç?«¿ßæà÷ end end #============================================================================== # ¡á AudioFile #------------------------------------------------------------------------------ # ¡¡BGM¡¢BGS¡¢ME¡¢SE ªÎ«¹?«Ñ?«¯«é«¹ªÇª¹¡£ #============================================================================== class RPG::AudioFile #-------------------------------------------------------------------------- # ¡Û «Õ«¡«¤«ë(«Í?«à)ªÎ?ÌÚ # Ù£îñªÎ?ÌÚªÀª±ªÇÍتò?ÌڪǪ­ªëªèª¦ªË #-------------------------------------------------------------------------- def name=(name) @name = name end end #============================================================================== # ¡á Game_Map #------------------------------------------------------------------------------ # ¡¡«Þ«Ã«×ªòÐ⪦«¯«é«¹ªÇª¹¡£«¹«¯«í?«ëªä÷×ú¼Ê¦Òö÷÷ïҪʪɪÎѦÒöªòò¥ªÃªÆª¤ªÞª¹¡£ # ª³ªÎ«¯«é«¹ªÎ«¤«ó«¹«¿«ó«¹ªÏ $game_map ªÇ?ðΪµªìªÞª¹¡£ #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ¡Û ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_reader :airship_obstacle_area # Þ«ú¼àÏÜÍ𾫹«¯«ê«×«ÈÖ§ýÍéÄ #-------------------------------------------------------------------------- # ¡Ý «»«Ã«È«¢«Ã«× # map_id : «Þ«Ã«× ID # ¡Ø ?ªêÚªªòܬ«Þ«Ã«×ªË?ªêêƪ·ª¿ð·ªÎ?×âªòõÚÊ¥ #-------------------------------------------------------------------------- alias tig_ev_setup setup def setup(map_id) tig_ev_setup(map_id) result = false if $game_player.vehicle_event_data != nil # «¤«Ù«ó«È?ªêÚªò¥ªÁêƪ·ãÁªÎ?×â # «Þ«Ã«×?ªË?ßÀ?Ù£îñª¬ÔÒª¸«¤«Ù«ó«Èª¬ðí¹ªëªÊªé?ªêÚªªò??ª¹ªë for event in @events.values if event.name == $game_player.vehicle_event_data[0] and event.character_name == $game_player.vehicle_event_data[1] and event.character_index == $game_player.vehicle_event_data[2] $game_player.vehicle_event_data[3] = event.id if event.riding_type? $game_player.ride_off_character $game_player.ride_on(event) key = [event.character_name, event.character_index] end $game_player.moveto($game_player.new_x, $game_player.new_y) event.sync_with_player result = true break end end end unless result event_vehicle_refresh # «¤«Ù«ó«È?ªêÚªªÎôøÑ¢ûù(ù¼ªâ?ªÃªÆª¤ªÊª¤?÷¾ªË) end interpreter.update end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«È?ªêÚªªÎ«ê«Õ«ì«Ã«·«å #-------------------------------------------------------------------------- def event_vehicle_refresh $game_player.vehicle_event_data = nil $game_player.event_vehicle_lock = false if $game_player.vehicle_type == -1 $game_player.ride_off_character end end #-------------------------------------------------------------------------- # ¡Ý ?ªêÚªªÎíÂà÷ #-------------------------------------------------------------------------- alias tig_ev_create_vehicles create_vehicles def create_vehicles tig_ev_create_vehicles @vehicles[3] = Game_Vehicle.new(3) # Ø© @vehicles[4] = Game_Vehicle.new(4) # ÓÞúþÞ«ú¼àÏ @vehicles[5] = Game_Vehicle.new(5) # تÛöªÎëÖ? end #-------------------------------------------------------------------------- # ¡Û Ø©ªÎö¢Ôð #-------------------------------------------------------------------------- def horse return @vehicles[3] end #-------------------------------------------------------------------------- # ¡Û ÓÞúþÞ«ú¼àϪÎö¢Ôð #-------------------------------------------------------------------------- def big_airship return @vehicles[4] end #-------------------------------------------------------------------------- # ¡Û تÛöªÎëÖ?ªÎö¢Ôð #-------------------------------------------------------------------------- def magic_carpet return @vehicles[5] end #-------------------------------------------------------------------------- # ¡Û «×«ì«¤«ä?ªÎ?ªêÚªªËªÊªÃªÆª¤ªë«¤«Ù«ó«ÈªÎö¢Ôð #-------------------------------------------------------------------------- def event_vehicle return nil if $game_player.vehicle_event_data == nil return @events[$game_player.vehicle_event_data[3]] end #-------------------------------------------------------------------------- # ¡Û ?íå?ªêÚªéĪÎ÷×ú¼î¡úª÷÷ïÒ # ¡Ø ìéÝ»ªÎ?ªêÚªª¬÷×Φª¹ªëª³ªÈª¬ªÇª­ªÊª¤«¿«¤«ëªÎIDªòª³ª³ªÇò¦ïÒ¡£ #-------------------------------------------------------------------------- def ex_obstacle?(tile_id) if (2048..8191).include?(tile_id) tile_id -= ((tile_id - 2048) % 48) end return [157, 160, 161, 162, 163, 164, 165, 166, 168, 169, 170, 171, 172, 174, 175, 184, 185, 186, 187, 188, 189, 190, 191, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 222, 226, 227, 228, 232, 233, 234, 235, 236, 237, 238, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 2864, 3248, 3632, 4016, 2912, 3296, 3680, 4064].include?(tile_id) end #-------------------------------------------------------------------------- # ¡Û ?íå?ªêÚªéĪÎ÷×ú¼úÉʦ÷÷ïÒ #¡¡¡¡ ¡Ø Ý©ë´úþ?ªêÚªª¬êƪ¨ªëª³ªÈªÎªÇª­ªë«¿«¤«ëªÎIDªòª³ª³ªÇò¦ïÒ¡£ #-------------------------------------------------------------------------- def ex_pass?(tile_id) if (2048..8191).include?(tile_id) tile_id -= ((tile_id - 2048) % 48) end return [526, 527, 671, 679, 2048, 2096, 2240, 2336, 2432, 2528, 2624, 2720, 1536, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1624, 1625].include?(tile_id) end #-------------------------------------------------------------------------- # ¡Û «Æ?«Ö«ëúþ«ª«Ö«¸«§«¯«È÷÷ïÒ #¡¡¡¡ ¡Ø «ª«Ö«¸«§«¯«Èúþ?ªêÚªªòöǪ¯ª³ªÈª¬ªÇª­ªë«¿«¤«ëªÎIDªòª³ª³ªÇò¦ïÒ¡£ #-------------------------------------------------------------------------- def ex_table?(tile_id) if (2048..8191).include?(tile_id) tile_id -= ((tile_id - 2048) % 48) end return [75, 131, 350, 352, 353, 354, 355, 680, 3152, 3536, 3920, 4304].include?(tile_id) end #-------------------------------------------------------------------------- # ¡Û Ø©ªÎ÷×ú¼Ê¦Òö÷÷ïÒ # ¡Ø passable? «á«½«Ã«ÉªòÝ»ÝÂËÇð㪷ª¿ªâªÎªÇª¹¡£ #-------------------------------------------------------------------------- def horse_passable?(x, y, flag = 0x01) for event in events_xy(x, y) # ñ¨øöª¬ìéöȪ¹ªë«¤«Ù«ó«ÈªòðàªÙªë next if event.tile_id == 0 # «°«é«Õ«£«Ã«¯ª¬«¿«¤«ëªÇªÏªÊª¤ next if event.priority_type > 0 # [÷×ßÈ«­«ã«éªÎù»] ªÇªÏªÊª¤ next if event.through # ª¹ªê?ª±?÷¾ pass = @passages[event.tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ end for i in [2, 1, 0] # «ì«¤«ä?ªÎß¾ª«ªéâ÷ªËðàªÙªë tile_id = @map.data[x, y, i] # «¿«¤«ë ID ªòö¢Ôð return false if tile_id == nil # «¿«¤«ë ID ö¢Ôðã÷ø¨ : ÷×ú¼Üôʦ pass = @passages[tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return false if ex_obstacle?(tile_id) ### ?íå÷×ú¼Üôʦ(÷åâ¨Ý»ÝÂ) ### return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ end return false # ÷×ú¼Üôʦ end #-------------------------------------------------------------------------- # ¡Û تÛöªÎëÖ?ªÎ÷×ú¼Ê¦Òö÷÷ïÒ # ¡Ø passable? «á«½«Ã«ÉªòÝ»ÝÂËÇð㪷ª¿ªâªÎªÇª¹¡£ #-------------------------------------------------------------------------- def magic_carpet_passable?(x, y, flag = 0x01) for event in events_xy(x, y) # ñ¨øöª¬ìéöȪ¹ªë«¤«Ù«ó«ÈªòðàªÙªë next if event.tile_id == 0 # «°«é«Õ«£«Ã«¯ª¬«¿«¤«ëªÇªÏªÊª¤ next if event.priority_type > 0 # [÷×ßÈ«­«ã«éªÎù»] ªÇªÏªÊª¤ next if event.through # ª¹ªê?ª±?÷¾ pass = @passages[event.tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ end for i in [2, 1, 0] # «ì«¤«ä?ªÎß¾ª«ªéâ÷ªËðàªÙªë tile_id = @map.data[x, y, i] # «¿«¤«ë ID ªòö¢Ôð return false if tile_id == nil # «¿«¤«ë ID ö¢Ôðã÷ø¨ : ÷×ú¼Üôʦ pass = @passages[tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return false if ex_obstacle?(tile_id) ### ?íå÷×ú¼Üôʦ(÷åâ¨Ý»ÝÂ) ### return true if ex_pass?(tile_id) ### ?íå÷×ú¼úÉʦ(÷åâ¨Ý»ÝÂ) ### return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ end return false # ÷×ú¼Üôʦ end #-------------------------------------------------------------------------- # ¡Û «Õ«í?«ÈªÎ÷×ú¼Ê¦Òö÷÷ïÒ # ¡Ø passable? «á«½«Ã«ÉªòÝ»ÝÂËÇð㪷ª¿ªâªÎªÇª¹¡£ #-------------------------------------------------------------------------- def float_passable?(x, y, flag = 0x01) # for event in events_xy(x, y) # ñ¨øöª¬ìéöȪ¹ªë«¤«Ù«ó«ÈªòðàªÙªë # next if event.tile_id == 0 # «°«é«Õ«£«Ã«¯ª¬«¿«¤«ëªÇªÏªÊª¤ # next if event.priority_type > 0 # [÷×ßÈ«­«ã«éªÎù»] ªÇªÏªÊª¤ # next if event.through # ª¹ªê?ª±?÷¾ # pass = @passages[event.tile_id] # ÷×ú¼?àõªòö¢Ôð # next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ # return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ # return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ # end for i in [2, 1, 0] # «ì«¤«ä?ªÎß¾ª«ªéâ÷ªËðàªÙªë tile_id = @map.data[x, y, i] # «¿«¤«ë ID ªòö¢Ôð return false if tile_id == nil # «¿«¤«ë ID ö¢Ôðã÷ø¨ : ÷×ú¼Üôʦ pass = @passages[tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return false if ex_obstacle?(tile_id) ### ?íå÷×ú¼Üôʦ(÷åâ¨Ý»ÝÂ) ### return true if ex_pass?(tile_id) ### ?íå÷×ú¼úÉʦ(÷åâ¨Ý»ÝÂ) ### #return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ # «³«á«ó«È«¢«¦«È #return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ # «³«á«ó«È«¢«¦«È end return false # ÷×ú¼Üôʦ end #-------------------------------------------------------------------------- # ¡Û «ª«Ö«¸«§«¯«ÈªÎàâöÇʦÒö÷÷ïÒ # ¡Ø passable? «á«½«Ã«ÉªòÝ»ÝÂËÇð㪷ª¿ªâªÎªÇª¹¡£ #-------------------------------------------------------------------------- def object_passable?(x, y, flag = 0x01) for event in events_xy(x, y) # ñ¨øöª¬ìéöȪ¹ªë«¤«Ù«ó«ÈªòðàªÙªë next if event.tile_id == 0 # «°«é«Õ«£«Ã«¯ª¬«¿«¤«ëªÇªÏªÊª¤ next if event.priority_type > 0 # [÷×ßÈ«­«ã«éªÎù»] ªÇªÏªÊª¤ next if event.through # ª¹ªê?ª±?÷¾ pass = @passages[event.tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ end for i in [2, 1, 0] # «ì«¤«ä?ªÎß¾ª«ªéâ÷ªËðàªÙªë tile_id = @map.data[x, y, i] # «¿«¤«ë ID ªòö¢Ôð return false if tile_id == nil # «¿«¤«ë ID ö¢Ôðã÷ø¨ : ÷×ú¼Üôʦ pass = @passages[tile_id] # ÷×ú¼?àõªòö¢Ôð next if pass & 0x10 == 0x10 # [¡Ù] : ÷×ú¼ªËç¯úª·ªÊª¤ return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ return true if ex_table?(tile_id) ### «Æ?«Ö«ë÷÷ïÒ(÷åâ¨Ý»ÝÂ) ### #return true if pass & flag == 0x00 # [¡Û] : ÷×ú¼Ê¦ # «³«á«ó«È«¢«¦«È return false if pass & flag == flag # [¡¿] : ÷×ú¼Üôʦ end return false # ÷×ú¼Üôʦ end #-------------------------------------------------------------------------- # ¡Ý Þ«ú¼àϪÎó·×ÁʦÒö÷÷ïÒ # x : X ñ¨øö # y : Y ñ¨øö #-------------------------------------------------------------------------- alias tig_ev_airship_land_ok? airship_land_ok? def airship_land_ok?(x, y) if $game_player.now_vehicle == @vehicles[4] # úÞÎ?ªêÚªª¬ÓÞúþàϪʪéªÐ return big_airship_land_ok?(x, y) # ÓÞúþÞ«ú¼àϪÎó·×ÁʦÒö÷÷ïÒ else # Þ«ú¼àϪÎó·×ÁʦÒö÷÷ïÒ return false if hide_tile?(x, y) # ÚªëäªËªÏó·ò¢Üôʦ for i in [2, 1, 0] return false if ex_obstacle?(@map.data[x, y, i]) # ?íå÷×ú¼Üôʦ end return tig_ev_airship_land_ok?(x, y) # ÷×ßȪÎó·×ÁʦÒö÷÷ïÒ end end #-------------------------------------------------------------------------- # ¡Ý ÓÞúþÞ«ú¼àϪÎó·×ÁʦÒö÷÷ïÒ # x : X ñ¨øö # y : Y ñ¨øö #-------------------------------------------------------------------------- def big_airship_land_ok?(x, y) return false if hide_tile?(x, y) # ÚªëäªËªÏó·ò¢Üôʦ return passable?(x, y) # ÷×ßȪÎ÷×ú¼÷÷ïÒ end #-------------------------------------------------------------------------- # ¡Û Úªë䪫£¿÷÷ïÒ # x : X ñ¨øö # y : Y ñ¨øö #-------------------------------------------------------------------------- def hide_tile?(x, y) tile_id = @map.data[x, y, 2] if tile_id != nil return @passages[tile_id] == 0x16 end return false end #-------------------------------------------------------------------------- # ¡Û ªÊªóªéª«ªÎ?ªêÚªª¬ª¢ªëª«£¿ # x : X ñ¨øö # y : Y ñ¨øö #-------------------------------------------------------------------------- def vehicle_pos_nt?(x, y) return true if boat.pos_nt?(x, y) return true if ship.pos_nt?(x, y) return true if airship.pos_nt?(x, y) and not airship.driving return true if horse.pos_nt?(x, y) return true if big_airship.pos_nt?(x, y) and not big_airship.driving return true if magic_carpet.pos_nt?(x, y) return false end #-------------------------------------------------------------------------- # ¡Ý BGM / BGS í»ÔÑï·ªêô𪨠# ¡Ø ?ªêÚªªò˽ªêª¿ð·ªÎBGMî¢ËÒªÎ?ÔѪòáóïá¡£ #-------------------------------------------------------------------------- alias tig_ev_autoplay autoplay def autoplay if $game_player.vehicle_type > -1 # ?ªêÚªãÁªÎí»ÔÑæÑñ´ $game_player.now_vehicle.bgm.play $game_player.walking_bgm = @map.bgm unless @map.autoplay_bgm # «Þ«Ã«×BGMª¬Ú±àâïҪʪé $game_player.walking_bgm.name = "" # ?ú¼î¢ËÒãÁªÎBGMªòÙíëåªË end else tig_ev_autoplay end end end #============================================================================== # ¡á Game_Character #------------------------------------------------------------------------------ # ¡¡«­«ã«é«¯«¿?ªòÐ⪦«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ Game_Player «¯«é«¹ªÈ Game_Event # «¯«é«¹ªÎ«¹?«Ñ?«¯«é«¹ªÈª·ªÆÞÅéĪµªìªÞª¹¡£ #============================================================================== class Game_Character #-------------------------------------------------------------------------- # ¡Û ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_reader :altitude attr_reader :stop_count attr_reader :on_tile # Ûú«¿«¤«ë?íåéÄ«À«ß? attr_reader :turn_back # Ûú«¿«¤«ë?íåéÄ«À«ß? attr_accessor :stop_count attr_accessor :riding_character_id attr_accessor :rided_character_id #-------------------------------------------------------------------------- # ¡Ý «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- alias tig_ev_initialize initialize def initialize tig_ev_initialize @riding_character_id = nil @rided_character_id = nil @altitude = 0 end #-------------------------------------------------------------------------- # ¡Ý ì¹ÔÑãÁªÎÌÚãæ # ¡Ø öâªÎ«­«ã«é«¯«¿?ªØªÎÑÈ?ãÁªÎ«¢«Ë«áªòïÎò­ªµª»ªë¡£ #-------------------------------------------------------------------------- alias tig_ev_update_move update_move def update_move tig_ev_update_move if riding_character != nil # öâªÎ«­«ã«é«¯«¿?ªØÑÈ?ª·ªÆª¤ªëíÞùê key = [riding_character.character_name, riding_character.character_index] unless $riding_data.data_object_type[key] # «ª«Ö«¸«§«¯«È«¿«¤«×ªÇªÊª±ªìªÐ @anime_count = 0 end end end #-------------------------------------------------------------------------- # ¡Û ÑÈ?«¿«¤«×ªÎ?ªêÚªª«£¿(«ª«Ö«¸«§«¯«È«¿«¤«×ùߪà) #-------------------------------------------------------------------------- def riding_type? key = [@character_name, @character_index] return $riding_data.data_riding_pct_name.key?(key) end #-------------------------------------------------------------------------- # ¡Û «ª«Ö«¸«§«¯«È«¿«¤«×(ªÎ?ªêÚª)ª«£¿ #-------------------------------------------------------------------------- def object_type? key = [@character_name, @character_index] return $riding_data.data_object_type.key?(key) end #-------------------------------------------------------------------------- # ¡Ý «­«ã«é«¯«¿?õúÔÍ÷÷ïÒ # x : X ñ¨øö # y : Y ñ¨øö # «×«ì«¤«ä?ªÈ?ªêÚªªòùߪᡢ÷×ßÈ«­«ã«éªÎõúÔͪò?õ󪹪롣 #-------------------------------------------------------------------------- alias tig_ev_collide_with_characters? collide_with_characters? def collide_with_characters?(x, y) if @priority_type == 1 # í»Ýª¬÷×ßÈ«­«ã«é if self.is_a?(Game_Player) # «×«ì«¤«ä?ªÎíÞùê if riding_character != nil # ÑÈ?ª·ªÆª¤ªëíÞùê return true if $game_player.other_vehicle?(x, y) # ª½ªÎöâªÎ?ªêÚªªÈõúÔÍ end else # «×«ì«¤«ä?ì¤èâªÎíÞùê return true if $game_map.vehicle_pos_nt?(x, y) # ?ªêÚªªÈõúÔÍ end end return tig_ev_collide_with_characters?(x, y) end #-------------------------------------------------------------------------- # ¡Ý ?Øü Z ñ¨øöªÎö¢Ôð # ¡Ø ÑÈ?éÄ?ßÀõÚÊ¥ªËªèªêÔÒêÈöÇ?ßÀª¬?ª¨ªë?¡¢ # ñìªÊªêâ÷ªòñ¨øöªËùêªïª»ªÆïÚ×⪷ªÆª¤ªë¡£ #-------------------------------------------------------------------------- alias tig_ev_screen_z screen_z def screen_z if riding_character != nil return riding_character.screen_z + 1 end return tig_ev_screen_z + (screen_y / 18) * 3 end #-------------------------------------------------------------------------- # ¡Ý Ùòªß䢪µªÎÌÚãæ # ¡Ø ÑÈ?ª·ª¿«­«ã«é«¯«¿?ªËÙòªß?×⪬ªµªìªëªÎªòÛÁª°¡£ #-------------------------------------------------------------------------- alias tig_ev_update_bush_depth update_bush_depth def update_bush_depth if self.is_a?(Game_Player) and $game_player.now_vehicle != nil return @bush_depth = 0 elsif self.is_a?(Game_Vehicle) and @type == 5 return @bush_depth = 0 elsif riding_character != nil return @bush_depth = 0 unless riding_character.object_type? end return tig_ev_update_bush_depth end #-------------------------------------------------------------------------- # ¡Û öâªÎ«­«ã«é«¯«¿?ªËªÎªë #-------------------------------------------------------------------------- def ride_on(character, test = false) return false if riding_character != nil # ?ªËÑÈ?ñéªÊªéÑÈ?Üôʦ return false if character.rided_character != nil # ª¹ªÇªË?ªê⢪¬ª¤ªë«­«ã«éªØªÏÑÈ?Üôʦ return true if test # «Æ«¹«ÈªÊªéªÐª³ª³ªÇ true ªòÚ÷ª·ªÆðûÖõ if character.is_a?(Game_Player) @riding_character_id = 0 elsif character.is_a?(Game_Vehicle) @riding_character_id = -1 @riding_character_id -= character.type else @riding_character_id = character.id end if self.is_a?(Game_Player) character.rided_character_id = 0 elsif self.is_a?(Game_Vehicle) character.rided_character_id = -1 character.rided_character_id -= @type else character.rided_character_id = @id end character.sync_with_rided return true end #-------------------------------------------------------------------------- # ¡Û í»Ýª¬?ªêÚªªËª·ªÆª¤ªë«­«ã«é«¯«¿? #-------------------------------------------------------------------------- def riding_character return if @riding_character_id == nil if @riding_character_id == 0 return $game_player elsif @riding_character_id < 0 return $game_map.vehicles[@riding_character_id.abs - 1] else return $game_map.events[@riding_character_id] end end #-------------------------------------------------------------------------- # ¡Û í»ÝªÎ?ªê⢪Ȫʪêƪ¤ªë«­«ã«é«¯«¿? #-------------------------------------------------------------------------- def rided_character return if @rided_character_id == nil if @rided_character_id == 0 return $game_player elsif @rided_character_id < 0 return $game_map.vehicles[@rided_character_id.abs - 1] else return $game_map.events[@rided_character_id] end end #-------------------------------------------------------------------------- # ¡Û öâªÎ«­«ã«é«¯«¿?ª«ªéªªªêªë #-------------------------------------------------------------------------- def ride_off_character(test = false) return false if riding_character == nil # ÑÈ?ª·ªÆªÊª±ªìªÐ˽ªêªìªÊª¤ return true if test # «Æ«¹«ÈªÊªéªÐª³ª³ªÇ true ªòÚ÷ª·ªÆðûÖõ riding_character.rided_character_id = nil @riding_character_id = nil return true end #-------------------------------------------------------------------------- # ¡Û ÑÈ?«­«ã«é«¯«¿?ªÈªÎÔÒÑ¢ #-------------------------------------------------------------------------- def sync_with_rided @x = rided_character.x @y = rided_character.y @real_x = rided_character.real_x @real_y = rided_character.real_y @direction = @direction_fix ? @direction : rided_character.direction update_bush_depth @stop_count = rided_character.stop_count end #-------------------------------------------------------------------------- # ¡Û Ó«ó¬«Þ«Ã«×éÄ??íå÷×Φ÷÷ïÒ(«À«ß?«á«½«Ã«É) #-------------------------------------------------------------------------- def ex_passable(direction, test = false) return true end end #============================================================================== # ¡á Game_Event #------------------------------------------------------------------------------ # ¡¡«¤«Ù«ó«ÈªòÐ⪦«¯«é«¹ªÇª¹¡£?Ëì÷÷ïҪ˪èªë«¤«Ù«ó«È«Ú?«¸ï·ªêô𪨪䡢?Öª?×â # «¤«Ù«ó«È?ú¼ªÊªÉªÎѦÒöªòò¥ªÃªÆªªªê¡¢Game_Map «¯«é«¹ªÎ?Ý»ªÇÞÅéĪµªìªÞª¹¡£ #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ¡Û ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_accessor :passable_type attr_accessor :priority_type #-------------------------------------------------------------------------- # ¡Ý «ª«Ö«¸«§«¯«ÈôøÑ¢ûù # map_id : «Þ«Ã«× ID # event : «¤«Ù«ó«È (RPG::Event) #-------------------------------------------------------------------------- alias tig_ev_event_initialize initialize def initialize(map_id, event) tig_ev_event_initialize(map_id, event) set_passable_setting end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªÎ÷×ú¼÷÷ïÒàâïÒ #-------------------------------------------------------------------------- def set_passable_setting @passable_type = -1 @event.name = @event.name.sub(/[\<£¼]á³úþàÏ[\>£¾]/, "") @passable_type = 0 if $& != nil @event.name = @event.name.sub(/[\<£¼]ÓÞúþàÏ[\>£¾]/, "") @passable_type = 1 if $& != nil @event.name = @event.name.sub(/[\<£¼]Ø©[\>£¾]/, "") @passable_type = 2 if $& != nil @event.name = @event.name.sub(/[\<£¼]«Õ«í?«È[\>£¾]/, "") @passable_type = 3 if $& != nil end #-------------------------------------------------------------------------- # ¡Û Ù£îñªÎö¢Ôð #-------------------------------------------------------------------------- def name return @event.name end #-------------------------------------------------------------------------- # ¡Ý «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update update def update if riding_character != nil riding_character.sync_with_rided end tig_ev_update end #-------------------------------------------------------------------------- # ¡Ý í»×Èì¹ÔѪÎÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update_self_movement update_self_movement unless $@ def update_self_movement return if rided_character != nil tig_ev_update_self_movement end #-------------------------------------------------------------------------- # ¡Û «×«ì«¤«ä?ªÈªÎÔÒÑ¢ #-------------------------------------------------------------------------- def sync_with_player @x = $game_player.x @y = $game_player.y @real_x = $game_player.real_x @real_y = $game_player.real_y @direction = @direction_fix ? @direction : $game_player.direction update_bush_depth @stop_count = $game_player.stop_count @on_tile = $game_player.on_tile @turn_back = $game_player.turn_back end #-------------------------------------------------------------------------- # ¡Ü «Þ«Ã«×÷×ú¼Ê¦Òö÷÷ïÒ # x : X ñ¨øö # y : Y ñ¨øö #-------------------------------------------------------------------------- def map_passable?(x, y) case @passable_type when 0 # á³úþàÏ return $game_map.boat_passable?(x, y) when 1 # ÓÞúþàÏ return $game_map.ship_passable?(x, y) when 2 # Ø© return $game_map.horse_passable?(x, y) when 3 # «Õ«í?«È return $game_map.float_passable?(x, y) else # Óù? return $game_map.passable?(x, y) end end #-------------------------------------------------------------------------- # ¡Ü «¤«Ù«ó«ÈÑÃÔÑ #-------------------------------------------------------------------------- # lock(«¤«Ù«ó«ÈÑÃÔÑãÁªËñ«ìÑÍëªÎÛ°ªòú¾ª¯ÔÑíÂ)ªòª¹ªë?Ëìªò # «¤«Ù«ó«È?ªË«¤«Ù«ó«È«³«Þ«ó«É?Ùþíñªòøúãƪ¬ùߪުìªÆª¤ªëíÞùêªÎªßªË # ùÚïÒª¹ªëËÇ?ªòª·ªÆª¤ªÞª¹¡£ # ª³ªìªËªèªê¡¢«¤«Ù«ó«ÈªØªÎ?ªê?ªßÔÑíªò«¹«à?«ºªË̸ª»ªÞª¹¡£ #-------------------------------------------------------------------------- def start return if @list.size <= 1 # ?ú¼?黪¬Íö£¿ @starting = true result = false ### õÚʥݻÝÂ(ª³ª³ª«ªé) ### for i in 0...@list.size result = true if @list[i].code == 101 end ### õÚʥݻÝÂ(ª³ª³ªÞªÇ) ### lock if @trigger < 3 and result #### ËÇ?Ý»ÝÂ(ª³ªÎú¼) #### unless $game_map.interpreter.running? $game_map.interpreter.setup_starting_event end end end #============================================================================== # ¡á Game_Player #------------------------------------------------------------------------------ # ¡¡«×«ì«¤«ä?ªòÐ⪦«¯«é«¹ªÇª¹¡£«¤«Ù«ó«ÈªÎÑÃÔÑ÷÷ïҪ䡢«Þ«Ã«×ªÎ«¹«¯«í?«ëªÊªÉªÎ # ѦÒöªòò¥ªÃªÆª¤ªÞª¹¡£ª³ªÎ«¯«é«¹ªÎ«¤«ó«¹«¿«ó«¹ªÏ $game_player ªÇ?ðΪµªìªÞª¹¡£ #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- # ¡Û ÍëËÒ«¤«ó«¹«¿«ó«¹?? #-------------------------------------------------------------------------- attr_reader :new_x attr_reader :new_y attr_accessor :walking_bgm attr_accessor :vehicle_event_data attr_accessor :not_encounter_vehicle_id attr_accessor :event_vehicle_lock attr_accessor :follow_member_gathering #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ #-------------------------------------------------------------------------- # ¡Ý «ª«Ö«¸«§«¯«ÈôøÑ¢ûù #-------------------------------------------------------------------------- alias tig_ev_pl_initialize initialize def initialize tig_ev_pl_initialize @not_encounter_vehicle_id = Expansion_Vehicle::NOT_ENCOUNTER_VEHICIE_ID # Þªðäéç?ªêÚªIDªÎôøÑ¢ö·àâïÒ @event_vehicle_lock = false end #-------------------------------------------------------------------------- # ¡Û ÐÑ?ªÃªÆª¤ªë?ªêÚª #-------------------------------------------------------------------------- def now_vehicle if in_event_vehicle? return $game_map.events[@vehicle_event_data[3]] unless event_vehicle_object? end return nil if @vehicle_type == -1 return $game_map.vehicles[@vehicle_type] end #-------------------------------------------------------------------------- # ¡Û ÐÑ?ªÃªÆª¤ªë?ªêÚªª¬ÑÈ?«¿«¤«×ª«£¿ #-------------------------------------------------------------------------- def now_vehicle_riding_type? return false if now_vehicle == nil return now_vehicle.riding_type? end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«È?ªêÚªªÎö¢Ôð #-------------------------------------------------------------------------- def event_vehicle return nil unless in_event_vehicle? return $game_map.events[@vehicle_event_data[3]] end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªË?ªÃªÆª¤ªëª«÷÷ïÒ #-------------------------------------------------------------------------- def in_event_vehicle? return @vehicle_event_data != nil end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«È?ªêÚªª¬«ª«Ö«¸«§«¯«È«¿«¤«×ª«£¿ #-------------------------------------------------------------------------- def event_vehicle_object? return false unless event_vehicle key = [event_vehicle.character_name, event_vehicle.character_index] return $riding_data.data_object_type[key] end #-------------------------------------------------------------------------- # ¡Û ÐÑ?ªÃªÆª¤ªë?ªêÚªªÈܬªÎ?ªêÚªª¬ª½ª³ªËª¢ªëª«£¿ #-------------------------------------------------------------------------- def other_vehicle?(x = @x, y = @y) return false if @vehicle_type == -1 for vehicle in $game_map.vehicles if vehicle.pos?(x, y) return true if vehicle != now_vehicle end end return false end #-------------------------------------------------------------------------- # ¡Ý Þ«ú¼àÏ(ªâª·ª¯ªÏÓÞúþÞ«ú¼àÏ)ªË?ªÃªÆª¤ªë?÷¾÷÷ïÒ #-------------------------------------------------------------------------- alias tig_ev_airship? in_airship? def in_airship? return true if @vehicle_type == 4 return tig_ev_airship? end #-------------------------------------------------------------------------- # ¡Ý ì¹ÔÑʦÒö÷÷ïÒ #-------------------------------------------------------------------------- alias tig_ev_pl_movable? movable? def movable? if [4, 5].include?(@vehicle_type) return false if moving? # ì¹ÔÑñé return false if @move_route_forcing # ì¹ÔÑ«ë?«È?ð¤ñé return false if @vehicle_getting_on # ?ªëÔÑíªÎÔ²ñé return false if @vehicle_getting_off # ˽ªêªëÔÑíªÎÔ²ñé return false if $game_message.visible # «á«Ã«»?«¸øúãÆñé return false unless $game_map.big_airship.movable? or $game_map.magic_carpet.movable? return true else return tig_ev_pl_movable? end end #-------------------------------------------------------------------------- # ¡Ý «Þ«Ã«×÷×ú¼Ê¦Òö÷÷ïÒ # x : X ñ¨øö # y : Y ñ¨øö #-------------------------------------------------------------------------- alias tig_ev_map_passable? map_passable? def map_passable?(x, y) if in_event_vehicle? return $game_map.event_vehicle.map_passable?(x, y) end case @vehicle_type when 3 return $game_map.horse_passable?(x, y) when 4 return $game_map.big_airship_passable?(x, y) when 5 return $game_map.magic_carpet_passable?(x, y) else return tig_ev_map_passable?(x, y) end end #-------------------------------------------------------------------------- # ¡Ý «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update update def update tig_ev_update update_event_vehicle end #-------------------------------------------------------------------------- # ¡Ý ?ªêÚªªÎ?˽ #-------------------------------------------------------------------------- alias tig_ev_get_on_off_vehicle get_on_off_vehicle def get_on_off_vehicle return false unless movable? if in_event_vehicle? unless @event_vehicle_lock result = get_off_event_vehicle if result unless event_vehicle_object? @vehicle_getting_off_wait = true #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ @vehicle_hide = false #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ end return result end else return false end else return tig_ev_get_on_off_vehicle end end #-------------------------------------------------------------------------- # ¡Ü ?ªêÚªªÎ?×â #-------------------------------------------------------------------------- def update_vehicle return unless in_vehicle? vehicle = $game_map.vehicles[@vehicle_type] if @vehicle_getting_on # ?ªëÔ²ñ飿 vehicle.moveto(@x, @y) # ?ªÃªÆª¤ªëÊàªËí»×Èì¹ÔѪ·ªÆª·ªÞª¦ªÎªòÛÁª° if not moving? and not @follow_member_gathering if vehicle.riding_type? unless [2, 4].include?(@vehicle_type) vehicle.priority_type = 1 end ride_on(vehicle) else @transparent = true # ÷âÙ¥ûù end @direction = vehicle.direction # ú¾ª­ªò?ÌÚ @move_speed = vehicle.speed # ì¹ÔÑáÜÓøªò?ÌÚ @vehicle_getting_on = false # ?ªëÔÑíÂðûÖõ end elsif @vehicle_getting_off # ˽ªêªëÔ²ñ飿 if not moving? and vehicle.altitude == 0 @vehicle_getting_off = false # ˽ªêªëÔÑíÂðûÖõ if vehicle.riding_type? vehicle.priority_type = vehicle.vehicle_priority else @transparent = false # ÷âÙ¥ªòú°ð¶ end if vehicle.instant vehicle.instant = false vehicle.set_location(0, 0, 0) end @vehicle_type = -1 # ?ªêÚª«¿«¤«×á¼ËÛ update_bush_depth end else # ?ªêÚªªË?ªÃªÆª¤ªë vehicle.sync_with_player # «×«ì«¤«ä?ªÈÔÒãÁªËÔѪ«ª¹ end end #-------------------------------------------------------------------------- # ¡Ý ?ªêÚªªË?ªë # úÞî¤?ªêÚªªË?ªÃªÆª¤ªÊª¤ª³ªÈª¬îñð«¡£ #-------------------------------------------------------------------------- alias tig_ev_get_on_vehicle get_on_vehicle def get_on_vehicle if $game_map.horse.pos?(@x, @y) # Ø©ªÈñìªÊªÃªÆª¤ªë£¿ get_on_horse return true elsif $game_map.big_airship.pos?(@x, @y) # ÓÞúþÞ«ú¼àϪÈñìªÊªÃªÆª¤ªë£¿ get_on_big_airship return true elsif $game_map.magic_carpet.pos?(@x, @y) # تÛöªÎëÖ?ªÈñìªÊªÃªÆª¤ªë£¿ get_on_magic_carpet return true end return tig_ev_get_on_vehicle end #-------------------------------------------------------------------------- # ¡Ý ?ªêÚªª«ªé˽ªêªë # úÞî¤?ªêÚªªË?ªÃªÆª¤ªëª³ªÈª¬îñð«¡£ #-------------------------------------------------------------------------- alias tig_ev_get_off_vehicle get_off_vehicle def get_off_vehicle return false if other_vehicle? return false if $game_map.hide_tile?(x, y) if @vehicle_type < 2 return false unless tig_ev_get_off_vehicle elsif @vehicle_type == 2 return false unless tig_ev_get_off_vehicle @direction = 4 else if @vehicle_type == 3 return false unless $game_map.events_xy(@x, @y).empty? @direction = 2 elsif @vehicle_type == 4 or @vehicle_type == 5 return false unless airship_land_ok?(@x, @y) @direction = 4 end now_vehicle.get_off # ˽ªêªë?×â @vehicle_getting_off = true # ˽ªêªëÔÑíªÎËÒã· @move_speed = 3 # ì¹ÔÑáÜÓøªò?ª¹ @through = false # ª¹ªê?ª± OFF @walking_bgm.play # ?ú¼ãÁªÎ BGM ÜÖ? make_encounter_count # «¨«ó«««¦«ó«ÈôøÑ¢ûù end return true end #-------------------------------------------------------------------------- # ¡Û Ø©ªË?ªë #-------------------------------------------------------------------------- def get_on_horse @vehicle_getting_on = true # ?ªê?ªßñé«Õ«é«° @vehicle_type = 3 # ?ªêÚª«¿«¤«×àâïÒ @walking_bgm = RPG::BGM::last # ?ú¼ãÁªÎ BGM ÑÀåã $game_map.horse.get_on # ?ªê?ªß?×â end #-------------------------------------------------------------------------- # ¡Û ÓÞúþÞ«ú¼àϪË?ªë #-------------------------------------------------------------------------- def get_on_big_airship @vehicle_getting_on = true # ?ªëÔÑíªÎËÒã· @vehicle_type = 4 # ?ªêÚª«¿«¤«×àâïÒ @through = true # ª¹ªê?ª± ON @walking_bgm = RPG::BGM::last # ?ú¼ãÁªÎ BGM ÑÀåã $game_map.big_airship.get_on # ?ªê?ªß?×â end #-------------------------------------------------------------------------- # ¡Û تÛöªÎëÖ?ªË?ªë #-------------------------------------------------------------------------- def get_on_magic_carpet @vehicle_getting_on = true # ?ªëÔÑíªÎËÒã· @vehicle_type = 5 # ?ªêÚª«¿«¤«×àâïÒ @walking_bgm = RPG::BGM::last # ?ú¼ãÁªÎ BGM ÑÀåã $game_map.magic_carpet.get_on # ?ªê?ªß?×â end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªË?ªë #-------------------------------------------------------------------------- def get_on_event(event_id, test = false) vehicle = $game_map.events[event_id] return false if in_vehicle? return false if in_event_vehicle? return false if riding_character != nil return false if vehicle.rided_character != nil return false if vehicle.moving? return true if test @vehicle_getting_on = true # ?ªê?ªßñé«Õ«é«° @vehicle_event_data = [] # «¤«Ù«ó«È?ªêÚª«Ç?«¿Ôô? @vehicle_event_data[0] = vehicle.name @vehicle_event_data[1] = vehicle.character_name @vehicle_event_data[2] = vehicle.character_index @vehicle_event_data[3] = vehicle.id key = [vehicle.character_name, vehicle.character_index] if $riding_data.data_priority_type[key] == 0 @vehicle_event_data[4] = vehicle.priority_type vehicle.priority_type = 0 end vehicle.stop_count = -20 front_x = $game_map.x_with_direction(@x, @direction) front_y = $game_map.y_with_direction(@y, @direction) if vehicle.x == front_x and vehicle.y == front_y unless $riding_data.data_object_type[key] if @follow_member_gathering != nil @follow_member_gathering = true # ¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ end force_move_forward # ìé?îñòä end end return true end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«È?ªêÚªªÎ?×â #-------------------------------------------------------------------------- def update_event_vehicle return unless in_event_vehicle? vehicle = $game_map.events[@vehicle_event_data[3]] key = [vehicle.character_name, vehicle.character_index] if @vehicle_getting_on # ?ªëÔ²ñ飿 if not moving? and not @follow_member_gathering if @vehicle_event_data[4] != nil vehicle.priority_type = 1 end if vehicle.riding_type? if $riding_data.data_object_type[key] vehicle.set_direction(@direction) end ride_on(vehicle) else @transparent = true # ÷âÙ¥ûù end @vehicle_getting_on = false # ?ªëÔÑíÂðûÖõ @through = false end elsif @vehicle_getting_off # ˽ªêªëÔ²ñ飿 if not moving? if @vehicle_event_data[4] != nil vehicle.priority_type = @vehicle_event_data[4] end @vehicle_getting_off = false # ˽ªêªëÔÑíÂðûÖõ key = [$game_map.map_id, @vehicle_event_data[3], "D"] $game_self_switches[key] = true $game_map.need_refresh = true $game_player.vehicle_event_data = nil update_bush_depth end else vehicle.sync_with_player # «¤«Ù«ó«ÈêÈöǪòÔÒÑ¢ end end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«Èª«ªé˽ªêªë?×â #-------------------------------------------------------------------------- def get_off_event_vehicle vehicle = $game_map.event_vehicle front_x = $game_map.x_with_direction(@x, @direction) front_y = $game_map.y_with_direction(@y, @direction) key = [vehicle.character_name, vehicle.character_index] if [0, 1, 3].include?(vehicle.passable_type) return false unless tig_ev_map_passable?(front_x, front_y) # ïÈäͪǪ­ªÊª¤ if $riding_data.data_priority_type[key] == 0 @vehicle_event_data[4] = vehicle.priority_type vehicle.priority_type = 0 end force_move_forward elsif $riding_data.data_object_type[key] and vehicle.priority_type == 1 @vehicle_getting_off_wait = false #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ return false if collide_with_characters?(front_x, front_y) return false unless $game_map.object_passable?(front_x, front_y) return false unless vehicle.ex_passable(@direction) case @direction when 2; vehicle.move_down(false) when 4; vehicle.move_left(false) when 6; vehicle.move_right(false) when 8; vehicle.move_up(false) end vehicle.moveto(front_x, front_y) end if vehicle.riding_type? ride_off_character else @transparent = false # ÷âÙ¥ªòú°ð¶ end vehicle.stop_count = 0 @vehicle_getting_off = true return true end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«Èª«ªéªÎ?ð¤×î? #-------------------------------------------------------------------------- def compulsory_off_event_vehicle(erase = false) vehicle = $game_map.event_vehicle if vehicle and vehicle.riding_type? ride_off_character else @transparent = false # ÷âÙ¥ªòú°ð¶ end @vehicle_getting_off_wait = true #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ @vehicle_hide = false #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁéÄ $game_player.vehicle_event_data = nil update_bush_depth vehicle.erase if erase end #-------------------------------------------------------------------------- # ¡Ü «¨«ó«««¦«ó«ÈªÎÌÚãæ #-------------------------------------------------------------------------- def update_encounter return if $TEST and Input.press?(Input::CTRL) # «Æ«¹«È«×«ì«¤ñ飿 return if @not_encounter_vehicle_id.include?(@vehicle_type) ## ?ÌÚïà if $game_player.in_airship? # Þ«ú¼ñéªÊªé ## õÚÊ¥ïà @encounter_count -= 1 # «««¦«ó«Èªò 1 Êõªéª¹ ## õÚÊ¥ïà elsif $game_map.bush?(@x, @y) # ÙòªßªÊªé ## ?ÌÚïà @encounter_count -= 2 # «««¦«ó«Èªò 2 Êõªéª¹ else # Ùòªßì¤èâªÊªé @encounter_count -= 1 # «««¦«ó«Èªò 1 Êõªéª¹ end end end #============================================================================== # ¡á Sprite_Character #------------------------------------------------------------------------------ # ¡¡«­«ã«é«¯«¿?øúãÆéĪΫ¹«×«é«¤«ÈªÇª¹¡£Game_Character «¯«é«¹ªÎ«¤«ó«¹«¿«ó«¹ªò # Êøãʪ·¡¢«¹«×«é«¤«ÈªÎ?÷¾ªòí»ÔÑîܪË?ûùªµª»ªÞª¹¡£ #============================================================================== class Sprite_Character < Sprite_Base #-------------------------------------------------------------------------- # ¡Ý «Õ«ì?«àÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update update def update tig_ev_update riding_positioning end #-------------------------------------------------------------------------- # ¡Û ÑÈ?éÄ?ßÀªÎ«Õ«¡«¤«ëªÎÙ£îñö¢Ôð #-------------------------------------------------------------------------- def riding_pct_name key = [@character.character_name, @character.character_index] return $riding_data.data_riding_pct_name[key] end #-------------------------------------------------------------------------- # ¡Û ÑÈ?éÄ?ßÀªÎ«Õ«¡«¤«ëªÎ«¤«ó«Ç«Ã«¯«¹ö¢Ôð #-------------------------------------------------------------------------- def riding_pct_index key = [@character.character_name, @character.character_index] return $riding_data.data_riding_pct_index[key] end #-------------------------------------------------------------------------- # ¡Û ÑÈ?ª·ªÆª¤ªë«­«ã«é«¯«¿?ªÎö¢Ôð #-------------------------------------------------------------------------- def riding_character return @character.riding_character end #-------------------------------------------------------------------------- # ¡Û ÑÈ?ª·ªÆª¤ªë«­«ã«é«¯«¿?ªÎö¢Ôð #-------------------------------------------------------------------------- def rided_character return @character.rided_character end #-------------------------------------------------------------------------- # ¡Û ÑÈ?ãÁªÎXñ¨øöáóïáö·ªÎö¢Ôð #-------------------------------------------------------------------------- def riding_positioning_x(key_character, base_character) key = [key_character.character_name, key_character.character_index] return 0 unless $riding_data.data_positioning_down.key?(key) pattern = base_character.pattern pattern = 1 if pattern == 3 case base_character.direction when 2 return $riding_data.data_positioning_down[key][pattern][0] when 4 return $riding_data.data_positioning_left[key][pattern][0] when 6 return $riding_data.data_positioning_right[key][pattern][0] when 8 return $riding_data.data_positioning_up[key][pattern][0] end end #-------------------------------------------------------------------------- # ¡Û ÑÈ?ãÁªÎYñ¨øöáóïáö·ªÎö¢Ôð #-------------------------------------------------------------------------- def riding_positioning_y(key_character, base_character) key = [key_character.character_name, key_character.character_index] return 0 unless $riding_data.data_positioning_down.key?(key) pattern = base_character.pattern pattern = 1 if pattern == 3 case base_character.direction when 2 return $riding_data.data_positioning_down[key][pattern][1] when 4 return $riding_data.data_positioning_left[key][pattern][1] when 6 return $riding_data.data_positioning_right[key][pattern][1] when 8 return $riding_data.data_positioning_up[key][pattern][1] end end #-------------------------------------------------------------------------- # ¡Ý ÑÈ?ãÁªÎêÈöÇÜÍïá #-------------------------------------------------------------------------- def riding_positioning if riding_character != nil key = [riding_character.character_name, riding_character.character_index] unless $riding_data.data_object_type[key] self.x += riding_positioning_x(riding_character, riding_character) self.y = riding_character.screen_y self.y += riding_positioning_y(riding_character, riding_character) end end if rided_character != nil key = [@character.character_name, @character.character_index] if $riding_data.data_object_type[key] self.x += riding_positioning_x(@character, rided_character) self.y += riding_positioning_y(@character, rided_character) end end end #-------------------------------------------------------------------------- # ¡Ý ?áêꪫӫëȫޫëתÎÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update_bitmap update_bitmap def update_bitmap tig_ev_update_bitmap if @character.rided_character != nil return if @back_seeing == true return if riding_pct_name == nil if @ride_sprite == nil or @riding_pct_name != riding_pct_name or @riding_pct_index != riding_pct_index @riding_pct_name = riding_pct_name @riding_pct_index = riding_pct_index @ride_sprite = ::Sprite.new(viewport) file_name = @riding_pct_name == "self" ? @character.character_name : @riding_pct_name @ride_sprite.bitmap = Cache.character(file_name) sign = file_name[/^[\!\$]./] if sign != nil and sign.include?('$') @rcw = @ride_sprite.bitmap.width / 3 @rch = @ride_sprite.bitmap.height / 4 else @rcw = @ride_sprite.bitmap.width / 12 @rch = @ride_sprite.bitmap.height / 8 end @ride_sprite.ox = @rcw / 2 @ride_sprite.oy = @rch end else dispose_ride_sprite end end #-------------------------------------------------------------------------- # ¡Ý ?áêêªÏ»û¡ªÎÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update_src_rect update_src_rect def update_src_rect tig_ev_update_src_rect dispose_ride_sprite if @back_seeing == true return if @ride_sprite == nil index = @riding_pct_name == "self" ? @character.character_index : @riding_pct_index pattern = @character.pattern < 3 ? @character.pattern : 1 sx = (index % 4 * 3 + pattern) * @rcw sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @rch @ride_sprite.src_rect.set(sx, sy, @rcw, @rch) @ride_sprite.x = @character.screen_x @ride_sprite.y = @character.screen_y @ride_sprite.z = @character.screen_z + 2 @ride_sprite.viewport = viewport if @riding_pct_name == "self" and rided_character.direction == 8 @ride_sprite.x = -50 end key = [@character.character_name, @character.character_index] if $riding_data.data_object_type[key] @ride_sprite.x += riding_positioning_x(@character, rided_character) @ride_sprite.y += riding_positioning_y(@character, rided_character) end end #-------------------------------------------------------------------------- # ¡Ý ú°Û¯ #-------------------------------------------------------------------------- alias tig_ev_dispose dispose def dispose tig_ev_dispose dispose_ride_sprite end #-------------------------------------------------------------------------- # ¡Ý ÑÈ?éÄ«¹«×«é«¤«ÈªÎá¼ËÛ #-------------------------------------------------------------------------- def dispose_ride_sprite if @ride_sprite != nil @ride_sprite.dispose @ride_sprite = nil end end end #============================================================================== # ¡á Spriteset_Map #------------------------------------------------------------------------------ # ¡¡«Þ«Ã«×?ØüªÎ«¹«×«é«¤«Èªä«¿«¤«ë«Þ«Ã«×ªÊªÉªòªÞªÈªáª¿«¯«é«¹ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ # Scene_Map «¯«é«¹ªÎ?Ý»ªÇÞÅéĪµªìªÞª¹¡£ #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # ¡Ý Þ«ú¼àϪÎ篫¹«×«é«¤«ÈªÎÌÚãæ #-------------------------------------------------------------------------- alias tig_ev_update_shadow update_shadow def update_shadow @shadow_sprite.z = 100 if $game_map.big_airship.altitude > 0 @shadow_sprite.x = $game_map.big_airship.screen_x @shadow_sprite.y = $game_map.big_airship.screen_y + $game_map.big_airship.altitude @shadow_sprite.opacity = $game_map.big_airship.altitude * 4 @shadow_sprite.update elsif $game_map.magic_carpet.altitude > 0 if $game_player.on_tile == true @shadow_sprite.viewport = @viewport4 else @shadow_sprite.viewport = @viewport1 end @shadow_sprite.x = $game_map.magic_carpet.screen_x @shadow_sprite.y = $game_map.magic_carpet.screen_y + $game_map.magic_carpet.altitude / 5 @shadow_sprite.opacity = $game_map.magic_carpet.altitude * 8 @shadow_sprite.update else tig_ev_update_shadow end end end #============================================================================== # ¡á Game_Interpreter #------------------------------------------------------------------------------ # ¡¡«¤«Ù«ó«È«³«Þ«ó«Éªò?ú¼ª¹ªë«¤«ó«¿«×«ê«¿ªÇª¹¡£ª³ªÎ«¯«é«¹ªÏ Game_Map «¯«é«¹¡¢ # Game_Troop «¯«é«¹¡¢Game_Event «¯«é«¹ªÎ?Ý»ªÇÞÅéĪµªìªÞª¹¡£ #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ¡Ý ?ªêÚªªÎ?˽ #-------------------------------------------------------------------------- alias tig_ev_command_206 command_206 def command_206 @wait_count = 2 #¡¼«Ñ?«Æ«£?«á«ó«Ð?ªÎõÚ?¡½?éÄãÁªËª¢ªÃª¿ªÛª¦ª¬ªèª¤ return tig_ev_command_206 end #-------------------------------------------------------------------------- # ¡Û á³úþàÏ #-------------------------------------------------------------------------- def boat return $game_map.boat end #-------------------------------------------------------------------------- # ¡Û ÓÞúþàÏ #-------------------------------------------------------------------------- def ship return $game_map.ship end #-------------------------------------------------------------------------- # ¡Û Þ«ú¼àÏ #-------------------------------------------------------------------------- def airship return $game_map.airship end #-------------------------------------------------------------------------- # ¡Û Ø© #-------------------------------------------------------------------------- def horse return $game_map.horse end #-------------------------------------------------------------------------- # ¡Û ÓÞúþÞ«ú¼àÏ #-------------------------------------------------------------------------- def big_airship return $game_map.big_airship end #-------------------------------------------------------------------------- # ¡Û تÛöªÎëÖ? #-------------------------------------------------------------------------- def magic_carpet return $game_map.magic_carpet end #-------------------------------------------------------------------------- # ¡Û «×«ì?«ä?ª¬«¤«Ù«ó«ÈªË?ªë # ¡Ø ?ªêÚªªËª¹ªë«¤«Ù«ó«ÈªÎ¡¸«¹«¯«ê«×«È¡¹«³«Þ«ó«ÉªÇ?ú¼ª¹ªë¡£ #-------------------------------------------------------------------------- def get_on_event(test = false) if @event_id > 0 return false if $game_player.event_vehicle_lock return $game_player.get_on_event(@event_id, test) else return false end end #-------------------------------------------------------------------------- # ¡Û «×«ì?«ä?ª¬«¤«Ù«ó«ÈªË?ªìªëª«ªÎ«Æ«¹«È # ¡Ø ?ªêÚªªËª¹ªë«¤«Ù«ó«ÈªÎ¡¸«¹«¯«ê«×«È¡¹«³«Þ«ó«ÉªÇ?ú¼ª¹ªë¡£ #-------------------------------------------------------------------------- def get_on_event_test return get_on_event(true) end #-------------------------------------------------------------------------- # ¡Û «×«ì«¤«ä?ª¬«¤«Ù«ó«È?ªêÚªªË?ªÃªÆª¤ªëª«ªÎ÷÷ïÒ # word : ò¦ïÒåÞÏ£ #¡¡¡Ø ò¦ïÒåÞÏ£ª¬ªÊª±ªìªÐ?ªêÚªªËªÎªÃªÆª¤ªëª«ªÉª¦ª«ªò÷÷ïÒ # ª¢ªìªÐª½ªÎåÞÏ£ª¬Ù£îñªËùߪުìªÆª¤ªë?ªêÚªªËªÎªÃªÆª¤ªëª«ªò÷÷ïÒ #-------------------------------------------------------------------------- def player_in_event_vehicle(word = nil) return false unless $game_player.in_event_vehicle? return true if word == nil return $game_map.event_vehicle.name.include?(word) end #-------------------------------------------------------------------------- # ¡Û «×«ì?«ä?ªÎ«¤«Ù«ó«È?ªêÚªªò«í«Ã«¯ª¹ªë #-------------------------------------------------------------------------- def event_vehicle_lock $game_player.event_vehicle_lock = true end #-------------------------------------------------------------------------- # ¡Û «×«ì?«ä?ªÎ«¤«Ù«ó«È?ªêÚªªò«í«Ã«¯ªòú°ð¶ª¹ªë #-------------------------------------------------------------------------- def event_vehicle_lock_off $game_player.event_vehicle_lock = false end #-------------------------------------------------------------------------- # ¡Û «×«ì?«ä?ªò«¤«Ù«ó«Èª«ªé?ð¤îܪË˽ªíª¹ #-------------------------------------------------------------------------- def event_vehicle_compulsory_off $game_player.compulsory_off_event_vehicle end #-------------------------------------------------------------------------- # ¡Û «×«ì?«ä?ªÎ«¤«Ù«ó«È?ªêÚªªòá¼ËÛª¹ªë #-------------------------------------------------------------------------- def event_vehicle_erase $game_player.compulsory_off_event_vehicle(true) end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«Èªò«¤«Ù«ó«ÈªË?ª»ªë # event_id : ?ªê⢪˪ʪ뫤«Ù«ó«ÈªÎID # vehicle_id : ?ªêÚªªËªÊªë«¤«Ù«ó«ÈªÎID #-------------------------------------------------------------------------- def event_vehicle(event_id, vehicle_id, test = false) if $game_map.events[event_id] != nil and $game_map.events[vehicle_id] != nil return $game_map.events[event_id].ride_on($game_map.events[vehicle_id], test) else return false end end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«Èªò«¤«Ù«ó«ÈªË?ª»ªëª³ªÈª¬õó?ªëª«ªÎ«Æ«¹«È #-------------------------------------------------------------------------- def event_vehicle_test(event_id, vehicle_id) return event_vehicle_test(event_id, vehicle_id, true) end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«Èª«ªé˽ªíª¹ # event_id : «¤«Ù«ó«Èª«ªé˽ªíª¹«¤«Ù«ó«ÈªÎID #-------------------------------------------------------------------------- def get_off_event(event_id, test = false) if $game_map.events[event_id] != nil return $game_map.events[event_id].ride_off_character(test) else return false end end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«Èª«ªé˽ªíª¹ª³ªÈª¬õó?ªëª«ªÎ«Æ«¹«È #-------------------------------------------------------------------------- def get_off_event_test(event_id) return get_off_event_test(event_id, true) end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªòIDò¦ïÒª·ªÆ«»«ë«Õ«¹«¤«Ã«ÁªòðÃíª¹ªë #-------------------------------------------------------------------------- def self_switches(event_id, switches_id, on_off) return if $game_map.events == nil return if $game_map.events[event_id] == nil key = [$game_map.map_id, event_id, switches_id] $game_self_switches[key] = on_off $game_map.need_refresh = true $game_map.need_refresh = true end #-------------------------------------------------------------------------- # ¡Û IDò¦ïÒª·ª¿«¤«Ù«ó«ÈªÎ«»«ë«Õ«¹«¤«Ã«Áªò«ª«ó #-------------------------------------------------------------------------- def self_switches_on(event_id, switches_id) self_switches(event_id, switches_id, true) end #-------------------------------------------------------------------------- # ¡Û IDò¦ïÒª·ª¿«¤«Ù«ó«ÈªÎ«»«ë«Õ«¹«¤«Ã«Áªò«ª«Õ #-------------------------------------------------------------------------- def self_switches_off(event_id, switches_id) self_switches(event_id, switches_id, false) end #-------------------------------------------------------------------------- # ¡Û IDò¦ïÒª·ª¿«¤«Ù«ó«ÈªÎ«»«ë«Õ«¹«¤«Ã«Áªò«¯«ê«¢(ª¹ªÙªÆ«ª«Õ) #-------------------------------------------------------------------------- def self_switches_clear(event_id) self_switches(event_id, "A", false) self_switches(event_id, "B", false) self_switches(event_id, "C", false) self_switches(event_id, "D", false) end #-------------------------------------------------------------------------- # ¡Û IDò¦ïÒª·ª¿«¤«Ù«ó«Èª¬«ª«óª«£¿ #-------------------------------------------------------------------------- def self_switches_on?(event_id, switches_id) key = [$game_map.map_id, event_id, switches_id] return $game_self_switches[key] == true end #-------------------------------------------------------------------------- # ¡Û IDò¦ïÒª·ª¿«¤«Ù«ó«Èª¬«ª«Õª«£¿ #-------------------------------------------------------------------------- def self_switches_off?(event_id, switches_id) key = [$game_map.map_id, event_id, switches_id] return $game_self_switches[key] == false end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªÈÔÒêÈöǪΫ¤«Ù«ó«ÈªÎ«»«ë«Õ«¹«¤«Ã«Áªò«ª«ó #-------------------------------------------------------------------------- def self_switches_on_here(switches_id) self_switches_here(switches_id, true) end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªÈÔÒêÈöǪΫ¤«Ù«ó«ÈªÎ«»«ë«Õ«¹«¤«Ã«Áªò«ª«Õ #-------------------------------------------------------------------------- def self_switches_off_here(switches_id) self_switches_here(switches_id, false) end #-------------------------------------------------------------------------- # ¡Û «¤«Ù«ó«ÈªÈÔÒêÈöǪΫ¤«Ù«ó«ÈªÎ«»«ë«Õ«¹«¤«Ã«ÁªòðÃíª¹ªë #-------------------------------------------------------------------------- def self_switches_here(switches_id, on_off) return if $game_map.events == nil result = false main_event = $game_map.events[@event_id] for event in $game_map.events_xy(main_event.x, main_event.y) next if event == main_event key = [$game_map.map_id, event.id, switches_id] $game_self_switches[key] = on_off $game_map.need_refresh = true result = true end $game_map.need_refresh = true if result end end