스킬

[KGC] 스킬습득 아이템

by 백호 posted Feb 22, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/frame.html
  이미 아시는 분은 아실 아이템으로 스킬을 습득하게 하는 스크립트입니다.  스킬습득 아이템을 위한 속성을 만들고(스크립트에 지정한 것과 동일해야 함), 아이템의 HP회복량에 습득할 스킬의 ID를 쓰면 됩니다.


#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆スキル習得アイテム - KGC_ItemLearnSkill◆
#_/----------------------------------------------------------------------------
#_/ 使用するとスキルを習得するアイテムを作成します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

$imported = {} if $imported == nil
$imported["ItemLearnSkill"] = true

if $game_special_elements == nil
  $game_special_elements = {}
  $data_system = load_data("Data/System.rxdata")
end
# スキル習得アイテム属性
$game_special_elements["item_learn_skill"] = $data_system.elements.index("スキル習得アイテム")
if $game_special_elements["item_learn_skill"] == nil
  $game_special_elements["item_learn_skill"] = $data_system.elements.index("スキル修得アイテム")
end

#==============================================================================
# ■ Game_Battler (分割定義 3)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● アイテムの効果適用
  #    item : アイテム
  #--------------------------------------------------------------------------
  alias item_effect_KGC_ItemLearnSkill item_effect
  def item_effect(item)
    # スキル修得属性を持っていない、または対象がエネミーの場合
    if !item.element_set.include?($game_special_elements["item_learn_skill"]) ||
        self.is_a?(Game_Enemy)
      # 元の処理を実行
      return item_effect_KGC_ItemLearnSkill(item)
    end

    # 習得済みの場合は戻る
    return false if self.skill_learn?(item.recover_hp)
    # クリティカルフラグをクリア
    self.critical = false
    # アイテムの効果範囲が HP 1 以上の味方で、自分の HP が 0、
    # またはアイテムの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
    if ((item.scope == 3 || item.scope == 4) && self.hp == 0) ||
      ((item.scope == 5 || item.scope == 6) && self.hp >= 1)
      # メソッド終了
      return false
    end
    # 有効フラグをクリア
    effective = false
    # コモンイベント ID が有効の場合は有効フラグをセット
    effective |= item.common_event_id > 0
    # 命中判定
    hit_result = (rand(100) < item.hit)
    # 不確実なスキルの場合は有効フラグをセット
    effective |= item.hit < 100
    # 命中の場合
    if hit_result == true
      self.damage = nil
      # "HP回復量"のスキルを修得
      self.learn_skill(item.recover_hp)
      return true
    end
    return false
  end
end