VX 스크립트

원문 : http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/battle_system&tech=over_drive
인조이재팬 : http://j2k.naver.com/j2k.php/korean/f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/battle_system&tech=over_drive


자유게시판에 올려둔 내용 중 하나 입니다.
횡방향의 전투형태와 더불어 오버드라이브를 적용시키면... 파이널판타지, 정말 오랜만에 해보는데요 ^^
나름 이런 전투도 좋았던거 같은데 말이죠.



+스크립트+


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/    ◆ 오버 드라이브 - KGC_OverDrive ◆ VX ◆
#_/    ◇ Last update : 2008/02/06 ◇
#_/----------------------------------------------------------------------------
#_/  전용의 게이지를 소비해 사용하는 스킬을 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ 커스터마이즈 항목 - Customize ★
#==============================================================================

module KGC
module OverDrive
  # ◆ 드라이브 게이지 최대치
  #  보통은 이대로OK.미조정하고 싶은 경우로 변경.
  GAUGE_MAX = 1000
  # ◆ 드라이브 게이지 증가량
  #  높을 정도 게이지가 모이기 쉽다.
  #  「피데미지」는, 받은 데미지의 최대 HP 에 대한 비율로 증가량을 산출.
  #  (500 (이)라고, 최대 HP 상당한 데미지로 500 모인다)
  GAIN_RATE = [
     80,  # 공격
    500,  # 피데미지
    200,  # 승리
    100,  # 도주
    160,  # 고독
     40,  # 행동
    160,  # 빈사
  ]  # ← 이 ] (은)는 지우지 않는 것!

  # ◆ 액터의 디폴트 드라이브 타입
  #   0..공격  1..피데미지  2..승리  3..도주  4..고독  5..행동  6..빈사
  DEFAULT_ACTOR_DRIVE_TYPE = [0, 1, 6]
  # ◆ 에너미의 디폴트 드라이브 타입
  DEFAULT_ENEMY_DRIVE_TYPE = [0, 1, 4, 5, 6]

  # ◆ 드라이브 게이지의 개시색 (통상시)
  #  수치  : C[n] (와)과 같은 색.
  #  Color : 지정한 색. ( Color.new(255, 128, 128) 등 )
  GAUGE_NORMAL_START_COLOR = 14
  # ◆ 드라이브 게이지의 종료색 (통상시)
  GAUGE_NORMAL_END_COLOR   = 6
  # ◆ 드라이브 게이지의 개시색 (최대시)
  GAUGE_MAX_START_COLOR    = 10
  # ◆ 드라이브 게이지의 종료색 (최대시)
  GAUGE_MAX_END_COLOR      = 2

  # ◆ 사망(HP 0) 때에 드라이브 게이지를 0 (으)로 한다
  EMPTY_ON_DEAD = true

  # ◆ 드라이브 게이지를 표시하지 않는 액터
  #  게이지를 숨기는 액터의ID(을)를 배열에 격납.
  HIDE_GAUGE_ACTOR = []
  # ◆ 비전투시는 드라이브 게이지를 숨긴다
  HIDE_GAUGE_NOT_IN_BATTLE = false
end
end

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

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

module KGC::OverDrive
  # 드라이브 타입
  module Type
    ATTACK  = 0  # 공격
    DAMAGE  = 1  # 피데미지
    VICTORY = 2  # 승리
    ESCAPE  = 3  # 도주
    ALONE   = 4  # 고독
    ACTION  = 5  # 행동
    FATAL   = 6  # 빈사
  end

  # 정규 표현
  module Regexp
    # 스킬
    module Skill
      # 오버 드라이브
      OVER_DRIVE = /<(?:OVER_DRIVE|오버 드라이브)[ ]*(d+)?>/i
      # 게이지 증가율
      OD_GAIN_RATE = /<(?:OD_GAIN_RATE|OD게이지 증가율)[ ]*(d+)[%%]?>/i
    end
  end
end

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

#==============================================================================
# □ KGC::Commands
#==============================================================================

