赞 | 0 |
VIP | 2 |
好人卡 | 10 |
积分 | 1 |
经验 | 7625 |
最后登录 | 2014-3-16 |
在线时间 | 122 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 122 小时
- 注册时间
- 2008-7-3
- 帖子
- 724
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 沙之爱罗 于 2010-7-11 00:43 编辑
- #=====================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #====================================================================
- #====================================================================
- # ■ スキルアップデート Ver. 4.4.0 by Claimh
- #---------------------------------------------------------------
- # スキルごとにレベル制を導入する
- # 戦闘中にスキルを使用するほど、威力上昇、消費SP減少、命中率上昇
- #==============================================================
- module Skill_updata
- S_EXCEP = [1, 57]
- S_MIGHT = []
- S_COST = []
- S_HIT = []
- S_LEVEL = []
- S_INTER = []
- S_SLOPE = []
- S_ANIME = []
- S_ELEMENT = []
- S_STATE_P = []
- S_STATE_N = []
- #=============================================================
- # □ 自定义内容
- #==============================================================
- # 威力上升使用true/false
- SKILL_MIGHT_UP = true
-
- # SP消耗减少使用true/false
- SP_COST_DOWN = true
-
- # 命中率上升使用true/false
- SKILL_HIT_UP = true
-
- # 属性变化的使用true/false
- ELEMENT_CHANGE = true
-
- # 状态变化的使用true/false
- STATE_CHANGE = true
-
- # 显示特技等级上升true/false
- SHOW_SKILL_LV_UP = true
-
- # 等级上升的声效,不用的时候就=nil
- SKILLUP_SE = "056-Right02"
-
- # 菜单使用计数true/false
- MENU_COUNT = false
- # 升级所需次数
- UPDATA_INTERVAL = 2
-
- # 等级上限
- LEVEL_LIMIT = 20
- # 威力上升率(%%)
- MIGHT_RATE = 0.5
-
- # SP消耗减少率(%)
- COST_RATE = 3
-
- # 命中上升率(%)
- HIT_RATE = 1
- #-------------------------------------------------------------
- # 特别技能的详细设定,57和61号特技分别是十字斩和扫荡,大家最熟悉的两个招数
- #----------------------------------------------------------------
-
- # 界限水平
- # S_LEVEL[技艺ID]=[角色ID=>界限,…]
- S_LEVEL[57] = {1=>18, 2=>12, 3=>5, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
- S_LEVEL[61] = {1=>12, 2=>18, 3=>15, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
-
- # 技艺&actor威力上升率
- # S_MIGHT[技艺ID]=[角色ID=>威力上升率,…]
- S_MIGHT[57] = {1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
- S_MIGHT[61] = {1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
- # 技艺&actorSP消费减少率
- # S_COST[技艺ID]=[角色ID=>SP消费减少率,…]
- S_COST[57] = {1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
- S_COST[61] = {1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
- # 技艺&actor命中率
- # S_HIT[技艺ID]=[角色ID=>命中上升率,…]
- S_HIT[57] = {1=>2, 2=>1, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}
- S_HIT[61] = {1=>1, 2=>2, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}
- #-----------------------------------------------------------------
- # 技能成长的具体调节
- #-----------------------------------------------------------------
- # 技艺的增长图形
- # 0:使用技艺一定回数的话提高水平
- # 1:技艺一定回数+每水平の使用提高水平
- SKILL_PATTERN = 0
-
- # 技艺水平上升间隔每(使用几回Lv提高)
- # ※没有设定的情况→基本设定被适应
- # S_INTER[技艺ID]=[actorID=>上升间隔,…]
- S_INTER[57] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}
-
- # スキルレベル上昇の傾き(パターン1を使用する場合のみ必要)
- # ※設定がない場合は1となります。
- # S_SLOPE[スキルID] = [アクターID=>上昇の傾き, …]
- S_SLOPE[57] = {1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}
- #-------------------------------------------------------------
- # 技艺增长的话使之动画变化
- # 记录格式: S_ANIME[技艺ID] = [角色ID=>[[等级, 动画ID]], ・・・]
- #------------------------------------------------------------
- # 实施技艺增长的动画变化?
- USE_S_ANIME = true
-
- # 設定例
- # 1号角色,57号特技,lv5,lv10动画变化
- # 2号角色,Lv.11动画变化
- S_ANIME[57] = {1=>[[5, 69], [10, 70]], 2=>[[11, 70]]}
- #-------------------------------------------------------------------
- # 属性変化/状态変化
- #------------------------------------------------------------------
- # 属性変化
- # S_ELEMENT[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
- S_ELEMENT[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}
- # 状态変化+
- # S_STATE_P[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
- S_STATE_P[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}
- # 状态変化-
- # S_STATE_N[技艺ID] = {角色ID=>{水平=>[属性ID,属性ID…]}, ・・・・}
- S_STATE_N[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}
- #==================================================================
- # □ 自定义内容终了
- #==================================================================
- end
- class Game_Actor
- include Skill_updata
- attr_accessor :skill_use # スキル使用回数
- attr_accessor :skill_level # スキルレベル
- attr_accessor :skill_power # スキル威力更新値
- attr_accessor :skill_sp_cost # スキルSP消費更新値
- attr_accessor :skill_hit # スキル命中率
- attr_accessor :skill_up # レベルアップフラグ
- attr_accessor :skill_list # スキルEXPリスト
- alias skill_updata_init setup
- def setup(actor_id)
- skill_updata_init(actor_id)
- @skill_use = []
- @skill_level = []
- @skill_power = []
- @skill_sp_cost = []
- @skill_hit = []
- @skill_up = false
- @skill_list = []
- for id in 1...$data_skills.size
- ##########################################################
- next if S_EXCEP.include?(id)
- ##########################################################
- @skill_use[id] = 0
- @skill_level[id] = 0
- @skill_power[id] = $data_skills[id].power
- @skill_sp_cost[id] = $data_skills[id].sp_cost
- @skill_hit[id] = $data_skills[id].hit
- @skill_list[id] = make_skill_list(id)
- end
- end
- #-------------------------------------------------------------
- # ● スキルEXP 計算
- #------------------------------------------------------------
- def make_skill_list(skill_id)
- interval = S_INTER[skill_id]
- up_interval = ( (interval != nil and interval[@actor_id] != nil) ? interval[@actor_id] : UPDATA_INTERVAL )
- slope = S_SLOPE[skill_id]
- up_slope = ( (slope != nil and slope[@actor_id] != nil) ? slope[@actor_id] : 1 )
- limit = S_LEVEL[skill_id]
- limit_lv = ( (limit != nil and limit[@actor_id] != nil) ? limit[@actor_id] : LEVEL_LIMIT )
- list = []
- list[0] = 0
- for lv in 1...limit_lv+1
- exp = 0
- case SKILL_PATTERN
- when 0
- exp = up_interval * lv
- when 1
- exp = list[lv-1] + up_slope * lv + up_interval
- end
- list[lv] = exp.truncate
- end
- return list
- end
- end
- class Game_Battler
- include Skill_updata
- #-----------------------------------------------------------------
- # ● スキルの効果適用
- # user : スキルの使用者 (バトラー)
- # skill : スキル
- #-------------------------------------------------------------
- alias skill_effect_update skill_effect
- def skill_effect(user, skill)
- up_flag = false
- ##########################################################
- if !S_EXCEP.include?(skill.id)
- ##########################################################
- if user.is_a?(Game_Actor) and ($scene.is_a?(Scene_Battle) or MENU_COUNT)
- skill_update_main(user, skill)
- skill_base = skill.dup
- # 威力上昇
- if SKILL_MIGHT_UP
- skill.power = user.skill_power[skill.id]
- end
- # 命中率上昇
- if SKILL_HIT_UP
- skill.hit = user.skill_hit[skill.id]
- end
- # 属性変化
- if ELEMENT_CHANGE and S_ELEMENT != []
- ele1 = S_ELEMENT[skill.id]
- if ele1 != nil and ele1[user.id] != nil
- ele2 = ele1[user.id]
- if ele2 != [] and ele2[user.skill_level[skill.id]] != nil
- skill.element_set = ele2[user.skill_level[skill.id]]
- end
- end
- end
- # ステート変化
- if STATE_CHANGE
- if S_STATE_P != []
- pst1 = S_STATE_P[skill.id]
- if pst1 != nil and pst1[user.id] != nil
- pst2 = pst1[user.id]
- if pst2 != nil and pst2[user.skill_level[skill.id]] != nil
- skill.plus_state_set = pst2[user.skill_level[skill.id]]
- # p skill.plus_state_set
- end
- end
- end
- if S_STATE_N != []
- nst1 = S_STATE_N[skill.id]
- if nst1 != nil and nst1[user.id] != nil
- nst2 = nst1[user.id]
- if nst1 != nil and nst2[user.skill_level[skill.id]] != nil
- skill.minus_state_set = nst2[user.skill_level[skill.id]]
- end
- end
- end
- end
- up_flag = true
- end
- ##########################################################
- end
- ##########################################################
- ret = skill_effect_update(user, skill) # 原物
- if up_flag
- skill = skill_base
- # Miss時には後戻し
- if self.damage == "Miss"
- skill_use_recount(user, skill)
- end
- end
- return ret
- end
-
- #------------------------------------------------------------
- # ● スキルアップデータメイン
- #-------------------------------------------------------------
- def skill_update_main(actor, skill)
- # スキル使用回数のカウント
- actor.skill_use[skill.id] += 1
- # リミット取得
- limit = S_LEVEL[skill.id]
- s_limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)
- # 書き換え限界到達
- if s_limit == false or actor.skill_level[skill.id] < s_limit
- # レベルアップ間隔取得
- interval = actor.skill_list[skill.id]
- # 書き換え回数到達
- if actor.skill_use[skill.id] == interval[actor.skill_level[skill.id]+1]
- # スキルレベル上昇
- actor.skill_level[skill.id] += 1
- actor.skill_up = true
- # 威力上昇 = 有効
- if SKILL_MIGHT_UP
- might = S_MIGHT[skill.id]
- might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
- # 補正値更新
- actor.skill_power[skill.id] += skill.power * might_rate / 100
- actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
- end
- # SP消費減少 = 有効
- if SP_COST_DOWN
- cost = S_COST[skill.id]
- cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
- actor.skill_sp_cost[skill.id] += skill.sp_cost * cost_rate / 100
- actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
- # SP消費が0以下はありえない
- if actor.skill_sp_cost[skill.id] < 0
- actor.skill_sp_cost[skill.id] = 0
- end
- end
- # 命中率上昇 = 有効
- if SKILL_HIT_UP
- hit = S_HIT[skill.id]
- hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
- actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
- actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
- # 100以上はありえない
- if actor.skill_hit[skill.id] > 100
- actor.skill_hit[skill.id] = 100
- end
- end
- end
- end
- end
-
- #---------------------------------------------------------
- # ● 再カウント
- #------------------------------------------------------
- def skill_use_recount(actor, skill)
- if actor.skill_up
- actor.skill_level[skill.id] -= 1
- # 威力を再計算
- if SKILL_MIGHT_UP
- actor.skill_power[skill.id] = skill.power
- might = S_MIGHT[skill.id]
- might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
- for i in 1...actor.skill_level[skill.id]
- actor.skill_power[skill.id] += skill.power * might_rate / 100
- actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
- end
- end
- # SP消費再計算
- if SP_COST_DOWN
- actor.skill_sp_cost[skill.id] = skill.sp_cost
- cost = S_COST[skill.id]
- cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
- for i in 1...actor.skill_level[skill.id]
- actor.skill_sp_cost[skill.id] += skill.sp_cost * cost_rate / 100
- actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
- end
- # SP消費が0以下はありえない
- if actor.skill_sp_cost[skill.id] < 0
- actor.skill_sp_cost[skill.id] = 0
- end
- end
- # 命中率再計算
- if SKILL_HIT_UP
- actor.skill_hit[skill.id] = skill.hit
- hit = S_HIT[skill.id]
- hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
- for i in 1...actor.skill_level[skill.id]
- actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
- actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
- end
- # 100以上はありえない
- if actor.skill_hit[skill.id] > 100
- actor.skill_hit[skill.id] = 100
- end
- end
- actor.skill_up = false
- end
- actor.skill_use[skill.id] -= 1
- end
- end
- #=================================================================
- # スキル成長によるアニメーション変化
- #=================================================================
- class Scene_Battle
- include Skill_updata
- #--------------------------------------------------------------
- # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
- #-----------------------------------------------------------
- alias update_phase4_step4_skillup update_phase4_step4
- def update_phase4_step4
- update_phase4_step4_skillup
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if @active_battler.is_a?(Game_Actor) and USE_S_ANIME
- s_anime = S_ANIME[@skill.id]
- # 設定がないなら無視
- if s_anime != nil and s_anime[@active_battler.id] != nil
- s_anime_set = s_anime[@active_battler.id]
- for i in 0...s_anime_set.size
- s_anime_def = s_anime_set[i]
- # 規定レベル以上
- if @active_battler.skill_level[@skill.id] >= s_anime_def[0]
- # 対象側アニメーション
- for target in @target_battlers
- target.animation_id = s_anime_def[1]
- end
- end
- end
- end
- end
- ##########################################################
- end
- ##########################################################
- end
- end
- #=================================================================
- # 以下、レベルアップ表示部分(レベルアップ表示がいらないなら消してもOK)
- #=================================================================
- class Scene_Battle
- include Skill_updata
- if SHOW_SKILL_LV_UP
- #----------------------------------------------------------
- # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
- #----------------------------------------------------------
- alias update_phase4_step2_skillup update_phase4_step2
- def update_phase4_step2
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if @active_battler.is_a?(Game_Actor)
- @active_battler.skill_up = false
- end
- @skillup = false
- ##########################################################
- end
- ##########################################################
- update_phase4_step2_skillup # 原物
- end
- #-------------------------------------------------------------
- # ● フレーム更新 (メインフェーズ ステップ 3 : 行動側アニメーション)
- #-----------------------------------------------------------
- alias update_phase4_step3_skillup update_phase4_step3
- def update_phase4_step3
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up != false
- @skillup = true
- @skill_up_window = Window_Skillup.new(@active_battler)
- if SKILLUP_SE != nil
- Audio.se_play("Audio/SE/" + SKILLUP_SE)
- sleep(0.1)
- end
- end
- ##########################################################
- end
- ##########################################################
- update_phase4_step3_skillup
- end
- #--------------------------------------------------------------
- # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
- #--------------------------------------------------------------
- alias update_phase4_step5_skillup update_phase4_step5
- def update_phase4_step5
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if @active_battler.is_a?(Game_Actor) and @skillup
- @skill_up_window.dispose
- @active_battler.skill_up = false
- @skillup = false
- end
- ##########################################################
- end
- ##########################################################
- update_phase4_step5_skillup # 原物
- end
- #---------------------------------------------------------------
- # ● フレーム更新
- #----------------------------------------------------------------
- alias update_skillup update
- def update
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up and @skillup
- @skill_up_window.contents_opacity -= 4
- end
- ##########################################################
- end
- ##########################################################
- update_skillup # 原物
- end
- end # if SHOW_SKILL_LV_UP
- end
- class Window_Skillup < Window_Base
- #--------------------------------------------------------------
- # ● オブジェクト初期化
- # actor : アクター
- #-------------------------------------------------------------
- def initialize(actor)
- super(actor.screen_x-140, 260, 250, 64)
- self.contents = Bitmap.new(width - 32, height - 32)
- self.opacity = 0
- self.contents.font.color = Color.new(255, 64, 0)
- self.contents.draw_text(80, 0, 150, 32, "LEVEL UP!")
- end
- end
- #====================================================================
- # 以下、再定義部分を含む(SP消費減少の機能がいらないなら消してもOK)
- #====================================================================
- class Window_Skill < Window_Selectable
- include Skill_updata
- #----------------------------------------------------------------
- # ● 項目の描画
- # index : 項目番号
- #-----------------------------------------------------------------
- def draw_item(index)
- skill = @data[index]
- if @actor.skill_can_use?(skill.id)
- self.contents.font.color = normal_color
- else
- self.contents.font.color = disabled_color
- end
- x = 4 + index % 2 * (288 + 32)
- y = index / 2 * 32
- rect = Rect.new(x, y, self.width / @column_max - 32, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- bitmap = RPG::Cache.icon(skill.icon_name)
- opacity = self.contents.font.color == normal_color ? 255 : 128
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
- #-修正-----
- @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
- #name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s + ")"
- name_level = skill.name
- ##########################################################
- if !S_EXCEP.include?(skill.id)
- ##########################################################
- name_level += "(Lv" + @actor.skill_level[skill.id].to_s + ")"
- ##########################################################
- end
- ##########################################################
- self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
- ##########################################################
- if !S_EXCEP.include?(skill.id)
- ##########################################################
- @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
- self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
- ##########################################################
- else
- self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
- end
- ##########################################################
- #----------
- end
- end
- class Scene_Skill
- #----------------------------------------------------------
- # ● フレーム更新 (ターゲットウィンドウがアクティブの場合)
- #-------------------------------------------------------------
- def update_target
- # B ボタンが押された場合
- if Input.trigger?(Input::B)
- # キャンセル SE を演奏
- $game_system.se_play($data_system.cancel_se)
- # ターゲットウィンドウを消去
- @skill_window.active = true
- @target_window.visible = false
- @target_window.active = false
- return
- end
- # C ボタンが押された場合
- if Input.trigger?(Input::C)
- # SP 切れなどで使用できなくなった場合
- unless @actor.skill_can_use?(@skill.id)
- # ブザー SE を演奏
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # ターゲットが全体の場合
- if @target_window.index == -1
- # パーティ全体にスキルの使用効果を適用
- used = false
- for i in $game_party.actors
- used |= i.skill_effect(@actor, @skill)
- end
- end
- # ターゲットが使用者の場合
- if @target_window.index <= -2
- # ターゲットのアクターにスキルの使用効果を適用
- target = $game_party.actors[@target_window.index + 10]
- used = target.skill_effect(@actor, @skill)
- end
- # ターゲットが単体の場合
- if @target_window.index >= 0
- # ターゲットのアクターにスキルの使用効果を適用
- target = $game_party.actors[@target_window.index]
- used = target.skill_effect(@actor, @skill)
- end
- # スキルを使った場合
- if used
- # スキルの使用時 SE を演奏
- $game_system.se_play(@skill.menu_se)
- #-----修正---------------------------------------------
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
- # SP 消費
- @actor.sp -= @actor.skill_sp_cost[@skill.id]
- ##########################################################
- end
- ##########################################################
- #------------------------------------------------
- # 各ウィンドウの内容を再作成
- @status_window.refresh
- @skill_window.refresh
- @target_window.refresh
- # 全滅の場合
- if $game_party.all_dead?
- # ゲームオーバー画面に切り替え
- $scene = Scene_Gameover.new
- return
- end
- # コモンイベント ID が有効の場合
- if @skill.common_event_id > 0
- # コモンイベント呼び出し予約
- $game_temp.common_event_id = @skill.common_event_id
- # マップ画面に切り替え
- $scene = Scene_Map.new
- return
- end
- end
- # スキルを使わなかった場合
- unless used
- # ブザー SE を演奏
- $game_system.se_play($data_system.buzzer_se)
- end
- return
- end
- end
- end
- class Scene_Battle
- include Skill_updata
- #------------------------------------------------------
- # ● スキルアクション 結果作成
- #-------------------------------------------------------
- alias make_skill_action_result_skill_update make_skill_action_result
- def make_skill_action_result
- make_skill_action_result_skill_update
- # SP 消費
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if SP_COST_DOWN and @active_battler.is_a?(Game_Actor)
- @active_battler.sp += @skill.sp_cost
- @active_battler.sp -= @active_battler.skill_sp_cost[@skill.id]
- end
- ##########################################################
- end
- ##########################################################
- end
- end
- class Game_Battler
- #--------------------------------------------------------
- # ● スキルの使用可能判定
- # skill_id : スキル ID
- #------------------------------------------------------
- alias skill_update_can_use? skill_can_use?
- def skill_can_use?(skill_id)
- ret = skill_update_can_use?(skill_id)
- ##########################################################
- if !S_EXCEP.include?(@skill.id)
- ##########################################################
- if !ret and SP_COST_DOWN
- # SP が足りない場合は使用不可となった?
- if $data_skills[skill_id].sp_cost > self.sp
- if self.is_a?(Game_Actor)
- skill_sp_cost = self.skill_sp_cost[skill_id]
- if skill_sp_cost < self.sp
- ret = true
- end
- end
- end
- end
- ##########################################################
- end
- ##########################################################
- return ret
- end
- end
- #===============================================================
- # イベントスクリプト操作
- #===============================================================
- class Interpreter
- include Skill_updata
- #-----------------------------------------------------------
- # ● スキルレベル設定(レベルセット)
- # actor_id : アクターID
- # skill_id : スキルID
- # level : 設定レベル
- #-----------------------------------------------------------
- def set_skill_level(actor_id, skill_id, level)
- actor = $game_actors[actor_id]
- skill = $data_skills[skill_id]
- # リミット取得
- limit = S_LEVEL[skill_id]
- s_limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)
- if level > s_limit or level < 0
- return
- end
- # レベル
- actor.skill_level[skill.id] = level
- # 使用回数
- use_list = actor.skill_list[skill.id]
- actor.skill_use[skill.id] = use_list[level]
- # 威力を再計算
- if SKILL_MIGHT_UP
- actor.skill_power[skill.id] = skill.power
- might = S_MIGHT[skill.id]
- might_rate = ((might != nil and might[actor.id] != nil) ? might[actor.id] : MIGHT_RATE)
- for i in 0...level
- actor.skill_power[skill.id] += skill.power * might_rate / 100
- actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
- end
- end
- # SP消費再計算
- if SP_COST_DOWN
- actor.skill_sp_cost[skill.id] = skill.sp_cost
- cost = S_COST[skill.id]
- cost_rate = ((cost != nil and cost[actor.id] != nil) ? cost[actor.id] : COST_RATE)
- for i in 0...level
- actor.skill_sp_cost[skill.id] += skill.sp_cost * cost_rate / 100
- actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
- end
- # SP消費が0以下はありえない
- if actor.skill_sp_cost[skill.id] < 0
- actor.skill_sp_cost[skill.id] = 0
- end
- end
- # 命中率再計算
- if SKILL_HIT_UP
- actor.skill_hit[skill.id] = skill.hit
- hit = S_HIT[skill.id]
- hit_rate = ((hit != nil and hit[actor.id] != nil) ? hit[actor.id] : HIT_RATE)
- for i in 0...level
- actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
- actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
- end
- # 100以上はありえない
- if actor.skill_hit[skill.id] > 100
- actor.skill_hit[skill.id] = 100
- end
- end
- end
-
- #---------------------------------------------------------
- # ● スキルレベル設定(レベルアップ)
- # actor_id : アクターID
- # skill_id : スキルID
- #--------------------------------------------------------
- def skill_level_up(actor_id, skill_id)
- actor = $game_actors[actor_id]
- set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]+1)
- end
-
- #-------------------------------------------------------
- # ● スキルレベル設定(レベルダウン)
- # actor_id : アクターID
- # skill_id : スキルID
- #--------------------------------------------------------
- def skill_level_down(actor_id, skill_id)
- actor = $game_actors[actor_id]
- set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]-1)
- end
- end
- #==================================================================
- # 本脚本来自www.66RPG.com,使用和转载请保留此信息
- #==================================================================
复制代码 S_EXCEP = [1, 57] (这个是不会升级的技能编号么?)
我试验了一下,平均用多久才会升级呢?还是要怎么个设置法? |
|