장비

아이템 장비시 스킬습득, 'SW_EquipFinisher' by Siot Warrior

by 시옷전사 posted Aug 31, 2010
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

#==============================================================================
# **'SW_EquipFinisher' by Siot Warrior
#------------------------------------------------------------------------------
#  무기 혹은 방어구의 메모란에 <필살기=id>를 적어 주시면 그 장비를 장착한 캐릭터는
#  해당하는 id의 스킬을 습득하게 됩니다. 가급적 캐릭터가 자력으로 습득하는 스킬과
#  장비를 통해 습득하는 스킬을 구분해 주세요.
#    ex: <필살기=1> - 캐릭터는 연속공격을 습득!
#==============================================================================


#==============================================================================
# ■ 정규식
#==============================================================================
module SW
  module Weapons2
    EQUIP_FINISHER = /<필살기=(d+)s*>/
  end
end

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================
module RPG
  class BaseItem
    #--------------------------------------------------------------------------
    # ● 무기의 장착 필살기를 반환
    #--------------------------------------------------------------------------
    def equip_finisher
      return @note =~ SW::Weapons2::EQUIP_FINISHER ? $1.to_i : nil
    end
  end
end

#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor
  alias :sw_change_equip :change_equip
  def change_equip(equip_type, item, test = false)
    if !(equips[equip_type].nil?) and !(test)
      array_finisher = []
      for i in 0..4
        next if i == equip_type
        if !(equips[i].nil?)
          array_finisher.push(equips[i].equip_finisher) if !(equips[i].equip_finisher.nil?)
        end
      end
      if !(array_finisher.include?(equips[equip_type].equip_finisher))
        forget_skill(equips[equip_type].equip_finisher) if !(equips[equip_type].equip_finisher.nil?)
      end
    end
    if !(item.nil?) and !(test)
      learn_skill(item.equip_finisher) if !(item.equip_finisher.nil?)
    end
    sw_change_equip(equip_type, item, test)
  end
end

//

예제도 같이 첨부합니다.

스크립트에 관한 문제점이나 개선점에 대한 내용을 보내주시면 스크립트 질 향상에 도움이 됩니다.