#============================================================================== # ○スキル一列表示 Ver1.02 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # スキルウィンドウの表示がデフォルトのニ列から一列になります。 # 右側のスペースにはコストのほかにスキルの属性などが表示されます。 # スキルの数が少なくてスペースがあまりがちな場合や # ヘルプウィンドウにスキルの解説を書ききれないときなどにおすすめします。 #============================================================================== # ■更新履歴 # Ver1.02 # ・消費MPがゼロだった場合に代わりの文字を表示できるようになりました。 # Ver1.01 # ・微妙に無駄な処理をしていたのでカット。 #============================================================================== # 備考以外の項目はデータベースから取得して表記されますが # <対象:○○><属性:○○><備考:○○>と # スキルのメモ欄に書くことで独自の設定が可能です。 =begin ●メモ欄の設定例 <対象:敵ランダム> <属性:炎、風> <備考:大威力> =end # 欄を空白にしたい場合は<○○: >とスペースを入れてください。 module SNF SKILL_NOCOST = "" # 消費MPがゼロだった場合、かわりに表示する文字です。 SKILL_NOTE = true # 備考欄を使用するか?(true/false) SKILL_SCOPE_DETAILD = {0 => "", 1 => "敵単体", 2 => "敵全体", 3 => "敵単体", 4 => "敵単体", 5 => "敵複数", 6 => "敵複数", 7 => "味方単体", 8 => "味方全体", 9 => "味方単体", 10 => "味方全体", 11 => "使用者"} # スキルの対象に対応する表示です。 # ここを編集することで実際の対象とは違った表記をすることもできます。 # 0 :なし # 1 :敵単体 # 2 :敵全体 # 3 :敵単体連続 # 4 :敵単体ランダム # 5 :敵二体ランダム # 6 :敵三体ランダム # 7 :味方単体 # 8 :味方全体 # 9 :味方単体(戦闘不能) # 10:味方全体(戦闘不能) # 11:使用者 SKILL_NONELEMENT = "" # 無属性だった場合に表記する文字です。 SKILL_ELEMENTPOINT = "," # 属性が二つ以上ある場合に属性の間に表示する文字です。 SKILL_SCOPE_WORD = "対象" SKILL_ELEMENTS_WORD = "属性" SKILL_NOTE_WORD = "備考" # メモ欄の項目名です。 end class Window_Base < Window def draw_item_name2(item, x, y, enabled = true) if item != nil #y += 20 if SNF::SKILL_HEAD draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, 256, WLH, item.name) end end end class Window_Skill < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # x : ウィンドウの X 座標 # y : ウィンドウの Y 座標 # width : ウィンドウの幅 # height : ウィンドウの高さ # actor : アクター #-------------------------------------------------------------------------- def initialize(x, y, width, height, actor) super(x, y, width, height) @actor = actor @column_max = 1 self.index = 0 refresh end #-------------------------------------------------------------------------- # ● 項目の描画 # index : 項目番号 #-------------------------------------------------------------------------- def draw_item(index) skill = @data[index] if skill != nil rect = item_rect(index) self.contents.clear_rect(rect) skill = @data[index] enabled = @actor.skill_can_use?(skill) draw_item_name2(skill, rect.x, rect.y, enabled) # 対象 scope = skill_memo_scan(skill, 0) # メモ欄にない場合は対象範囲を取得 scope = SNF::SKILL_SCOPE_DETAILD[skill.scope] if scope.size ==0 # 属性 element = skill_memo_scan(skill, 1) # メモ欄にない場合は属性名を取得 if element.size ==0 rect.width -= 4 skill_element = skill.element_set element = "" for i in 0...skill_element.size if element == "" element = $data_system.elements[skill_element[i]] else element += SNF::SKILL_ELEMENTPOINT element += $data_system.elements[skill_element[i]] end end element = SNF::SKILL_NONELEMENT if element == "" # 無属性だった場合 end # 備考 note = skill_memo_scan(skill, 2) skill_x = 0 skill_x += 64 unless SNF::SKILL_NOTE skill_y = 0 + 24 * index if @actor.calc_mp_cost(skill) == 0 cost = SNF::SKILL_NOCOST else cost = @actor.calc_mp_cost(skill) end self.contents.draw_text(skill_x + 216, skill_y, 40, 24, cost, 2) self.contents.draw_text(skill_x + 256, skill_y, 96, 24, scope, 2) self.contents.draw_text(skill_x + 368, skill_y, 64, 24, element, 2) self.contents.draw_text(skill_x + 448, skill_y, 64, 24, note, 2) if SNF::SKILL_NOTE end end def skill_memo_scan(skill, type) case type when 0 memo = skill.note.scan(/<#{SNF::SKILL_SCOPE_WORD}:(\S+)>/) when 1 memo = skill.note.scan(/<#{SNF::SKILL_ELEMENTS_WORD}:(\S+)>/) when 2 memo = skill.note.scan(/<#{SNF::SKILL_NOTE_WORD}:(\S+)>/) else end return memo end end class Scene_Skill < Scene_Base def show_target_window(right) @skill_window.active = false width_remain = 544 - @target_window.width @target_window.x = width_remain @target_window.visible = true @target_window.active = true @viewport.rect.set(0, 0, width_remain, 416) @viewport.ox = 0 end end