module KGC::Commands
  module_function
  #--------------------------------------------------------------------------
  # ○ 액터의 드라이브 게이지의 증감
  #     actor_id : 액터 ID (-1 : 파티 전체)
  #     value    : 증가량 (마이너스도 가능)
  #--------------------------------------------------------------------------
  def gain_actor_od_gauge(actor_id, value)
    if actor_id == -1
      # 생존 멤버 전원의 게이지를 조작
      $game_party.existing_members.each { |actor|
        actor.overdrive += value
      }
    else
      actor = $game_actors[actor_id]
      actor.overdrive += value if actor != nil && actor.exist?
    end
  end
  #--------------------------------------------------------------------------
  # ○ 에너미의 드라이브 게이지의 증감
  #     enemy_index : 에너미 index (-1 : 전체)
  #     value       : 증가량 (마이너스도 가능)
  #--------------------------------------------------------------------------
  def gain_enemy_od_gauge(enemy_index, value)
    if enemy_index == -1
      # 생존 에너미 전원의 게이지를 조작
      $game_troop.existing_members.each { |enemy|
        enemy.overdrive += value
      }
    else
      enemy = $game_troop.members[enemy_index]
      enemy.overdrive += value if enemy != nil && enemy.exist?
    end
  end
  #--------------------------------------------------------------------------
  # ○ 액터의 드라이브 타입의 변경
  #     actor_id : 액터 ID (-1 : 파티 전체)
  #     types    : 드라이브 타입의 배열 (생략시 : 초기화)
  #--------------------------------------------------------------------------
  def set_actor_drive_type(actor_id, types = nil)
    if actor_id == -1
      # 멤버 전원의 드라이브 타입을 변경
      $game_party.members.each { |actor|
        actor.drive_type = types
      }
    else
      actor = $game_actors[actor_id]
      actor.drive_type = types if actor != nil
    end
  end
  #--------------------------------------------------------------------------
  # ○ 에너미의 드라이브 타입의 변경
  #     enemy_index : 에너미 index (-1 : 전체)
  #     types       : 드라이브 타입의 배열 (생략시 : 초기화)
  #--------------------------------------------------------------------------
  def set_enemy_drive_type(enemy_index, types = nil)
    if enemy_index == -1
      # 에너미 전원의 드라이브 타입을 변경
      $game_troop.members.each { |enemy|
        enemy.drive_type = types
      }
    else
      enemy = $game_troop.members[enemy_index]
      enemy.drive_type = types if enemy != nil
    end
  end
end

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

#==============================================================================
# ■ RPG::Skill
#==============================================================================

class RPG::Skill < RPG::UsableItem
  #--------------------------------------------------------------------------
  # ○ 오버 드라이브의 캐쉬 생성
  #--------------------------------------------------------------------------
  def create_overdrive_cache
    @__is_overdrive = false
    @__od_cost = KGC::OverDrive::GAUGE_MAX
    @__od_gain_rate = 100

    self.note.split(/[rn]+/).each { |line|
      case line
      when KGC::OverDrive::Regexp::Skill::OVER_DRIVE
        # 오버 드라이브
        @__is_overdrive = true
        @__od_cost = $1.to_i if $1 != nil
      when KGC::OverDrive::Regexp::Skill::OD_GAIN_RATE
        # 게이지 증가율
        @__od_gain_rate = $1.to_i
      end
    }

    # OverDrive (이)가 아니면, 게이지 소비량 0
    unless @__is_overdrive
      @__od_cost = 0
    end
  end
  #--------------------------------------------------------------------------
  # ○ OverDrive 스킬일까
  #--------------------------------------------------------------------------
  def overdrive?
    create_overdrive_cache if @__is_overdrive == nil
    return @__is_overdrive
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지 소비량
  #--------------------------------------------------------------------------
  def od_cost
    create_overdrive_cache if @__od_cost == nil
    return @__od_cost
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지 증가율
  #--------------------------------------------------------------------------
  def od_gain_rate
    create_overdrive_cache if @__od_gain_rate == nil
    return @__od_gain_rate
  end
end

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

#==============================================================================
# ■ Game_Temp
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 공개 인스턴스 변수
  #--------------------------------------------------------------------------
  attr_accessor :overdrive_used           # OverDrive 스킬 사용 플래그 (비전투)
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  alias initialize_KGC_OverDrive initialize
  def initialize
    initialize_KGC_OverDrive

    @overdrive_used = false
  end
end

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

