전투

능력 강화/약화의 누적식 개조(버그수정)

by 아이미르 posted Feb 08, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

기존 VX에서는 스테이트를 통해서만 능력치의 강화, 약화를 할수 있었지만

ACE에서는 스테이트를 거치지 않고 스킬, 아이템에서 직접적으로

능력치를 강화/약화 할수 있게 변경되었습니다.

(최대체력, 최대마력, 공격력, 방어력, 마법력, 마법방어, 민첩성, 운 ) 

 

단, 여기에는 조건이 있는데

강화 중복은 2회까지 한번에 25%만 강화된다... 입니다. ACE 디폴트 설정입니다.

거기다 이 강화는 선형입니다. 비례식이라고 해야될까...

 

예를 들면

최대체력이 100이라고 합시다. 강화를 1번하면 125가 되고 두번 하면 150이 됩니다.

뭐, 이런 뜻입니다.

 

즉, 1번하면 초기값의 1.25배, 2번하면 초기값의 1.50배이지

2번째 강화할때 1번 강화한 1.25배에서 다시 1.25배 한 1.56배가 되지 않는 다는 뜻입니다.

 

본 스크립트는 이를 개조해본 것입니다.

 

-------------------------------------------------------------------------------------------------------------------

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 통상능력치의 최대치 습득
  #--------------------------------------------------------------------------
  def param_max(param_id)
    return 999999 if param_id == 0  # MHP
    return 99999  if param_id == 1  # MMP
    return 9999
  end
  #--------------------------------------------------------------------------
  # ● 통상능력치의 강화/약화 비율 설정 

  #--------------------------------------------------------------------------
  def param_buff_rate(param_id)
    x = 1
    if @buffs[param_id] > 0
      for t in 1..@buffs[param_id]
        x *= 1.30
      end
    else
      n = - @buffs[param_id]
      for t in 1..n
        x *= 0.70
      end
    end
   
    return x
  end  #--------------------------------------------------------------------------
  # ● 강화/약화 아이콘 위치 설정
  #--------------------------------------------------------------------------
  def buff_icon_index(buff_level, param_id)
    if buff_level > 0
      return ICON_BUFF_START + param_id if buff_level <= 5
      return ICON_BUFF_START + 8 + param_id
    elsif buff_level < 0
      return ICON_DEBUFF_START + param_id if buff_level >= - 5
      return ICON_DEBUFF_START + 8 + param_id
    else
      return 0
    end
  end
end

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 능력 강화 중복의 최대치 설정
  #--------------------------------------------------------------------------
  def buff_max?(param_id)
    @buffs[param_id] == 10
  end
  #--------------------------------------------------------------------------
  # ● 능력 약화 중복의 최대치 설정
  #--------------------------------------------------------------------------
  def debuff_max?(param_id)
    @buffs[param_id] == -10
  end
end

--------------------------------------------------------------------------------------------

 

일단 최상단부분은 능력치의 한계 설정입니다.

ACE 디폴트는 체력은 999999, 마력은 9999, 스텟은 999가 최대치입니다.

본 스크립트 디폴트는 체력은 같은데 마력이 99999, 스텟은 9999가 설정되었습니다.

단, 이는 후천적인 최대치이므로 데이터베이스 란을 조작할 시에는 999가 최대치입니다

(스텟의 경우)

 

def param_buff_rate(param_id) 부분을 보면 아래에 x *= 1.30 부분이 있습니다.

이는 강화시 1.25배가 디폴트 였던 것을 수정한 것입니다. 즉 1.30배 라는 거죠.

위의 최대체력=100의 예제를 생각해보면 1번 강화시 디폴트는 125였다면

이 스크립트를 쓰면 130이 되는 겁니다.

또한 선형식을 누적식으로 개조하였습니다.

즉 1번강화하면 130, 2번강화하면 1번강화한 데서 1.30배 해서 169가 된다는 거죠.

 

3번째 아이콘 관련은 수정한 이유가 ACE는 강화를 중복해서 하면 아이콘이 바뀝니다.

아이콘 목록을 보시면 아시겠지만 화살표 하나짜리와 두개짜리 이렇게 나뉘어져있습니다.

한번 강화하면 화살표 하나고 두번강화하면 화살표 두개가 되는 식입니다.

그런데 하단 부분을 보면 아시겠지만 강화 한계를 2에서 스크립트 디폴트 10으로 상향조정

하면서 아이콘이 마구 변하는 사태에 이르렀습니다.

고로 5단 강화까지는 화살표 한개, 6단 강화부터는 화살표 두개를 표시하도록 한겁니다.

 

마지막 단락은 강화 한계 조정입니다. def buff_max?(param_id)아래에서 숫자가 강화 한계이고

def debuff_max?(param_id)아래에서 음수가 약화 한계입니다. 보시는 바와 같이 디버프, 즉

약화 한계는 음수로 지정해야됩니다. 10단 약화까지 가능하면 -10인거죠.

 

유용하게 사용하셨으면 좋겠네요.

P.S ACE디폴트 처럼 1.25배로 누적식 10단 강화하니까 스텟이 9.3배 정도 되는 거 같더군요.

밸런스 조절 잘하세요 (웃음)

P.S2 모티브는 웹게임의 광전사였나? 자살로 아군 스텟 강화하고 시체부활 써먹는 데서

가져왔습니다. 그래서 강화 한계 수정이 처음 생각이었는데 누적식이 아니라 선형식이라서

아예 누적식 수정을 해버렸네요.

 

---------------------------------------------------------------------------------------------------------------

 

약화쪽이 발동하지 않는 버그가 있었네요... 테스트를 강화로만 했더니 (덜덜)

 

지금은 해결됐습니다. 단지... 이렇게 하니까 약화가 무지막지 중요해졌네요 (웃음)

 

스텟을 999로 놓고 한 다섯번 연속 약화를 시켰더니 167정도까지 떨어지는 걸 확인했습니다.

 

사용에 주의해주세요

 

Who's 아이미르

?

허루쿠... 임용고시 공부해야되는데 이러고 있다....

 

알만툴의 중독성은 쩔어준다는;;;