#============================================================================== # ■ RGSS3 アイテム/スキル使用ディレイ Ver2.02 by 星潟 #------------------------------------------------------------------------------ # 戦闘中、アイテム/スキル使用時に個人/共通ディレイを設定します。 # ディレイは1ターン毎に1減少します。(ATB等の素材導入時、正常に動作しない可能性大) # 個人ディレイはその使用したキャラクターのみが影響を受け # 共通ディレイはパーティ全体が影響を受けます。 # (途中でメンバー入れ替えが生じても影響を受けます) # 共通ディレイ発生時、他キャラクターの使用予定のアイテム/スキルに # そのディレイタグが設定してある場合、それらは不発します。 # 戦闘終了と同時に全てのディレイは解除されます。 #============================================================================== # アイテム/スキルのメモ欄に記述。 #------------------------------------------------------------------------------ # <個人ディレイ:あいうえお,1> # # このアイテム/スキルを使用した時 # ディレイタグにあいうえおが設定されているアイテム/スキルの # 個人ディレイとして1が加算されます。 # ディレイタグが別であれば、1つのアイテム/スキルに行を分けて複数設定出来ます。 # ※ディレイ1の場合、そのターン内のみ効果があるので # 次のターンも使用させないという場合はディレイ2以上にしてください。 #------------------------------------------------------------------------------ # <共通ディレイ:あいうえお,1> # # このアイテム/スキルを使用した時 # ディレイタグにあいうえおが設定されているアイテム/スキルの # 共通ディレイとして1が加算されます。 # ディレイタグが別であれば、1つのアイテム/スキルに行を分けて複数設定出来ます。 #------------------------------------------------------------------------------ # <ディレイタグ:あいうえお,かきくけこ,さしすせそ> # # このアイテム/スキルのディレイタグとして # あいうえお、かきくけこ、さしすせその3つが指定されます。 #------------------------------------------------------------------------------ # <個人ディレイ追加:あいうえお,1> # # このアイテム/スキルを使用した時 # 既にディレイタグ「あいうえお」の個人ディレイが発生している場合 # そのディレイに1が加算されます。 # 発生していない場合は効果がありません。 # ディレイタグが別であれば、1つのアイテム/スキルに行を分けて複数設定出来ます。 #------------------------------------------------------------------------------ # <共通ディレイ追加:あいうえお,1> # # このアイテム/スキルを使用した時 # 既にディレイタグ「あいうえお」の共通ディレイが発生している場合 # そのディレイに1が加算されます。 # 発生していない場合は効果がありません。 # ディレイタグが別であれば、1つのアイテム/スキルに行を分けて複数設定出来ます。 #------------------------------------------------------------------------------ # <個人ディレイ追加:全ディレイ,1> # # このアイテム/スキルを使用した時 # 既に何らかのディレイタグの個人ディレイが発生している場合 # そのディレイに1が加算されます。(例外は設定できます) # ディレイが発生していない場合は効果がありません。 # ディレイタグが別であれば、1つのアイテム/スキルに行を分けて複数設定出来ます。 #------------------------------------------------------------------------------ # <共通ディレイ追加:全ディレイ,1> # # このアイテム/スキルを使用した時 # 既に何らかのディレイタグの共通ディレイが発生している場合 # そのディレイに1が加算されます。(例外は設定できます) # ディレイが発生していない場合は効果がありません。 # ディレイタグが別であれば、1つのアイテム/スキルに行を分けて複数設定出来ます。 #------------------------------------------------------------------------------ # <個人ディレイ追加制限> # # このアイテム/スキルを使用した時 # 1度の使用で同じ対象に2回以上命中した場合でも # 同一タグに対する個人ディレイ追加は一度しか行われません。 #------------------------------------------------------------------------------ # <共通ディレイ追加制限> # # このアイテム/スキルを使用した時 # 1度の使用で2回以上命中した場合でも # 同一タグに対する共通ディレイ追加は一度しか行われません。 #============================================================================== # スキルのメモ欄に記述。 #------------------------------------------------------------------------------ # <スタートディレイ:2> # # このスキルは戦闘開始後2ターン使用できません。 # ただし、敵が変身した場合、変身後のスキルには適用されません。 #============================================================================== # 特徴を有する項目のメモ欄に記述。 #------------------------------------------------------------------------------ # <個人ディレイ補正:あいうえお,-1> # # 自らのアイテム・スキル使用による個人ディレイ(個人ディレイ追加ではない)で # ディレイタグ「あいうえお」のディレイが付与された際、付与量を-1する。 #------------------------------------------------------------------------------ # <共通ディレイ補正:あいうえお,-2> # # 自らのアイテム・スキル使用による共通ディレイ(共通ディレイ追加ではない)で # ディレイタグ「あいうえお」のディレイが付与された際、付与量を-2する。 #============================================================================== # イベントコマンドのスクリプトで記述 #------------------------------------------------------------------------------ # personal_delay_add(1,"あいうえお",2) # # 最初の数字が1以上の場合は該当するIDのアクターを対象とする。 # 最初の数字が0以下の場合はその絶対数の敵グループ内indexのエネミーを対象とする。 # (0なら敵グループの先頭が対象となる) # # この場合はアクターID1のアクターが対象となる。 # # 該当者にディレイタグ「あいうえお」の個人ディレイを2与える。 # ただし、該当者が既にディレイタグ「あいうえお」の個人ディレイを # 付与されている場合に限る。 #------------------------------------------------------------------------------ # common_delay_add(1,"あいうえお",2) # # 最初の数字が1以上の場合は該当するIDのアクターを対象とする。 # 最初の数字が0以下の場合はその絶対数の敵グループ内indexのエネミーを対象とする。 # # この場合はアクターID1のアクターが対象となるが # 個人ディレイと異なり、共通ディレイは個人管理ではないため # 1でパーティ側、0で敵グループ側への効果になると考えればよい。 # # 該当者にディレイタグ「あいうえお」の共通ディレイを2与える。 # ただし、該当者が既にディレイタグ「あいうえお」の共通ディレイを # 付与されている場合に限る。 #============================================================================== module CommonDelay #スタートディレイの設定用キーワードを指定。 Word1 = "スタートディレイ" #個人ディレイの設定用キーワードを指定。 Word2 = "個人ディレイ" #共通ディレイの設定用キーワードを指定。 Word3 = "共通ディレイ" #ディレイタグの設定用キーワードを指定。 Word4 = "ディレイタグ" #個人ディレイ追加の設定用キーワードを指定。 Word5 = "個人ディレイ追加" #共通ディレイ追加の設定用キーワードを指定。 Word6 = "共通ディレイ追加" #ディレイ追加時、既にディレイの存在する全てのタグを対象とする場合や #ディレイ補正時、発生するディレイ全てを対象とする場合に用いるタグを指定 Word7 = "全ディレイ" #個人ディレイ追加制限の設定用キーワードを指定。 Word8 = "個人ディレイ追加制限" #共通ディレイ追加制限の設定用キーワードを指定。 Word9 = "共通ディレイ追加制限" #個人ディレイ補正の設定用キーワードを指定。 Word10 = "個人ディレイ補正" #共通ディレイ補正の設定用キーワードを指定。 Word11 = "共通ディレイ補正" #個人ディレイ追加効果において #0だった場合を除いて、全てが増加するものであった場合の #バトルログ表示フォーマットを指定(%sの部分には対象の名前が入る) Format1 = "%sのディレイが増加した!" #個人ディレイ追加効果において #0だった場合を除いて、全てが減少するものであった場合の #バトルログ表示フォーマットを指定(%sの部分には対象の名前が入る) Format2 = "%sのディレイが減少した!" #個人ディレイ追加効果において #増加するものと減少するものの両方が含まれていた場合の #バトルログ表示フォーマットを指定(%sの部分には対象の名前が入る) Format3 = "%sのディレイが変動した!" #共通ディレイ追加効果において #0だった場合を除いて、全てが増加するものであった場合の #バトルログ表示フォーマットを指定(%sの部分には対象の名前が入る) Format4 = "%sの全体ディレイが増加した!" #共通ディレイ追加効果において #0だった場合を除いて、全てが減少するものであった場合の #バトルログ表示フォーマットを指定(%sの部分には対象の名前が入る) Format5 = "%sの全体ディレイが減少した!" #共通ディレイ追加効果において #増加するものと減少するものの両方が含まれていた場合の #バトルログ表示フォーマットを指定(%sの部分には対象の名前が入る) Format6 = "%sの全体ディレイが変動した!" #ディレイ追加時、対象がアクターかエネミーかで表示を制限する設定を行う。 #0の場合は制限なし #1の場合はアクターのみ表示 #2の場合はエネミーのみ表示 #3の場合はアクターもエネミーも表示しない LogType = 0 #Word7の「全て」の対象にならない例外的なタグを指定します。 #例. #ExceptionTags = ["あいうえお","かきくけこ"] #この場合、「あいうえお」と「かきくけこ」のタグは #Word7の「全て」の対象となりません。 ExceptionTags = [] #ディレイ描写色を指定。 Color = 10 #ディレイ描写フォントサイズを指定。 FontSize = 18 end class Game_Unit #-------------------------------------------------------------------------- # スタートディレイの設定 #-------------------------------------------------------------------------- def set_start_delay a = self.is_a?(Game_Party) ? all_members : members a.each {|m| m.set_start_delay} end #-------------------------------------------------------------------------- # 戦闘開始処理 #-------------------------------------------------------------------------- alias on_battle_start_pc_delay on_battle_start def on_battle_start on_battle_start_pc_delay clear_pc_delay if self.is_a?(Game_Party) set_start_delay end #-------------------------------------------------------------------------- # 戦闘終了処理 #-------------------------------------------------------------------------- alias on_battle_end_pc_delay on_battle_end def on_battle_end on_battle_end_pc_delay clear_pc_delay if self.is_a?(Game_Party) end end class Game_Party < Game_Unit attr_accessor :pc_delay_usable attr_accessor :personal_delay_add_restrict attr_accessor :common_delay_add_restrict #-------------------------------------------------------------------------- # スタートディレイ #-------------------------------------------------------------------------- def start_delay @start_delay ||= {} end #-------------------------------------------------------------------------- # スタートディレイの変更 #-------------------------------------------------------------------------- def start_delay=(neo_start_delay) start_delay @start_delay = neo_start_delay end #-------------------------------------------------------------------------- # 個人ディレイ #-------------------------------------------------------------------------- def personal_delay @personal_delay ||= {} end #-------------------------------------------------------------------------- # 個人ディレイの変更 #-------------------------------------------------------------------------- def personal_delay=(neo_personal_delay) personal_delay @personal_delay = neo_personal_delay end #-------------------------------------------------------------------------- # 共通ディレイ #-------------------------------------------------------------------------- def common_delay @common_delay ||= {:party => {},:troop => {}} end #-------------------------------------------------------------------------- # 共通ディレイの変更 #-------------------------------------------------------------------------- def common_delay=(neo_common_delay) common_delay @common_delay = neo_common_delay end #-------------------------------------------------------------------------- # ディレイ追加 #-------------------------------------------------------------------------- def add_delay(user,item) return if !@in_battle type = user.actor? ? :party : :troop personal_delay[user] ||= {} item.personal_delay.each {|k,v| personal_delay[user][k] ||= 0 personal_delay[user][k] += eval(v) + user.personal_delay_correction(k)} item.common_delay.each {|k,v| common_delay[type][k] ||= 0 common_delay[type][k] += eval(v) + user.common_delay_correction(k)} end #-------------------------------------------------------------------------- # ディレイ減少 #-------------------------------------------------------------------------- def decrease_delay a = [] start_delay.each {|k1,v1| v1.each {|k2,v2| @start_delay[k1][k2] -= 1 a.push([k1,k2]) if @start_delay[k1][k2] <= 0 }} a = [] personal_delay.each {|k1,v1| v1.each {|k2,v2| @personal_delay[k1][k2] -= 1 a.push([k1,k2]) if @personal_delay[k1][k2] <= 0 }} a.each {|aa| @personal_delay[aa[0]].delete(aa[1])} @personal_delay.keys.each {|k| @personal_delay.delete(k) if @personal_delay[k].empty?} common_delay.each {|k1,v| a = [] v.each_key {|k2| common_delay[k1][k2] -= 1 a.push(k2) if common_delay[k1][k2] <= 0} a.each {|i| @common_delay[k1].delete(i)}} end #-------------------------------------------------------------------------- # ディレイの消去 #-------------------------------------------------------------------------- def clear_pc_delay @start_delay = {} @personal_delay = {} @common_delay = {:party => {},:troop => {}} clear_pc_delay_add_restrict end #-------------------------------------------------------------------------- # スキル/アイテムの使用可能判定 #-------------------------------------------------------------------------- alias usable_pc_delay? usable? def usable?(item) @pc_delay_usable = true r = usable_pc_delay?(item) @pc_delay_usable = nil r end #-------------------------------------------------------------------------- # ディレイの制限 #-------------------------------------------------------------------------- def clear_pc_delay_add_restrict @personal_delay_add_restrict = {} @common_delay_add_restrict = {:party => [],:troop => []} end end class Game_Interpreter #-------------------------------------------------------------------------- # 個人ディレイ追加 #-------------------------------------------------------------------------- def personal_delay_add(actor_id,key,value) target = ( if actor_id > 0 $game_actors[actor_id] else $game_troop.members[actor_id.abs] end) return unless target h = {} h[key] = value.to_s target.personal_delay_add(nil,h) end #-------------------------------------------------------------------------- # 共通ディレイ追加 #-------------------------------------------------------------------------- def common_delay_add(actor_id,key,value) target = ( if actor_id > 0 $game_actors[actor_id] else $game_troop.members[actor_id.abs] end) return unless target h = {} h[key] = value.to_s target.common_delay_add(nil,h) end end class Game_BattlerBase #-------------------------------------------------------------------------- # スキル/アイテムの使用可能判定 #-------------------------------------------------------------------------- alias usable_pc_delay? usable? def usable?(item) usable_pc_delay?(item) && !delay?(item) end #-------------------------------------------------------------------------- # ディレイ中か? #-------------------------------------------------------------------------- def delay?(item) return false if $game_party.pc_delay_usable d1 = item.is_a?(RPG::Skill) ? $game_party.start_delay[self] : nil d1 = {} if !d1 i = item.id return true if (d1[i] && d1[i] > 0) d2 = $game_party.personal_delay[self] d2 = {} if !d2 d3 = $game_party.common_delay[self.actor? ? :party : :troop] item.pc_delay_tag.any? {|t| (d2[t] && d2[t] > 0) or (d3[t] && d3[t] > 0)} end #-------------------------------------------------------------------------- # ディレイカウントを取得 #-------------------------------------------------------------------------- def delay_count_max(item) r = [] d1 = item.is_a?(RPG::Skill) ? $game_party.start_delay[self] : nil d1 = {} if !d1 d2 = $game_party.personal_delay[self] d2 = {} if !d2 d3 = $game_party.common_delay[self.actor? ? :party : :troop] i = item.id r.push(d1[i]) if d1[i] && d1[i] > 0 item.pc_delay_tag.each {|t| r.push(d2[t]) if d2[t] && d2[t] > 0 r.push(d3[t]) if d3[t] && d3[t] > 0} r.empty? ? 0 : r.max end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # スキル/アイテムの使用 #-------------------------------------------------------------------------- alias use_item_pc_delay use_item def use_item(item) use_item_pc_delay(item) $game_party.add_delay(self, item) end #-------------------------------------------------------------------------- # スキル/アイテムの使用者側への効果 #-------------------------------------------------------------------------- alias item_user_effect_pc_delay item_user_effect def item_user_effect(user, item) item_user_effect_pc_delay(user, item) return unless $game_party.in_battle personal_delay_add(user, item) if !$game_party.personal_delay_add_restrict.include?(self) common_delay_add(user, item) if !$game_party.common_delay_add_restrict.include?(self) end #-------------------------------------------------------------------------- # 個人既存ディレイ追加効果 #-------------------------------------------------------------------------- def personal_delay_add(user, item) return unless $game_party.personal_delay[self] if item.is_a?(RPG::UsableItem) h = item.personal_delay_add rf = item.personal_delay_add_restrict else h = item rf = nil end return if h.empty? a = user b = self v = $game_variables r = [] h.each {|k,v| if k == CommonDelay::Word7 $game_party.personal_delay[self].keys.each {|k1| next if CommonDelay::ExceptionTags.include?(k1) next if $game_party.personal_delay_add_restrict[self] && $game_party.personal_delay_add_restrict[self].include?(k1) n = eval(v) if n != 0 $game_party.personal_delay[self][k1] += n @result.personal_delay_changes.push(n) end if user && rf $game_party.personal_delay_add_restrict[self] ||= [] $game_party.personal_delay_add_restrict[self].push(k1) end r.push(k1)} else next if $game_party.personal_delay_add_restrict[self] && $game_party.personal_delay_add_restrict[self].include?(k) if $game_party.personal_delay[self][k] n = eval(v) if n != 0 $game_party.personal_delay[self][k] += n @result.personal_delay_changes.push(n) end if user && rf $game_party.personal_delay_add_restrict[self] ||= [] $game_party.personal_delay_add_restrict[self].push(k) end r.push(k) end end} r.each {|k| if $game_party.personal_delay[self][k] && $game_party.personal_delay[self][k] <= 0 $game_party.personal_delay[self].delete(k) end} $game_party.personal_delay.delete(self) if $game_party.personal_delay[self].empty? end #-------------------------------------------------------------------------- # 共通既存ディレイ追加効果 #-------------------------------------------------------------------------- def common_delay_add(user, item) type = self.actor? ? :party : :troop if item.is_a?(RPG::UsableItem) h = item.common_delay_add rf = item.common_delay_add_restrict else h = item rf = nil end return if h.empty? a = user b = self v = $game_variables r = [] h.each {|k,v| if k == CommonDelay::Word7 $game_party.common_delay[type].keys.each {|k1| next if CommonDelay::ExceptionTags.include?(k1) next if $game_party.common_delay_add_restrict[type].include?(k1) n = eval(v) if n != 0 $game_party.common_delay[type][k1] += n @result.common_delay_changes.push(n) end if user && rf $game_party.common_delay_add_restrict[type].push(k1) end r.push(k1)} else next if $game_party.common_delay_add_restrict[type].include?(k) if $game_party.common_delay[type][k] n = eval(v) if n != 0 $game_party.common_delay[type][k] += n @result.common_delay_changes.push(n) end if user && rf $game_party.common_delay_add_restrict[type].push(k) end r.push(k) end end} r.each {|k| if $game_party.common_delay[type][k] && $game_party.common_delay[type][k] <= 0 $game_party.common_delay[type].delete(k) end} end #-------------------------------------------------------------------------- # 個人ディレイ補正効果 #-------------------------------------------------------------------------- def personal_delay_correction(key) exception_flag = CommonDelay::ExceptionTags.include?(key) feature_objects.inject(0) {|r,f| n1 = f.personal_delay_correction[key] n2 = exception_flag ? nil : f.personal_delay_correction[CommonDelay::Word7] r += (n1 ? eval(n1) : 0) + (n2 ? eval(n2) : 0)} end #-------------------------------------------------------------------------- # 共通ディレイ補正効果 #-------------------------------------------------------------------------- def common_delay_correction(key) exception_flag = CommonDelay::ExceptionTags.include?(key) feature_objects.inject(0) {|r,f| n1 = f.common_delay_correction[key] n2 = exception_flag ? nil : f.common_delay_correction[CommonDelay::Word7] r += (n1 ? eval(n1) : 0) + (n2 ? eval(n2) : 0)} end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # スタートディレイの設定 #-------------------------------------------------------------------------- def set_start_delay skills.each {|s| v = s.start_delay next if v.empty? $game_party.start_delay[self] ||= {} $game_party.start_delay[self][s.id] ||= eval(v)} end end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # スタートディレイの設定 #-------------------------------------------------------------------------- def set_start_delay enemy.actions.each {|action| s = $data_skills[action.skill_id] next unless s v = s.start_delay next if v.empty? $game_party.start_delay[self] ||= {} $game_party.start_delay[self][s.id] ||= eval(v)} end end class Game_ActionResult attr_accessor :personal_delay_changes attr_accessor :common_delay_changes #-------------------------------------------------------------------------- # ステータス効果のクリア #-------------------------------------------------------------------------- alias clear_status_effects_pc_delay clear_status_effects def clear_status_effects clear_status_effects_pc_delay @personal_delay_changes = [] @common_delay_changes = [] end #-------------------------------------------------------------------------- # 何らかのステータス(能力値かステート)が影響を受けたかの判定 #-------------------------------------------------------------------------- alias status_affected_pc_delay? status_affected? def status_affected? status_affected_pc_delay? or !@personal_delay_changes.empty? or !@common_delay_changes.empty? end end class Window_Base < Window #-------------------------------------------------------------------------- # ディレイデータを描写 #-------------------------------------------------------------------------- def draw_delay_data(actor,item,rect) fc = contents.font.clone change_color(text_color(CommonDelay::Color)) fs = CommonDelay::FontSize contents.font.size = fs draw_text(rect.x,rect.y + line_height - fs,24,fs,actor.delay_count_max(item),2) contents.font = fc end end class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # 項目の描画 #-------------------------------------------------------------------------- alias draw_item_pc_delay draw_item def draw_item(index) skill = @data[index] draw_item_pc_delay(index) if @actor && skill && @actor.delay?(skill) draw_delay_data(@actor,skill,item_rect(index)) end end end class Window_ItemList < Window_Selectable #-------------------------------------------------------------------------- # アイテムを許可状態で表示するかどうか #-------------------------------------------------------------------------- alias enable_pc_delay? enable? def enable?(item) if $game_party.in_battle c = $game_party.pc_delay_usable ? true : nil $game_party.pc_delay_usable = nil r = enable_pc_delay?(item) $game_party.pc_delay_usable = c return false unless r !(item && BattleManager.actor && BattleManager.actor.delay?(item)) else enable_pc_delay?(item) end end #-------------------------------------------------------------------------- # 項目の描画 #-------------------------------------------------------------------------- alias draw_item_pc_delay draw_item def draw_item(index) item = @data[index] draw_item_pc_delay(index) if $game_party.in_battle && item && BattleManager.actor && BattleManager.actor.delay?(item) draw_delay_data(BattleManager.actor,item,item_rect(index)) end end end class Window_BattleLog < Window_Selectable #-------------------------------------------------------------------------- # 能力強化/弱体の表示 #-------------------------------------------------------------------------- alias display_changed_buffs_pc_delay display_changed_buffs def display_changed_buffs(target) display_changed_buffs_pc_delay(target) display_changed_delay(target,true) display_changed_delay(target,false) end #-------------------------------------------------------------------------- # ステート付加/解除の表示 #-------------------------------------------------------------------------- def display_changed_delay(target,personal) return if ( case CommonDelay::LogType when 1;target.enemy? when 2;target.actor? when 3;true else ;false end) a = (personal ? target.result.personal_delay_changes : target.result.common_delay_changes).uniq return if a.empty? format = ( if a.all? {|i| i > 0} personal ? CommonDelay::Format1 : CommonDelay::Format4 elsif a.all? {|i| i > 0} personal ? CommonDelay::Format2 : CommonDelay::Format5 else personal ? CommonDelay::Format3 : CommonDelay::Format6 end) replace_text(sprintf(format,target.name)) wait end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ターン終了 #-------------------------------------------------------------------------- alias turn_end_pc_delay turn_end def turn_end $game_party.decrease_delay turn_end_pc_delay end #-------------------------------------------------------------------------- # スキル/アイテムの使用 #-------------------------------------------------------------------------- alias use_item_pc_delay use_item def use_item use_item_pc_delay $game_party.clear_pc_delay_add_restrict end end class RPG::UsableItem < RPG::BaseItem #-------------------------------------------------------------------------- # スタートディレイ #-------------------------------------------------------------------------- def start_delay @start_delay ||= /<#{CommonDelay::Word1}[::](\S+)>/ =~ note ? $1.to_s : "" end #-------------------------------------------------------------------------- # 個人ディレイ #-------------------------------------------------------------------------- def personal_delay pc_delay[0] end #-------------------------------------------------------------------------- # 共通ディレイ #-------------------------------------------------------------------------- def common_delay pc_delay[1] end #-------------------------------------------------------------------------- # ディレイデータ #-------------------------------------------------------------------------- def pc_delay @pc_delay ||= create_pc_delay end #-------------------------------------------------------------------------- # ディレイデータ作成 #-------------------------------------------------------------------------- def create_pc_delay a = [{},{}] [CommonDelay::Word2,CommonDelay::Word3].each_with_index {|w,i| note.each_line {|l| a[i][$1.to_s] = $2.to_s if /<#{w}[::](\S+),(\S+)>/ =~ l}} a end #-------------------------------------------------------------------------- # ディレイタグ #-------------------------------------------------------------------------- def pc_delay_tag @pc_delay_tag ||= (/<#{CommonDelay::Word4}[::](\S+)>/ =~ note ? $1.to_s : "" ).split(/\s*,\s*/).inject([]) {|r,t| r.push(t)} end #-------------------------------------------------------------------------- # ディレイ追加 #-------------------------------------------------------------------------- def pc_delay_add @pc_delay_add ||= create_pc_delay_add end #-------------------------------------------------------------------------- # 個人ディレイ追加 #-------------------------------------------------------------------------- def personal_delay_add pc_delay_add[0] end #-------------------------------------------------------------------------- # 共通ディレイ追加 #-------------------------------------------------------------------------- def common_delay_add pc_delay_add[1] end #-------------------------------------------------------------------------- # ディレイ追加データ作成 #-------------------------------------------------------------------------- def create_pc_delay_add a = [{},{}] [CommonDelay::Word5,CommonDelay::Word6].each_with_index {|w,i| note.each_line {|l| a[i][$1.to_s] = $2.to_s if /<#{w}[::](\S+),(\S+)>/ =~ l}} a end #-------------------------------------------------------------------------- # ディレイ追加制限 #-------------------------------------------------------------------------- def pc_delay_add_restrict @pc_delay_add_restrict ||= create_pc_delay_add_restrict end #-------------------------------------------------------------------------- # 個人ディレイ追加制限 #-------------------------------------------------------------------------- def personal_delay_add_restrict pc_delay_add_restrict[0] end #-------------------------------------------------------------------------- # 共通ディレイ追加制限 #-------------------------------------------------------------------------- def common_delay_add_restrict pc_delay_add_restrict[1] end #-------------------------------------------------------------------------- # ディレイ追加制限データ作成 #-------------------------------------------------------------------------- def create_pc_delay_add_restrict a = [false,false] [CommonDelay::Word8,CommonDelay::Word9].each_with_index {|w,i| note.each_line {|l| a[i] = true if /<#{w}>/ =~ l}} a end end class RPG::BaseItem #-------------------------------------------------------------------------- # ディレイ補正データ #-------------------------------------------------------------------------- def pc_delay_correction @pc_delay_correction ||= create_pc_delay_correction end #-------------------------------------------------------------------------- # 個人ディレイ補正 #-------------------------------------------------------------------------- def personal_delay_correction pc_delay_correction[0] end #-------------------------------------------------------------------------- # 共通ディレイ補正 #-------------------------------------------------------------------------- def common_delay_correction pc_delay_correction[1] end #-------------------------------------------------------------------------- # ディレイ補正データ作成 #-------------------------------------------------------------------------- def create_pc_delay_correction a = [{},{}] [CommonDelay::Word10,CommonDelay::Word11].each_with_index {|w,i| note.each_line {|l| a[i][$1.to_s] = $2.to_s if /<#{w}[::](\S+),(\S+)>/ =~ l}} a end end