#==============================================================================
# ■ Game_Battler
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 공개 인스턴스 변수
  #--------------------------------------------------------------------------
  attr_writer   :drive_type               # 드라이브 타입
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지량 취득
  #--------------------------------------------------------------------------
  def overdrive
    @overdrive = 0 if @overdrive == nil
    return @overdrive
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지 최대량 취득
  #--------------------------------------------------------------------------
  def max_overdrive
    return KGC::OverDrive::GAUGE_MAX
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지의 조작
  #--------------------------------------------------------------------------
  def overdrive=(value)
    @overdrive = [[value, max_overdrive].min, 0].max
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 타입의 취득
  #--------------------------------------------------------------------------
  def drive_type
    return []
  end
  #--------------------------------------------------------------------------
  # ○ 게이지 표시 판정
  #--------------------------------------------------------------------------
  def od_gauge_visible?
    return false
  end
  #--------------------------------------------------------------------------
  # ○ 공격시 증가 판정
  #--------------------------------------------------------------------------
  def drive_attack?
    return drive_type.include?(KGC::OverDrive::Type::ATTACK)
  end
  #--------------------------------------------------------------------------
  # ○ 피데미지시 증가 판정
  #--------------------------------------------------------------------------
  def drive_damage?
    return drive_type.include?(KGC::OverDrive::Type::DAMAGE)
  end
  #--------------------------------------------------------------------------
  # ○ 승리시 증가 판정
  #--------------------------------------------------------------------------
  def drive_victory?
    return drive_type.include?(KGC::OverDrive::Type::VICTORY)
  end
  #--------------------------------------------------------------------------
  # ○ 도주시 증가 판정
  #--------------------------------------------------------------------------
  def drive_escape?
    return drive_type.include?(KGC::OverDrive::Type::ESCAPE)
  end
  #--------------------------------------------------------------------------
  # ○ 고독시 증가 판정
  #--------------------------------------------------------------------------
  def drive_alone?
    return drive_type.include?(KGC::OverDrive::Type::ALONE)
  end
  #--------------------------------------------------------------------------
  # ○ 행동시 증가 판정
  #--------------------------------------------------------------------------
  def drive_action?
    return drive_type.include?(KGC::OverDrive::Type::ACTION)
  end
  #--------------------------------------------------------------------------
  # ○ 빈사시 증가 판정
  #--------------------------------------------------------------------------
  def drive_fatal?
    return drive_type.include?(KGC::OverDrive::Type::FATAL)
  end
  #--------------------------------------------------------------------------
  # ● 스테이트의 부가
  #     state_id : 스테이트 ID
  #--------------------------------------------------------------------------
  alias add_state_KGC_OverDrive add_state
  def add_state(state_id)
    add_state_KGC_OverDrive(state_id)

    reset_overdrive_on_dead if dead?
  end
  #--------------------------------------------------------------------------
  # ○ 스킬의 소비 드라이브 게이지 계산
  #     skill : 스킬
  #--------------------------------------------------------------------------
  def calc_od_cost(skill)
    return 0 unless skill.is_a?(RPG::Skill)

    return skill.od_cost
  end
  #--------------------------------------------------------------------------
  # ● 스킬의 사용 가능 판정
  #     skill : 스킬
  #--------------------------------------------------------------------------
  alias skill_can_use_KGC_OverDrive? skill_can_use?
  def skill_can_use?(skill)
    return false unless skill_can_use_KGC_OverDrive?(skill)

    return false if calc_od_cost(skill) > overdrive
    return true
  end
  #--------------------------------------------------------------------------
  # ● 데미지의 반영
  #     user : 스킬이나 아이템의 사용자
  #    호출전에 @hp_damage,@mp_damage,@absorbed 하지만 설정되어 있는 것.
  #--------------------------------------------------------------------------
  alias execute_damage_KGC_OverDrive execute_damage
  def execute_damage(user)
    execute_damage_KGC_OverDrive(user)

    increase_overdrive(user)
  end
  #--------------------------------------------------------------------------
  # ○ 사망시 드라이브 게이지 초기화 처리
  #--------------------------------------------------------------------------
  def reset_overdrive_on_dead
    return unless KGC::OverDrive::EMPTY_ON_DEAD

    self.overdrive = 0
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지 증가 처리
  #     attacker : 공격자
  #--------------------------------------------------------------------------
  def increase_overdrive(attacker = nil)
    return unless attacker.is_a?(Game_Battler)  # 공격자가 버틀러가 아니다
    return if self.class == attacker.class      # 공격측과 방어측이 같다
    return if hp_damage == 0 && mp_damage == 0  # 데미지 없음

    increase_attacker_overdrive(attacker)
    increase_defender_overdrive(attacker)
    reset_overdrive_on_dead if dead?
  end
  #--------------------------------------------------------------------------
  # ○ 공격측의 드라이브 게이지 증가 처리
  #     attacker : 공격자
  #--------------------------------------------------------------------------
  def increase_attacker_overdrive(attacker)
    return unless attacker.drive_attack?  # 드라이브 타입 「공격」없음

    od_gain = [KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ATTACK], 1].max
    if attacker.action.kind == 1
      rate = attacker.action.skill.od_gain_rate  # 스킬의 배율을 적용
      od_gain = od_gain * rate / 100
    end
    attacker.overdrive += od_gain
  end
  #--------------------------------------------------------------------------
  # ○ 방어측의 드라이브 게이지 증가 처리
  #     attacker : 공격자
  #--------------------------------------------------------------------------
  def increase_defender_overdrive(attacker)
    return unless self.drive_damage?  # 드라이브 타입 「데미지」없음

    rate = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::DAMAGE]
    od_gain = hp_damage * rate / maxhp
    od_gain += mp_damage * rate / maxmp if maxmp > 0
    self.overdrive += [od_gain, 1].max
  end
  #--------------------------------------------------------------------------
  # ● 스킬의 효과 적용
  #     user  : 스킬의 사용자
  #     skill : 스킬
  #--------------------------------------------------------------------------
  alias skill_effect_KGC_OverDrive skill_effect
  def skill_effect(user, skill)
    skill_effect_KGC_OverDrive(user, skill)

    # 아이템으로 스킬을 발동했을 경우는 게이지 소비 판정을 무시
    if $imported["ReproduceFunctions"] && $game_temp.exec_skill_on_item
      return
    end
    # 비전투중에 OverDrive 스킬을 사용했을 경우
    if skill.overdrive? && !$game_temp.in_battle && !$game_temp.overdrive_used
      user.overdrive -= skill.od_cost
      $game_temp.overdrive_used = true  # 게이지 소비가 끝난 플래그를 세운다
    end
  end
