상태/속성

순간 적으로 무적상태되는 스크립트

by 백호 posted Feb 21, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆무적 상태 - KGC_Invincible◆
#_/----------------------------------------------------------------------------
#_/ 무적 상태가 되는 스테이트를 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

$imported["Invincible"] = true

# 무적 상태 스테이트ID취득
for state in $data_states.compact
  if state.name == "무적"
    $game_state_invincible = state.id
    break
  end
end

#==============================================================================
# ■ Game_Battler (분할 정의 2)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 스테이트 [무적] 판정
  #    act : 처리 대상
  #--------------------------------------------------------------------------
  def invincible?(act = nil)
    # 스테이트[무적]이 부가되고 있는 경우
    if self.states.include?($game_state_invincible)
      # 처리 대상으로 분기
      case act
      when RPG::Skill
        return true if act.scope == 1 || act.scope == 2
      when RPG::Item
        return true if act.scope == 1 || act.scope == 2
      when nil
        return true
      end
    end
    return false
  end
end

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

#==============================================================================
# ■ Game_Battler (분할 정의 3)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 통상 공격의 효과 적용
  #--------------------------------------------------------------------------
  alias attack_effect_KGC_Invincible attack_effect
  def attack_effect(attacker)
    # 무적 상태의 경우
    if self.invincible?
      # 데미지에 "Miss" 를 설정
      self.damage = "Miss"
      # 위기 플래그를 클리어
      self.critical = false
      # 가짜를 돌려주는
      return false
    end

    # 원의 처리를 실행
    return attack_effect_KGC_Invincible(attacker)
  end
  #--------------------------------------------------------------------------
  # ● 스킬의 효과 적용
  #--------------------------------------------------------------------------
  alias skill_effect_KGC_Invincible skill_effect
  def skill_effect(user, skill)
    # 무적 상태의 경우
    if self.invincible?(skill)
      # 데미지에 "Miss" 를 설정
      self.damage = "Miss"
      # 위기 플래그를 클리어
      self.critical = false
      # 가짜를 돌려주는
      return false
    end

    # 원의 처리를 실행
    return skill_effect_KGC_Invincible(user, skill)
  end
  #--------------------------------------------------------------------------
  # ● 아이템의 효과 적용
  #--------------------------------------------------------------------------
  alias item_effect_KGC_Invincible item_effect
  def item_effect(item)
    # 무적 상태의 경우
    if self.invincible?(item)
      # 데미지에 "Miss" 를 설정
      self.damage = "Miss"
      # 위기 플래그를 클리어
      self.critical = false
      # 가짜를 돌려주는
      return false
    end

    # 원의 처리를 실행
    return item_effect_KGC_Invincible(item)
  end
end