상태/속성

어떤 상태일때에만 사용가능한 스킬

by 좀비사냥꾼 posted Mar 25, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

캐릭터가 어떤 특정한 상태일때에만 스킬을 사용할수있게 만들수가 있습니다.
예를 들어서 손오공이 초사이어인 상태일때만 어떤 새로운 스킬을 사용할수 있게 할수 있는거죠.
출처는 KGC에서 새로 나온 스크립트입니다.
우선 아래에 있는 스크립트를 붙여넣으시면 됩니다.
그리고 사용방법을 알려드리겠습니다.
그냥 스크립트를 붙여넣기만 해서는 사용이 되지않습니다.

데이터베이스의 상태창에 보시면 메모란이 있습니다.
이곳 메모에다가 <스킬습득 스킬번호>를 추가하셔야합니다.
예를 들어서 초사이어인상태일때 3번스킬을 사용가능하게 만들고 싶다면
<스킬습득 3> 이라고 메모에 추가해주시면 됩니다.




#이제 이곳 아래부터는 스크립트입니다
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ スキル習得ステート - KGC_StateLearnSkill ◆ VX ◆
#_/    ◇ Last update : 2009/03/21 ◇
#_/----------------------------------------------------------------------------
#_/  付加時に特定のスキルが使用可能になるステートを作成します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

module KGC
module StateLearnSkill
  module Regexp
    module State
      # 習得スキル
      LEARN_SKILL = /<(?:LEARN_SKILL|스킬습득)s*(d+(?:s*,s*d+)*)>/i
    end
  end
end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ RPG::State
#==============================================================================

class RPG::State
  #--------------------------------------------------------------------------
  # ○ スキル習得ステートのキャッシュ生成
  #--------------------------------------------------------------------------
  def create_state_learn_skill_cache
    @__learn_skills = []

    self.note.each_line { |line|
      case line
      when KGC::StateLearnSkill::Regexp::State::LEARN_SKILL  # スキル習得
        $1.scan(/d+/).each { |num|
          skill_id = num.to_i
          # 存在するスキルならリストに加える
          @__learn_skills << skill_id if $data_skills[skill_id] != nil
        }
      end
    }
  end
  #--------------------------------------------------------------------------
  # ○ 習得ステート
  #--------------------------------------------------------------------------
  def learn_skills
    create_state_learn_skill_cache if @__learn_skills == nil
    return @__learn_skills
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● スキルオブジェクトの配列取得
  #--------------------------------------------------------------------------
  alias skills_KGC_StateLearnSkill skills
  def skills
    result = skills_KGC_StateLearnSkill

    return (result | state_learn_skills).sort_by { |v| v.id }
  end
  #--------------------------------------------------------------------------
  # ○ ステートによる追加スキル習得
  #--------------------------------------------------------------------------
  def state_learn_skills
    result = []
    self.states.each { |state|
      state.learn_skills.each { |i|
        skill = $data_skills[i]
        result |= [skill] if skill != nil
      }
    }

    # パッシブスキルに反映
    if $imported["PassiveSkill"] && @__last_state_learn_skills != result
      @__last_state_learn_skills = result
      restore_passive_rev
    end

    return result
  end
end

#---------------------------------------------------------------------------------------------------------------------------------------------------------------------------