end

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

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

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 셋업
  #     actor_id : 액터 ID
  #--------------------------------------------------------------------------
  alias setup_KGC_OverDrive setup
  def setup(actor_id)
    setup_KGC_OverDrive(actor_id)

    @overdrive = 0
    @drive_type = nil
  end
  #--------------------------------------------------------------------------
  # ○ OverDrive 타입의 취득
  #--------------------------------------------------------------------------
  def drive_type
    unless @drive_type.is_a?(Array)
      return KGC::OverDrive::DEFAULT_ACTOR_DRIVE_TYPE
    end
    return @drive_type
  end
  #--------------------------------------------------------------------------
  # ○ 게이지 표시 판정
  #--------------------------------------------------------------------------
  def od_gauge_visible?
    # 전투중비표시로 하는 경우
    if KGC::OverDrive::HIDE_GAUGE_NOT_IN_BATTLE && !$game_temp.in_battle
      return false
    end
    # 표시하지 않는 액터에게 포함되는 경우
    if KGC::OverDrive::HIDE_GAUGE_ACTOR.include?(self.id)
      return false
    end
    return true
  end
end

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

#==============================================================================
# ■ Game_Enemy
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #     index    : 적그룹내 인덱스
  #     enemy_id : 적캐릭터 ID
  #--------------------------------------------------------------------------
  alias initialize_KGC_OverDrive initialize
  def initialize(index, enemy_id)
    initialize_KGC_OverDrive(index, enemy_id)

    @overdrive = 0
    @drive_type = nil
  end
  #--------------------------------------------------------------------------
  # ○ OverDrive 타입의 취득
  #--------------------------------------------------------------------------
  def drive_type
    unless @drive_type.is_a?(Array)
      return KGC::OverDrive::DEFAULT_ENEMY_DRIVE_TYPE
    end
    return @drive_type
  end
end

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

