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 5398
81 전투 방어를 했을경우 hp / mp 회복 되도록 하는 스크립트 15 아방스 2008.01.22 3746
80 전투 전투배경을 자신이 원하는 형태로 45 file 아방스 2008.01.23 7137
79 전투 전투 배경을 이미지로 설정하는 스크립트 20 file 아방스 2008.01.23 4889
78 전투 맨손 공격시 2번공격하는 스크립트 5 아방스 2008.01.24 2357
77 전투 전투시 메시지 표시 시간 조절 7 file 아방스 2008.01.24 2827
76 전투 Target 몬스터 플래시 스크립트 16 아방스 2008.01.24 4512
75 전투 VX에서 전투배경을 XP스타일로 나오게 하는 스크립트 7 아방스 2008.01.25 4839
74 전투 rpgvx 간단액알 스크립트 제작: 41 *PS 2008.02.07 9821
73 전투 VX 사이드 뷰 전투 (2003 방식) 16 드로드맨 2008.02.24 4996
72 전투 Actor Battler Graphics 13 아방스 2008.03.07 3065
» 전투 KGC]전투형태 오버드라이브(턴알) 13 찌나 2008.03.08 5656
70 전투 사이드뷰 스크립트 [2003 전투 방식] 39 아방스 2008.03.09 8406
69 전투 VX]Mog Battleback XP 1.0 11 file WMN 2008.04.06 3868
68 전투 2003식 사이드뷰 적들도 가까이와서 공격함 ㅇㅇ 51 배군 2008.05.02 6750
67 전투 [vx] ATB 시스템. 10 만들어보자꾸나 2008.07.05 4925
66 전투 돌아가는 전투 메뉴 시스템 33 아방스 2008.08.29 5083
65 전투 지형에 따른 전투배경화면 표시 스크립트!! 30 file 레오 2008.09.17 5855
64 전투 GTBS_VX 1.0 택틱컬rpg 14 file RPGbooster 2008.10.08 3352
63 전투 Crissaegrim ABS 2.0.5 최신 48 file RPGbooster 2008.10.08 8768
62 전투 PRABS 2.0 액션배틀시스템 58 file RPGbooster 2008.10.08 7572
Board Pagination Prev 1 2 3 4 5 Next
/ 5