#============================================================================== # ■ XP-RGSS-59 魔法屋 [Ver.2.0.0] by Claimh #------------------------------------------------------------------------------ # ・スキルの購入ができるショップです(売却はできません) #------------------------------------------------------------------------------ # ★魔法屋の呼び出し方 # イベントスクリプトから call_skill_shop(ショップID) # もしくは $scene = Scene_SkillShop.new(ショップID) #============================================================================== module SkillShop # 動くアクターを使う ture : 動くアクター(基本セット)必須 USE_MA = false # メッセージ表示 MESSAGE = true # ● ショップIDの登録 # 魔法屋の呼び出しに使うショップIDです # ※ショップIDに0は指定できません SHOP_ID = { # ショップID => [[スキルID, 値段], …] 1 => [ # 回復ショップ [1, 50], [2, 1000], [3, 5000], [4, 200], [5, 2500], [6, 800] ], 2 => [ # 火・雷の店 [7, 150], [8, 1500], [9, 7000], [13, 150], [14, 1500], [15, 7000] ], 3 => [ # 氷・水の店 [10, 150], [11, 1500], [12, 7000], [16, 150], [17, 1500], [18, 7000] ], 4 => [ # 地・風の店 [19, 150], [20, 1500], [21, 7000], [22, 150], [23, 1500], [24, 7000] ], 5 => [ # 光・闇の店 [25, 150], [26, 1500], [27, 7000], [28, 150], [29, 1500], [30, 7000] ] } # ● スキル習得制限の設定 # アクター、クラスのみ設定できます # その他の条件が必要な場合はSkillShop::Skill#learn?を改造してください(★) # 特定アクターに対するスキル習得を制限します D_ACTOR = { # スキルID => [アクターID, …] 1 => [1,2,3,4,5,6,8], 2 => [1,2,3,4,5,6,8], 3 => [1,2,3,4,5,6,8], 4 => [1,2,3,4,5,6,8], 5 => [1,2,3,4,5,6,8], 6 => [1,2,3,4,5,6,8] } # 特定クラスに対するスキル習得を制限します D_CLASS = { # スキルID => [クラスID, …] 7 => [1,2,3,4,5,6,7], 8 => [1,2,3,4,5,6,7], 9 => [1,2,3,4,5,6,7] } end ############################################################################## # 基本クラス(設定データ参照用) module SkillShop # 商品リスト生成 def self.make_list(id) list = [] for data in SHOP_ID[id] list.push(Skill.new(data)) end return list end # メッセージタイプ module MesCmd M_S_C = 0 # 成功 M_N_P = 10 # お金足りない M_N_S = 11 # 習得不可 M_N_N = 12 # 習得済み end # スキルクラス class Skill attr_reader :id attr_reader :price attr_reader :enable def initialize(data) @id = data[0] @price = data[1] enable? end def obj return $data_skills[@id] end def enable? return (@enable = ($game_party.gold >= @price)) end #--------------------------------------------------------------------------- # ★習得判定 #--------------------------------------------------------------------------- # [IN] actor : アクター情報(Game_Actor) #--------------------------------------------------------------------------- # [OUT] true = 習得可 false = 習得不可 #--------------------------------------------------------------------------- def learn?(actor) # 特定アクターに対するスキル習得を制限 return false if !D_ACTOR[@id].nil? and D_ACTOR[@id].include?(actor.id) # 特定クラスに対するスキル習得を制限 return false if !D_CLASS[@id].nil? and D_CLASS[@id].include?(actor.class_id) # 特定スイッチがON? #return false unless $game_switches[SW-ID] # 特定レベル以上? #return false if actor.level < LEVEL # 特定のスキルを習得しておく必要がある? #return false if actor.skill_learn?(SKILL-ID) # 特定熟練度以上? #return flase if SysUpdata.skill_attr(actor, @id).level < LEVEL return true end end end #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp attr_accessor :skill_shop_id alias initialize_skillshop initialize def initialize initialize_skillshop @skill_shop_id = 0 end end #============================================================================== # ■ Interpreter #============================================================================== class Interpreter def call_skill_shop(shop_id=1) $game_temp.shop_calling = true $game_temp.skill_shop_id = shop_id end end #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map alias call_skill_shop call_shop def call_shop if $game_temp.skill_shop_id != 0 $game_temp.shop_calling = false $game_player.straighten $scene = Scene_SkillShop.new($game_temp.skill_shop_id) $game_temp.skill_shop_id = 0 else call_skill_shop end end end