#==============================================================================
# ■ Window_Base
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지의 통상시의 색 1 의 취득
  #--------------------------------------------------------------------------
  def od_gauge_normal_color1
    color = KGC::OverDrive::GAUGE_NORMAL_START_COLOR
    return (color.is_a?(Integer) ? text_color(color) : color)
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지의 통상시의 색 2 의 취득
  #--------------------------------------------------------------------------
  def od_gauge_normal_color2
    color = KGC::OverDrive::GAUGE_NORMAL_END_COLOR
    return (color.is_a?(Integer) ? text_color(color) : color)
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지의 최대시의 색 1 의 취득
  #--------------------------------------------------------------------------
  def od_gauge_max_color1
    color = KGC::OverDrive::GAUGE_MAX_START_COLOR
    return (color.is_a?(Integer) ? text_color(color) : color)
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지의 최대시의 색 2 의 취득
  #--------------------------------------------------------------------------
  def od_gauge_max_color2
    color = KGC::OverDrive::GAUGE_MAX_END_COLOR
    return (color.is_a?(Integer) ? text_color(color) : color)
  end
  #--------------------------------------------------------------------------
  # ● 이름의 묘화
  #     actor : 액터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  alias draw_actor_name_KGC_OverDrive draw_actor_name
  def draw_actor_name(actor, x, y)
    draw_actor_od_gauge(actor, x, y, 108)

    draw_actor_name_KGC_OverDrive(actor, x, y)
  end
  #--------------------------------------------------------------------------
  # ○ 드라이브 게이지의 묘화
  #     actor : 액터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #     width : 폭
  #--------------------------------------------------------------------------
  def draw_actor_od_gauge(actor, x, y, width = 120)
    return unless actor.od_gauge_visible?

    gw = width * actor.overdrive / actor.max_overdrive
    gc1 = (gw == width ? od_gauge_max_color1 : od_gauge_normal_color1)
    gc2 = (gw == width ? od_gauge_max_color2 : od_gauge_normal_color2)
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
end

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

#==============================================================================
# ■ Scene_Skill
#==============================================================================

class Scene_Skill < Scene_Base
  #--------------------------------------------------------------------------
  # ● 타겟의 결정
  #    효과 없음의 경우 (전투 불능에 일부 등) 버저 SE (을)를 연주.
  #--------------------------------------------------------------------------
  alias determine_target_KGC_OverDrive determine_target
  def determine_target
    $game_temp.overdrive_used = false

    determine_target_KGC_OverDrive

    $game_temp.overdrive_used = false  # 게이지 소비가 끝난 플래그를 해제
  end
end

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

#==============================================================================
# ■ Scene_Battle
#==============================================================================

class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● 전투 종료
  #     result : 결과 (0:승리 1:도주 2:패배)
  #--------------------------------------------------------------------------
  alias battle_end_KGC_OverDrive battle_end
  def battle_end(result)
    increase_overdrive_on_battle_end(result)

    battle_end_KGC_OverDrive(result)
  end
  #--------------------------------------------------------------------------
  # ○ 전투 종료시의 드라이브 게이지 증가 처리
  #     result : 결과 (0:승리 1:도주 2:패배)
  #--------------------------------------------------------------------------
  def increase_overdrive_on_battle_end(result)
    case result
    when 0  # 승리
      od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::VICTORY]
      $game_party.existing_members.each { |actor|
        actor.overdrive += od_gain if actor.drive_victory?
      }
    when 1  # 도주
      od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ESCAPE]
      $game_party.existing_members.each { |actor|
        actor.overdrive += od_gain if actor.drive_escape?
      }
    end
  end
  #--------------------------------------------------------------------------
  # ● 전투 행동의 실행
  #--------------------------------------------------------------------------
  alias execute_action_KGC_OverDrive execute_action
  def execute_action
    increase_overdrive_on_action

    execute_action_KGC_OverDrive
  end
  #--------------------------------------------------------------------------
  # ○ 행동시의 드라이브 게이지 증가 처리
  #--------------------------------------------------------------------------
  def increase_overdrive_on_action
    battler = @active_battler
    od_gain = 0
    unit = (battler.actor? ? $game_party : $game_troop)

    # 고독 전투
    if battler.drive_alone? && unit.existing_members.size == 1
      od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ALONE]
    end
    # 행동
    if battler.drive_action?
      od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ACTION]
    end
    # 빈사
    if battler.drive_fatal? && battler.hp < battler.maxhp / 4
      od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::FATAL]
    end
    battler.overdrive += od_gain
  end
  #--------------------------------------------------------------------------
  # ● 전투 행동의 실행 : 스킬
  #--------------------------------------------------------------------------
  alias execute_action_skill_KGC_OverDrive execute_action_skill
  def execute_action_skill
    execute_action_skill_KGC_OverDrive

    consume_od_gauge
  end
  #--------------------------------------------------------------------------
  # ○ 스킬 사용시의 드라이브 게이지 소비
  #--------------------------------------------------------------------------
  def consume_od_gauge
    skill = @active_battler.action.skill
    @active_battler.overdrive -= @active_battler.calc_od_cost(skill)
  end
end


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


