#============================================================================== # ■ RGSS3 スキルコスト拡張 Ver3.01 by 星潟 #------------------------------------------------------------------------------ # スキル使用時のコストに「アイテム/武器/防具」の指定や # 所持金/変数/HP/MP/TPの「固定値/割合/計算式」分の消費を指定できます。 # また、スキル使用時のHP/TPの消費量を軽減する特徴や # HP/MP/TP軽減特徴の効果を受けないようにするスキルの作成が可能になります。 #------------------------------------------------------------------------------ # ★スキルコストの設定(スキルのメモ欄に記述) #------------------------------------------------------------------------------ # ☆アイテムを消費させたい場合 # #  <アイテム消費:1,2> # # この場合、アイテムID1を2つ消費する。 #------------------------------------------------------------------------------ # ☆武器を消費させたい場合 # #  <武器消費:3,1> # # この場合、アイテムID3を1つ消費する。 #------------------------------------------------------------------------------ # ☆防具を消費させたい場合 # #  <防具消費:2> # # この場合、防具ID2を1つ消費する。(個数を省略すると、1扱いとなる) #------------------------------------------------------------------------------ # ☆所持金を固定値消費させたい場合 # #  <所持金固定消費:1000> # # この場合、所持金を1000消費する。 #------------------------------------------------------------------------------ # ☆所持金を割合消費させたい場合 # #  <所持金割合消費:10> # # この場合、所持金を10%消費する。 #------------------------------------------------------------------------------ # ☆所持金を計算式で消費させたい場合(上級者向け?) # #  <所持金消費式:$game_variables[1]*50> # # この場合、変数1の50倍の値分の所持金を消費する。 #------------------------------------------------------------------------------ # ☆変数の値を固定値消費させたい場合 # #  <変数固定消費:4,200> # # この場合、変数4の値をを200消費する。 #------------------------------------------------------------------------------ # ☆変数の値を割合消費させたい場合 # #  <変数割合消費:7,5> # # この場合、変数7の値をを5%消費する。 #------------------------------------------------------------------------------ # ☆変数の値を計算式で消費させたい場合(上級者向け?) # #  <変数消費式:3,self.level+5> # # この場合、変数3の値を使用者のレベル+5分消費する。 #------------------------------------------------------------------------------ # ☆HPを固定値消費させたい場合 # #   # # この場合、HPを1000消費する。 #------------------------------------------------------------------------------ # ☆HPを割合消費させたい場合 # #   # # この場合、HPを10%消費する。 #------------------------------------------------------------------------------ # ☆HPを最大値に対して割合消費させたい場合 # #  <最大HP割合消費:10> # # この場合、最大HPの10%のHPを消費する。 #------------------------------------------------------------------------------ # ☆HPを計算式で消費させたい場合(上級者向け?) # #   # # この場合、自らのMP分のHPを消費する。 #------------------------------------------------------------------------------ # ☆MPを固定値消費させたい場合 # #   # # この場合、MPを30000消費する。 # (デフォルトでは9999までですが、それを超えて設定できます) #------------------------------------------------------------------------------ # ☆MPを割合消費させたい場合 # #   # # この場合、MPを20%消費する。 #------------------------------------------------------------------------------ # ☆MPを最大値に対して割合消費させたい場合 # #  <最大MP割合消費:40> # # この場合、最大MPの40%のMPを消費する。 #------------------------------------------------------------------------------ # ☆MPを計算式で消費させたい場合(上級者向け?) # #   # # この場合、自らのHP分のMPを消費する。 #------------------------------------------------------------------------------ # ☆TPを固定値消費させたい場合 # #   # # この場合、TPを120消費する。 # (デフォルトでは100までですが、TP消費軽減装備の存在を考えて # 100を超える値を指定してみるのも手かもしれません) #------------------------------------------------------------------------------ # ☆TPを割合消費させたい場合 # #   # # この場合、TPを15%消費する。 #------------------------------------------------------------------------------ # ☆TPを最大値に対して割合消費させたい場合 # #  <最大TP割合消費:50> # # この場合、最大TPの50%のTPを消費する。 #------------------------------------------------------------------------------ # ☆TPを計算式で消費させたい場合(上級者向け?) # #   # # この場合、自らのHPとMPの差分のTPを消費する。 #------------------------------------------------------------------------------ # ★スキル消費HP/TP軽減の設定(アクターや装備品、ステート等のメモ欄に記述) #------------------------------------------------------------------------------ # ☆スキル消費HPを軽減させたい場合 # #  <消費HP軽減割合:10> # # この場合、スキル使用時の消費HPが10%軽減される。 #------------------------------------------------------------------------------ # ☆スキル消費TPを軽減させたい場合 # #  <消費TP軽減割合:20> # # この場合、スキル使用時の消費TPが20%軽減される。 #------------------------------------------------------------------------------ # ★スキル消費HP/MP/TP軽減無効スキルの設定(スキルのメモ欄に記述) #------------------------------------------------------------------------------ # ☆スキル消費HPを軽減させたい場合 # #  <消費HP軽減無効> # # この場合、スキル使用時の消費HP軽減特徴が無効化される。 #------------------------------------------------------------------------------ # ☆スキル消費MPを軽減させたい場合 # #  <消費MP軽減無効> # # この場合、スキル使用時の消費MP軽減特徴が無効化される。 #------------------------------------------------------------------------------ # ☆スキル消費TPを軽減させたい場合 # #  <消費TP軽減無効> # # この場合、スキル使用時の消費TP軽減特徴が無効化される。 #------------------------------------------------------------------------------ # ★スキル消費HPで戦闘不能になるスキルを作りたい場合の設定(スキルのメモ欄に記述) #------------------------------------------------------------------------------ #  <戦闘不能許可> # # この場合、このスキルによる消費HPでの戦闘不能を認める。 # (この設定をしない限り、消費HPよりHPが高くない限りそのスキルは使えない) #------------------------------------------------------------------------------ # ★スキル消費HPの処理タイミングを変更(スキルのメモ欄に記述) #------------------------------------------------------------------------------ #  <消費HP支払いタイミング変更> # # この場合、このスキルによる消費HPの支払いタイミングを変更する。 # HPCTがfalseの場合はtrue扱い(先払い)、 # trueの場合はfalse扱い(後払い)となる。 #============================================================================== # Ver3.00 アイテムと変数消費の条件判定を修正。 # HP消費タイミングを先に出来るように改修。 # また、HP消費タイミングをスキル別に逆に出来る機能を追加。 # HP消費で戦闘不能になった際のステータスウィンドウのリフレッシュを # 戦闘不能メッセージよりも前に一度行うように処理を追加。 # # Ver3.01 デフォルトのMPコストに対しMPコスト軽減無効が効いていないのを修正。 # デフォルトのTPコストに対しTPコスト軽減が効いていないのを修正。 #============================================================================== module EXTRA_SKILL_COST #コストとしてアイテムを消費する場合の設定用ワード WORD1A = "アイテム消費" #コストとして武器を消費する場合の設定用ワード WORD1B = "武器消費" #コストとして防具を消費する場合の設定用ワード WORD1C = "防具消費" #コストとして所持金を固定値消費する場合の設定用ワード WORD2A = "所持金固定消費" #コストとして所持金を割合消費する場合の設定用ワード WORD2B = "所持金割合消費" #コストとして所持金を消費する式を設定する場合の設定用ワード WORD2C = "所持金消費式" #コストとして変数の値を固定値消費する場合の設定用ワード WORD3A = "変数固定消費" #コストとして変数の値を割合消費する場合の設定用ワード WORD3B = "変数割合消費" #コストとして変数の値を消費する式を設定する場合の設定用ワード WORD3C = "変数消費式" #コストとしてHPを固定値消費する場合の設定用ワード WORD4A = "HP固定消費" #コストとしてHPを割合消費する場合の設定用ワード WORD4B = "HP割合消費" #コストとしてHPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード WORD4C = "最大HP割合消費" #コストとしてHPを消費する式を設定する場合の設定用ワード WORD4D = "HP消費式" #コストとしてMPを固定値消費する場合の設定用ワード WORD5A = "MP固定消費" #コストとしてMPを割合消費する場合の設定用ワード WORD5B = "MP割合消費" #コストとしてMPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード WORD5C = "最大MP割合消費" #コストとしてMPを消費する式を設定する場合の設定用ワード WORD5D = "MP消費式" #コストとしてTPを固定値消費する場合の設定用ワード WORD6A = "TP固定消費" #コストとしてTPを割合消費する場合の設定用ワード WORD6B = "TP割合消費" #コストとしてTPを最大値に対する一定割合分消費する式を設定する場合の設定用ワード WORD6C = "最大TP割合消費" #コストとしてTPを消費する式を設定する場合の設定用ワード WORD6D = "TP消費式" #消費HP軽減特徴の設定用ワード WORD7A = "消費HP軽減割合" #消費HP軽減無効スキルの設定用ワード WORD7B = "消費HP軽減無効" #消費MP軽減無効スキルの設定用ワード WORD8 = "消費MP軽減無効" #消費TP軽減特徴の設定用ワード WORD9A = "消費TP軽減割合" #消費TP軽減無効スキルの設定用ワード WORD9B = "消費TP軽減無効" #スキル使用時、消費HPによる戦闘不能を有効にするか否かの設定用ワード WORD10 = "戦闘不能許可" #スキル使用時、消費HPの支払いタイミングを変更する為の設定用ワード #後で設定するHPCTの項目について、設定したスキルのみ逆転させられる。 WORD11 = "消費HP支払いタイミング変更" #スキル使用時、消費HPの支払いタイミングを #スキルの一連の処理が終わってからにするか、先にするか。 #(先にする場合、戦闘不能許可の設定は強制的に無効化されます) #falseで終わってから、trueで先にします。 HPCT = false #HPのスキルコスト表示色(テキストカラーIDに準じる) HPCC = 2 #MPのスキルコスト表示色(テキストカラーIDに準じる) MPCC = 23 #TPのスキルコスト表示色(テキストカラーIDに準じる) TPCC = 29 #コストとして変数の値を消費する場合 #使用後、変数の値がマイナスになる場合でも使用可とするか #true = 使用可能 false = 使用不可 V_MIN1 = false #コストとして変数の値を消費する場合 #敵が使用する場合も判定を行うか #true = 行う false = 行わない V_MIN2 = false #HP/MP/TPコストの表示形式 #0 デフォルト(HPは表示しない) #1 HP/MP/TPを全て表示(表示形式は揃えない) #2〜 数字分だけ区切って表示 COST_D = 5 #COST_Dが2以上の場合の表示設定 #HPを表示するか(trueで表示 falseで非表示) HP_D = true #MPを表示するか MP_D = true #TPを表示するか TP_D = true #スキルコストの対象表示(項目名の短縮名表示 trueで表示 falseで非表示) CTITLE = true #スキルリストの桁数 COLMAX = 1 #スキルコスト表示位置の調整 COS_OX = -2 end class Game_BattlerBase #-------------------------------------------------------------------------- # コストの支払い可否 #-------------------------------------------------------------------------- alias skill_cost_payable_extra_cost? skill_cost_payable? def skill_cost_payable?(skill) skill_cost_payable_extra_cost?(skill) && skill_ex_cost_payble(skill) end #-------------------------------------------------------------------------- # 追加コストの支払い可否 #-------------------------------------------------------------------------- def skill_ex_cost_payble(skill) (self.actor? ? (skill_item_cost_payble(skill) && skill_gold_cost_payble(skill)) : true) && skill_var_cost_payble(skill) && skill_hp_cost_payble(skill) end #-------------------------------------------------------------------------- # コストの支払い #-------------------------------------------------------------------------- alias pay_skill_cost_extra_cost pay_skill_cost def pay_skill_cost(skill) pay_skill_cost_extra_cost(skill) self.hp = [self.hp - self.skill_hp_cost(skill), 1].max if skill.hp_cost_advance_payment if self.actor? pay_item_cost(skill) pay_gold_cost(skill) end pay_var_cost(skill) end #-------------------------------------------------------------------------- # アイテムコストの支払い可否 #-------------------------------------------------------------------------- def skill_item_cost_payble(skill) skill.item_cost.each {|k1,v1| case k1 when 0;v1.each {|k2,v2| return false if $game_party.item_number($data_items[k2]) < v2} when 1;v1.each {|k2,v2| return false if $game_party.item_number($data_weapons[k2]) < v2} when 2;v1.each {|k2,v2| return false if $game_party.item_number($data_armors[k2]) < v2} end} true end #-------------------------------------------------------------------------- # アイテムコストの支払い #-------------------------------------------------------------------------- def pay_item_cost(skill) return if skill.item_cost.empty? skill.item_cost.each {|k1,v1| case k1 when 0;v1.each {|k2,v2| $game_party.lose_item($data_items[k2], v2)} when 1;v1.each {|k2,v2| $game_party.lose_item($data_weapons[k2], v2)} when 2;v1.each {|k2,v2| $game_party.lose_item($data_armors[k2], v2)} end} end #-------------------------------------------------------------------------- # ゴールドコストの支払い可否 #-------------------------------------------------------------------------- def skill_gold_cost_payble(skill) $game_party.gold >= skill_gold_cost(skill) end #-------------------------------------------------------------------------- # ゴールドコストの支払い #-------------------------------------------------------------------------- def pay_gold_cost(skill) $game_party.gain_gold(-skill_gold_cost(skill)) end #-------------------------------------------------------------------------- # ゴールドコスト #-------------------------------------------------------------------------- def skill_gold_cost(skill) (gold_cost_fix(skill) + gold_cost_rate(skill) + gold_cost_eval(skill)).to_i end #-------------------------------------------------------------------------- # ゴールドコスト(固定値) #-------------------------------------------------------------------------- def gold_cost_fix(skill) skill.gold_cost_fix end #-------------------------------------------------------------------------- # ゴールドコスト(割合) #-------------------------------------------------------------------------- def gold_cost_rate(skill) skill.gold_cost_rate * $game_party.gold * 0.01 end #-------------------------------------------------------------------------- # ゴールドコスト(計算式) #-------------------------------------------------------------------------- def gold_cost_eval(skill) eval(skill.gold_cost_eval) end #-------------------------------------------------------------------------- # 変数コストの支払い可否 #-------------------------------------------------------------------------- def skill_var_cost_payble(skill) return true if EXTRA_SKILL_COST::V_MIN1 return true if !self.actor? && !EXTRA_SKILL_COST::V_MIN2 h = {} skill.var_cost_fix.each {|a| h[a[0]] ||= 0 h[a[0]] += a[1]} skill.var_cost_rate.each {|a| h[a[0]] ||= 0 h[a[0]] += a[1] * $game_variables[a[0]] / 100} skill.var_cost_eval.each {|a| h[a[0]] ||= 0 h[a[0]] += eval(a[1])} h.each {|k,v| return false if v > 0 && $game_variables[k] < v} true end #-------------------------------------------------------------------------- # 変数コストの支払い #-------------------------------------------------------------------------- def pay_var_cost(skill) return if !self.actor? && !EXTRA_SKILL_COST::V_MIN2 h = {} skill.var_cost_fix.each {|a| h[a[0]] ||= 0 h[a[0]] += a[1]} skill.var_cost_rate.each {|a| h[a[0]] ||= 0 h[a[0]] += $game_variables[a[0]] * a[1] / 100} skill.var_cost_eval.each {|a| h[a[0]] ||= 0 h[a[0]] += eval(a[1])} h.each {|k,v| $game_variables[k] -= v} end #-------------------------------------------------------------------------- # HPコストの支払い可否 #-------------------------------------------------------------------------- def skill_hp_cost_payble(skill) hpc = skill_hp_cost(skill) return true if hpc <= 0 skill.suicidable? ? true : self.hp > hpc end #-------------------------------------------------------------------------- # HPコスト #-------------------------------------------------------------------------- def skill_hp_cost(skill) ((hp_cost_fix(skill) + hp_cost_rate(skill) + hp_cost_mrate(skill) + hp_cost_eval(skill)) * special_ex_hcr(skill)).to_i end #-------------------------------------------------------------------------- # HPコスト(固定値) #-------------------------------------------------------------------------- def hp_cost_fix(skill) skill.hp_cost_fix end #-------------------------------------------------------------------------- # HPコスト(割合) #-------------------------------------------------------------------------- def hp_cost_rate(skill) skill.hp_cost_rate * self.hp * 0.01 end #-------------------------------------------------------------------------- # HPコスト(最大値からの割合) #-------------------------------------------------------------------------- def hp_cost_mrate(skill) return 0 if skill.hp_cost_mrate == 0 skill.hp_cost_mrate * self.mhp * 0.01 end #-------------------------------------------------------------------------- # HPコスト(計算式) #-------------------------------------------------------------------------- def hp_cost_eval(skill) eval(skill.hp_cost_eval) end #-------------------------------------------------------------------------- # HPコスト割合軽減判定 #-------------------------------------------------------------------------- def special_ex_hcr(skill) skill.ex_hcr_zero? ? 1.0 : [(100.0 - ex_hcr) / 100, 0].max end #-------------------------------------------------------------------------- # MPコスト #-------------------------------------------------------------------------- alias skill_mp_cost_extra_cost skill_mp_cost def skill_mp_cost(skill) @temp_mcr_1_0 = true data = skill_mp_cost_extra_cost(skill) @temp_mcr_1_0 = nil data += mp_cost_fix(skill) + mp_cost_rate(skill) + mp_cost_mrate(skill) + mp_cost_eval(skill) (data * special_mcr(skill)).to_i end #-------------------------------------------------------------------------- # MPコスト(固定値) #-------------------------------------------------------------------------- def mp_cost_fix(skill) skill.mp_cost_fix end #-------------------------------------------------------------------------- # MPコスト(割合) #-------------------------------------------------------------------------- def mp_cost_rate(skill) skill.mp_cost_rate * self.mp * 0.01 end #-------------------------------------------------------------------------- # MPコスト(最大値からの割合) #-------------------------------------------------------------------------- def mp_cost_mrate(skill) skill.mp_cost_mrate * self.mmp * 0.01 end #-------------------------------------------------------------------------- # MPコスト(計算式) #-------------------------------------------------------------------------- def mp_cost_eval(skill) eval(skill.mp_cost_eval) end #-------------------------------------------------------------------------- # MPコスト割合軽減判定 #-------------------------------------------------------------------------- def special_mcr(skill) skill.mcr_zero? ? 1.0 : mcr end #-------------------------------------------------------------------------- # 特殊能力値の取得 #-------------------------------------------------------------------------- alias sparam_extra_cost sparam def sparam(sparam_id) return 1.0 if sparam_id == 4 && @temp_mcr_1_0 sparam_extra_cost(sparam_id) end #-------------------------------------------------------------------------- # TPコスト #-------------------------------------------------------------------------- alias skill_tp_cost_extra_cost skill_tp_cost def skill_tp_cost(skill) data = skill_tp_cost_extra_cost(skill) data += tp_cost_fix(skill) + tp_cost_rate(skill) + tp_cost_mrate(skill) + tp_cost_eval(skill) (data * special_ex_tcr(skill)).to_i end #-------------------------------------------------------------------------- # TPコスト(固定) #-------------------------------------------------------------------------- def tp_cost_fix(skill) skill.tp_cost_fix end #-------------------------------------------------------------------------- # TPコスト(割合) #-------------------------------------------------------------------------- def tp_cost_rate(skill) skill.tp_cost_rate * self.tp * 0.01 end #-------------------------------------------------------------------------- # TPコスト(最大値からの割合) #-------------------------------------------------------------------------- def tp_cost_mrate(skill) skill.tp_cost_mrate * self.max_tp * 0.01 end #-------------------------------------------------------------------------- # TPコスト(計算式) #-------------------------------------------------------------------------- def tp_cost_eval(skill) eval(skill.tp_cost_eval) end #-------------------------------------------------------------------------- # TPコスト割合軽減判定 #-------------------------------------------------------------------------- def special_ex_tcr(skill) skill.ex_tcr_zero? ? 1.0 : [(100.0 - ex_tcr) / 100, 0].max end #-------------------------------------------------------------------------- # HPコスト割合軽減 #-------------------------------------------------------------------------- def ex_hcr feature_objects.inject(0) {|r,f| r += f.ex_hcr} end #-------------------------------------------------------------------------- # TPコスト割合軽減 #-------------------------------------------------------------------------- def ex_tcr feature_objects.inject(0) {|r,f| r += f.ex_tcr} end end class Scene_Skill < Scene_ItemBase #-------------------------------------------------------------------------- # アクターへの使用 #-------------------------------------------------------------------------- unless method_defined?(:use_item_to_actors_extra_cost) alias use_item_to_actors_extra_cost use_item_to_actors def use_item_to_actors target = user item = target.last_skill.object use_item_to_actors_extra_cost return unless item.is_a?(RPG::Skill) if !item.hp_cost_advance_payment && target.alive? && target.hp > 0 if item.suicidable? target.hp -= target.skill_hp_cost(item) else target.hp = [target.hp - target.skill_hp_cost(item), 1].max end end end end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # スキル・アイテムの使用 #-------------------------------------------------------------------------- alias use_item_extra_cost use_item def use_item target = @subject item = target.current_action.item use_item_extra_cost return unless item.is_a?(RPG::Skill) if !item.hp_cost_advance_payment && target.alive? && target.hp > 0 if item.suicidable? target.hp -= target.skill_hp_cost(item) if !target.alive? refresh_status state = $data_states[1] state_msg = target.actor? ? state.message1 : state.message2 target.perform_collapse_effect @log_window.replace_text(target.name + state_msg) @log_window.wait @log_window.wait_for_effect end else target.hp = [target.hp - target.skill_hp_cost(item), 1].max end end end end class Window_Base < Window #-------------------------------------------------------------------------- # 制御文字の処理 #-------------------------------------------------------------------------- alias process_escape_character_extra_cost process_escape_character def process_escape_character(code, text, pos) if code.upcase == 'ALPHAC' alpha = contents.font.color.alpha change_color(text_color(obtain_escape_param(text))) contents.font.color.alpha = alpha return end process_escape_character_extra_cost(code, text, pos) end #-------------------------------------------------------------------------- # 特殊なコスト描写処理 #-------------------------------------------------------------------------- def draw_text_ex_cost(x, y, text) text = convert_escape_characters(text) pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)} process_character(text.slice!(0, 1), text, pos) until text.empty? end end class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # 桁数 #-------------------------------------------------------------------------- alias col_max_extra_cost col_max def col_max data = col_max_extra_cost data = EXTRA_SKILL_COST::COLMAX if data != EXTRA_SKILL_COST::COLMAX return data end #-------------------------------------------------------------------------- # スキルコストの描写 #-------------------------------------------------------------------------- alias draw_skill_cost_extra_cost draw_skill_cost def draw_skill_cost(rect, skill) return draw_skill_cost_extra_cost(rect, skill) if EXTRA_SKILL_COST::COST_D == 0 flag = [@actor.skill_hp_cost(skill),@actor.skill_mp_cost(skill),@actor.skill_tp_cost(skill)] contents.font.color.alpha = enable?(skill) ? 255 : translucent_alpha text = "" sub_text = "" if EXTRA_SKILL_COST::HP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[0] > 0) t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(3) : "" if EXTRA_SKILL_COST::COST_D > 1 && flag[0].to_s.length != EXTRA_SKILL_COST::COST_D number = EXTRA_SKILL_COST::COST_D - flag[0].to_s.length number.times do t+= " " end end t += flag[0].to_s sub_text += t text += hp_cost_color_text + t end if EXTRA_SKILL_COST::MP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[1] > 0) if text != "" text += "\\ALPHAC[0]/" sub_text += "/" end t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(5) : "" if EXTRA_SKILL_COST::COST_D > 1 && flag[1].to_s.length != EXTRA_SKILL_COST::COST_D number = EXTRA_SKILL_COST::COST_D - flag[1].to_s.length number.times do t+= " " end end t += flag[1].to_s sub_text += t text += mp_cost_color_text + t end if EXTRA_SKILL_COST::TP_D && (EXTRA_SKILL_COST::COST_D > 1 or flag[2] > 0) if text != "" text += "\\ALPHAC[0]/" sub_text += "/" end t = EXTRA_SKILL_COST::CTITLE ? Vocab::basic(7) : "" if EXTRA_SKILL_COST::COST_D > 1 && flag[2].to_s.length != EXTRA_SKILL_COST::COST_D number = EXTRA_SKILL_COST::COST_D - flag[2].to_s.length number.times do t+= " " end end t += flag[2].to_s sub_text += t text += tp_cost_color_text + t end sub_x = text_size(sub_text).width x = rect.x + rect.width - sub_x + EXTRA_SKILL_COST::COS_OX y = rect.y draw_text_ex_cost(x, y, text) end #-------------------------------------------------------------------------- # HPコストの色 #-------------------------------------------------------------------------- def hp_cost_color_text @hp_cost_color_set ||= "\\ALPHAC[" + EXTRA_SKILL_COST::HPCC.to_s + "]" end #-------------------------------------------------------------------------- # MPコストの色 #-------------------------------------------------------------------------- def mp_cost_color_text @mp_cost_color_set ||= "\\ALPHAC[" + EXTRA_SKILL_COST::MPCC.to_s + "]" end #-------------------------------------------------------------------------- # TPコストの色 #-------------------------------------------------------------------------- def tp_cost_color_text @tp_cost_color_set ||= "\\ALPHAC[" + EXTRA_SKILL_COST::TPCC.to_s + "]" end end class RPG::BaseItem #-------------------------------------------------------------------------- # HPコスト軽減 #-------------------------------------------------------------------------- def ex_hcr @feature_ex_hcr ||= /<#{EXTRA_SKILL_COST::WORD7A}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # TPコスト軽減 #-------------------------------------------------------------------------- def ex_tcr @feature_ex_tcr ||= /<#{EXTRA_SKILL_COST::WORD9A}[::](\S+)>/ =~ note ? $1.to_i : 0 end end class RPG::Skill < RPG::UsableItem #-------------------------------------------------------------------------- # HPコスト軽減の無効 #-------------------------------------------------------------------------- def ex_hcr_zero? (@ex_hcr_zero ||= /<#{EXTRA_SKILL_COST::WORD7B}>/ =~ note ? 1 : 0) == 1 end #-------------------------------------------------------------------------- # MPコスト軽減の無効 #-------------------------------------------------------------------------- def mcr_zero? (@mcr_zero ||= /<#{EXTRA_SKILL_COST::WORD8}>/ =~ note ? 1 : 0) == 1 end #-------------------------------------------------------------------------- # TPコスト軽減の無効 #-------------------------------------------------------------------------- def ex_tcr_zero? (@ex_tcr_zero ||= /<#{EXTRA_SKILL_COST::WORD9B}>/ =~ note ? 1 : 0) == 1 end #-------------------------------------------------------------------------- # アイテムコスト #-------------------------------------------------------------------------- def item_cost return @item_cost if @item_cost @item_cost = {0 => {},1 => {},2 => {}} ws = [EXTRA_SKILL_COST::WORD1A,EXTRA_SKILL_COST::WORD1B,EXTRA_SKILL_COST::WORD1C] note.each_line {|l| ws.each_with_index {|w,i| if /<#{w}[::](\S+)>/ =~ l a = $1.to_s.split(/\s*,\s*/) @item_cost[i][a[0].to_i] = a[1] ? a[1].to_i : 1 end}} @item_cost end #-------------------------------------------------------------------------- # ゴールドコスト(固定) #-------------------------------------------------------------------------- def gold_cost_fix @gold_cost_fix ||= /<#{EXTRA_SKILL_COST::WORD2A}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # ゴールドコスト(割合) #-------------------------------------------------------------------------- def gold_cost_rate @gold_cost_rate ||= /<#{EXTRA_SKILL_COST::WORD2B}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # ゴールドコスト(計算式) #-------------------------------------------------------------------------- def gold_cost_eval @gold_cost_eval ||= /<#{EXTRA_SKILL_COST::WORD2C}[::](\S+)>/ =~ note ? $1.to_s : "0" end #-------------------------------------------------------------------------- # 変数コスト(固定) #-------------------------------------------------------------------------- def var_cost_fix return @var_cost_fix if @var_cost_fix @var_cost_fix = [] self.note.each_line {|l| @var_cost_fix.push([$1.to_i,$2.to_i]) if /<#{EXTRA_SKILL_COST::WORD3A}[::](\S+),(\S+)>/ =~ l} @var_cost_fix end #-------------------------------------------------------------------------- # 変数コスト(割合) #-------------------------------------------------------------------------- def var_cost_rate return @var_cost_rate if @var_cost_rate @var_cost_rate = [] self.note.each_line {|l| @var_cost_rate.push([$1.to_i,$2.to_i]) if /<#{EXTRA_SKILL_COST::WORD3B}[::](\S+),(\S+)>/ =~ l} @var_cost_rate end #-------------------------------------------------------------------------- # 変数コスト(計算式) #-------------------------------------------------------------------------- def var_cost_eval return @var_cost_eval if @var_cost_eval @var_cost_eval = [] note.each_line {|l| @var_cost_eval.push([$1.to_i,$2.to_s]) if /<#{EXTRA_SKILL_COST::WORD3C}[::](\S+),(\S+)>/ =~ l} @var_cost_eval end #-------------------------------------------------------------------------- # HPコスト(固定) #-------------------------------------------------------------------------- def hp_cost_fix @hp_cost_fix ||= /<#{EXTRA_SKILL_COST::WORD4A}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # HPコスト(割合) #-------------------------------------------------------------------------- def hp_cost_rate @hp_cost_rate ||= /<#{EXTRA_SKILL_COST::WORD4B}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # HPコスト(最大値からの割合) #-------------------------------------------------------------------------- def hp_cost_mrate @hp_cost_mrate ||= /<#{EXTRA_SKILL_COST::WORD4C}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # HPコスト(計算式) #-------------------------------------------------------------------------- def hp_cost_eval @hp_cost_eval ||= /<#{EXTRA_SKILL_COST::WORD4D}[::](\S+)>/ =~ note ? $1.to_s : "0" end #-------------------------------------------------------------------------- # MPコスト(固定) #-------------------------------------------------------------------------- def mp_cost_fix @mp_cost_fix ||= /<#{EXTRA_SKILL_COST::WORD5A}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # MPコスト(割合) #-------------------------------------------------------------------------- def mp_cost_rate @mp_cost_rate ||= /<#{EXTRA_SKILL_COST::WORD5B}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # MPコスト(最大値からの割合) #-------------------------------------------------------------------------- def mp_cost_mrate @mp_cost_mrate ||= /<#{EXTRA_SKILL_COST::WORD5C}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # MPコスト(計算式) #-------------------------------------------------------------------------- def mp_cost_eval @mp_cost_eval ||= /<#{EXTRA_SKILL_COST::WORD5D}[::](\S+)>/ =~ note ? $1.to_s : "0" end #-------------------------------------------------------------------------- # TPコスト(固定) #-------------------------------------------------------------------------- def tp_cost_fix @tp_cost_fix ||= /<#{EXTRA_SKILL_COST::WORD6A}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # TPコスト(割合) #-------------------------------------------------------------------------- def tp_cost_rate @tp_cost_rate ||= /<#{EXTRA_SKILL_COST::WORD6B}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # TPコスト(最大値からの割合) #-------------------------------------------------------------------------- def tp_cost_mrate @tp_cost_mrate ||= /<#{EXTRA_SKILL_COST::WORD6C}[::](\S+)>/ =~ note ? $1.to_i : 0 end #-------------------------------------------------------------------------- # TPコスト(計算式) #-------------------------------------------------------------------------- def tp_cost_eval @tp_cost_eval ||= /<#{EXTRA_SKILL_COST::WORD6D}[::](\S+)>/ =~ note ? $1.to_s : "0" end #-------------------------------------------------------------------------- # 戦闘不能許可 #-------------------------------------------------------------------------- def suicidable? return false if hp_cost_advance_payment (@suicidable ||= /<#{EXTRA_SKILL_COST::WORD10}>/ =~ note ? 1 : 0) == 1 end #-------------------------------------------------------------------------- # HPコスト先払い判定 #-------------------------------------------------------------------------- def hp_cost_advance_payment @hp_cost_advance_payment ||= /<#{EXTRA_SKILL_COST::WORD11}>/ =~ note ? 1 : 0 t = EXTRA_SKILL_COST::HPCT @hp_cost_advance_payment == 1 ? !t : t end end