이미지는 자유게시판에 올려두었습니다만, 원문에서 스크린샷 버튼을 클릭 하시면 볼 수 있습니다.

설명은 일본어 번역기로도 충분히 이해될 내용이기에, 링크주소만 올려둡니다.


ㅎㅎ;; 확인은 해봐야겠지만..... 전혀 만들어 둔 게임이 없기에!!(.....)


확인 해주세요.ㅎㅎ;

Comment '13'
  • ?
    다이놀핀 2008.03.09 01:34

    좋은 자료 감사합니다.

  • ?
    넌닝구가좋아 2008.03.11 18:01

    시작하자마자 승리라고 나오네여

  • ?
    샤큐라몬 2008.04.05 23:22
    모르겠다는
  • ?
    유리 2008.04.08 21:27
    오버드라이브가 뭔가요?
  • ?
    Firtess 2008.04.21 18:09
    터. 턴알피지라...
  • ?
    이리야땅 2008.07.20 23:24

    게임 배틀러 87번째 줄에서 오류가 나는데 간략한 사용설명서나 예제파일같은거 올려주실수 있으신가요?

  • ?
    시옷청룡 2008.10.01 19:04
    이거 글로리아 티비(?)에서 나오는거 맞나??
  • ?
    루시페르 2009.03.28 19:28
    액알에는 안된다니... 써보고싶었는데...
  • ?
    ABCDEGF 2009.05.03 10:43
    무슨 효과인지 모르겠음;;
  • ?
    정체 모를 인간 2010.05.15 15:23

    이게 뭐 하는 건가요?

  • ?
    유황 2010.08.29 12:50

    아무런 효과가 없는;;

  • ?
    환영유카 2010.11.01 21:15

    그니까는 이건 이 오버드라이브 게이지 만의 스킬을 만드는 겁니다;;

    어떻게 쓰는 건지는 저도 모름

  • ?
    듀란테 2015.07.26 03:03
    아무리 찾아봐도, 오버드라이브 게이지 차는거랑 쓰는얘기만 나오고, 오버드라이브 스킬을 만드는것에 대한 설명은 없내요...

    제가 눈이삐꾼지 잘모르겟는대, 일단 주석엔 안보이고 스크립트에서도 안보임

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 3 습작 2012.12.24 5452
37 전투 사이드뷰 스크립트 [2003 전투 방식] 39 아방스 2008.03.09 8409
36 아이템 KGC]아이템 합성 29 file 찌나 2008.03.08 5127
» 전투 KGC]전투형태 오버드라이브(턴알) 13 찌나 2008.03.08 5657
34 전투 Actor Battler Graphics 13 아방스 2008.03.07 3066
33 그래픽 Multiple Fogs 1.0 4 아방스 2008.03.05 2886
32 메시지 Quick Face Border 12 아방스 2008.03.05 4161
31 상점 스킬 샾 스크립트 2.0 48 아방스 2008.03.05 6630
30 기타 텍스트 파일 읽어 오는 스크립트 11 아방스 2008.03.04 2878
29 액터 캐릭터에 다양한 효과주기 투명도 조절 9 아방스 2008.03.04 2943
28 상태/속성 상태 메뉴 변경 스크립트 45 죄송해욧! 2008.03.01 4288
27 전투 VX 사이드 뷰 전투 (2003 방식) 16 드로드맨 2008.02.24 4996
26 전투 rpgvx 간단액알 스크립트 제작: 41 *PS 2008.02.07 9830
25 타이틀/게임오버 메인 화면을 건너뛰고 시작하는 스크립트 14 아방스 2008.02.01 3064
24 그래픽 밤낮 변환 스크립트 18 kram3 2008.01.31 3762
23 이동 및 탈것 점프를 제한 하는 스크립트 15 아방스 2008.01.31 4605
22 이동 및 탈것 vx 걸을때 소리가 나도도록 하는 스크립트 33 아방스 2008.01.31 3950
21 기타 VX에서 포그 그래픽을 사용하자 16 아방스 2008.01.31 3895
20 메뉴 윈도우창 크기 조절 스크립트 0.3 5 아방스 2008.01.30 3038
19 맵/타일 ◆ 타일 세트 확장 스크립트 [업데이트 수정] 24 file 아방이 2008.01.30 4389
18 변수/스위치 특정 키눌러서 스위치 온 시키는 스크립트 7 아방이 2008.01.30 2612
Board Pagination Prev 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Next
/ 32