GGKTH: May 2014

rpg vx ace 데미지 설정 공식 damage formula





if you want english

go to

http://www.rpgmakervxace.net/topic/8986-skill-ideas-you-can-do-with-custom-formula/










여기
안나와있는 공식들을 살펴봅시다!

구글에서 rpg vs ace formula 라고 치면 다 나옵니다!
 쳐서 나온거들 정리해봅니다
익혀두고 싶으시면 한번씩 적용해보아요~




가드데미지 넣을 때 유용한 M A X

[ , 1].max
계산식에 이거 넣으면 최소데미지 1로 설정 가능 !! 오오
max인데 최소 라는 뜻임 우리나라말과 반대인듯

[a.atk , 4].max
이렇게 하면 사용자의 공격력에 따라 데미지가 들어가지만
그 숫자가 4 이상이 나온다
0 1 2 3 의 숫자가 안나오고 4가 뜬다

[a.atk * 4 - b.def * 2, 1].max
사용자 공격력 4배
- 피해자 방어력 2배
단, 최소데미지는 1이다




먼치킨 방지제 M I N

[ ,]min
이건 최대로 ~ 까지 데미지가 나온다! 설정입니다
먼치킨을 방지해주죠

[a.atk , 4].min
이려면 자신의 공격력이 그대로 적용되나 최대 4까지 적용됩니다
내 공격력이 1일 때,   데미지 1
내 공격력이 2일 때,   데미지 2
내 공격력이 3일 때,   데미지 3
내 공격력이 4일 때,   데미지 4
내 공격력이 5일 때,   데미지 4
.
.


[7 + [ a.agi * 0.3 , 3].min - b.def , 1].max
이런식으로 두개 겹칠 수 있습니다.
[]가 소괄호 대괄호 다 포함입니다
이렇게 하면 데미지 공식이
고정데미지 7 + 내 민첩성 (최대 3) - 적 방어력   / 단, 최소데미지는 1이다
이렇게 됩니다~





세심한 난수값!   RAND(숫자)

rand(5)
1 2 3 4 5 중 숫자 하나 랜덤으로 추출한 값입니다
분산도와 비슷해요. 단 지정된 값을 더 세밀히 넣을 수 있어요

rand(1)
1입니다

a.atk + rand(5) - b.def
내 공격력 + 1~5 중 랜덤한 값 - 방어력
이런 식이 됩니다




소수는 깔끔히 버려!    .to_i

(0.1245).to_i
0 .12345 라는 값에 소수점 삭제 버린 값입니다
그래서 0입니다

(1.99).to_i 
1 입니다

 (b.hp * 0.1).to_i
적 체력의 10%를 데미지 줍니다
단 소수점 버림~




반올림    .round

(1.5).round
반올림입니다 1.5가 2로 변해요~

(0.4).round
이건 값이 0이됩니다~





남은체력 백분율     b.hp_rate

b.hp_rate
b의 남은 hp의 비율입니다
최소값은 0   최대값은 1 입니다.
0 ,   0.1 ,  0.2   ,,,,,,   0.8   0.9   1   이렇게요.

공식에 "b.hp_rate"만 넣으면
전투 극초반부 적의 체력이 만땅이니 1의 데미지를 줍니다
그 뒤로부턴 데미지가 안들어갑니다. 소수점이 되서..

b.hp는 지정된 숫자인데 반면
b.hp_rate는 %를 의미합니다

체력이 꽉찬 상대의 hp_rate값은 체력에 상관없이 무조건 1
체력이 반인 상대의 hp_rate값은 0.5
체력이 1/10인 상대의 hp_rate값은 0.1 
b.hp 값도 예를 들어볼까요?
체력 100인 상대의 꽉찬 b.hp값은 100
체력 100인 상대가 다쳐서 체력이 50밖에 없다 그러면 b.hp값은 50입니다.
체력 100인 상대가 체력이 10밖에 없다 그러면 b.hp값은 10입니다.

b.hp_rate   여기서 b가 상대방을 뜻하니
스킬 사용자를 나타내는 a로 바꾸면
a.hp_rate    사용자의 남은 hp % 값이 됩니다. 







긴 공식을 처리할땐      C  = 공식~!#!#$@# 그리고 ; 

c= a.atk ; d = b.def ; c - d
위에 공식은 a.atk - b.def 와 똑같습니다
즉, 내 공격력 - 적 방어력 입니다.
아주 긴 공식을 줄일때 유용합니다.
;는 공식을 따로 배열하고, 진행을 의미함








$game_troop.members.count   &   $game_troop.alive_members.count

$game_troop.members.count
적들의 숫자 입니다

$game_troop.alive_members.count
적들의 살아있는 숫자입니다

$game_troop.alive_members.count.to_f
공식 적용시엔 .to_f를 넣어야 데미지가 들어갑니다

($game_troop.members.count - $game_troop.alive_members.count)
이렇게 적용하면
적들이 모두 살아있을 땐 데미지 0
적들이 하나 죽었다    1
적들이 다죽어서 하나 남았다     그럼 데미지 제일 쎄짐



$game_party.battle_members.count

$game_party.battle_members.count
아군의 전투중인 파티 멤버 수입니다
혼자면 1
2명이면 2 입니다~
$game_party.alive_members.<wbr />count ​
파티 중 살아있는 멤버 수 를 따지면 일케됨



 사용자 스텟에 영향 주기
-=
+=
%=
*=
/=
=와 사칙연산을 붙여서 쓰면 다른 쓰임새가 됨

a.mp -= 100 ; 1
사용자의 마나를 100 소비하고
적에겐 1데미지를 준다.

a.hp -= (a.hp*0.1).round ; a.hp*0.3 - b.def
라고 쓰면

a는 남은 체력의 10%를 소모(만약 소수점나올시엔 반올림 )하고,
a의 남은체력의 30% 에 b의 방어력을 뺀 값만큼 데미지를 준다.

이건 근데 사용자 최대 체력 늘리기나 능력치 올리기는 좀 안먹히는듯 함.



적이 특정 상태이상일때 더 데미지 주기

b.state?(50) ? 1 : 0
적이 상태이상 50에 걸렸을시 데미지 1
아닐 경우 0

b.state?(50) ? r = a.atk * 12 : r = a.atk * 4 ; r - b.def * 2
적이 상태이상 50 에 걸렸을 시
r : 사용자 공격력의 12배
그리고 데미지 공식 적용은 r - b.def * 2
적이 상태이상 50에 걸리지 않았을시
r : 사용자 공격력의 4배
그리고 데미지 공식 적용은 r - b.def * 2



상태이상 해제하면서 if 놓기

if b.erase_state(32) ; a.mp -= 3 ; end ; 50

만약 적이 상태이상 32 라면 데미지 50 주고, 적의 상태이상 32가 해제되고 사용자의 마나는 3 닳음
만약 적이 상태이상 32 가 아니라면 데미지 만 50 줌



속성 유효도 관련
.element_rate(n)
n이 100% 일땐 1
300%일 땐 3
50%.일땐 0.5 로 됨.

a.mat + a.element_rate(3)
(사용자의 마법공격력 + 사용자의 3번속성(화염) 유효도 ) <- 이게데미지가 됨


상태 유효도 효과 관련
.state_rate(n)
이것도 n이 100% 일땐 1
300%일 땐 3
50%.일땐 0.5 로 됨.

b.element_rate(5)
타겟의 5번 상태이상(독) 상태 유효도가 높을 수록 (표현하자면, 저항력이 낮을수록)
데미지가 높게 들어감.



간이 디버프 / 버프 적용 가능?

.add_debuff(param, turn)
.add_buff(param, turn)

타겟.add_buff(버프될 능력 값, 턴수)
타겟이 사용자면   a
버프될 능력값 param(n)이 최대 체력이라면     0
턴수가 10 이라면
a.add_buff(0, 10)

rand(100) <= 50 ? a.add_buff(3, 2):0;1
50% 확률로 (100개의 값 중 난수가 50 이상일 때,
사용자에게
3번 (방어력)
2턴동안 버프 적용
:0 (100개의 값 중 난수가 50 이상이 아닐 경우 0, 즉, 효과 발동 안됨.)
그리고 데미지는 1을 준다.

param(n) 수는 아래와 같다
def mhp; param(0); end    # MHP Maximum Hit Points    최대 체럭
def mmp; param(1); end    # MMP Maximum Magic Points   최대 마나
def atk; param(2); end    # ATK ATtacK power       공격력
def def; param(3); end    # DEF DEFense power   방어력
def mat; param(4); end    # MAT Magic ATtack power   마법 공격력
def mdf; param(5); end    # MDF Magic DeFense power   마법 방어력
def agi; param(6); end    # AGI AGIlity     민첩
def luk; param(7); end    # LUK LUcK     행운
def hit; xparam(0); end    # HIT HIT rate    적중률
def eva; xparam(1); end    # EVA EVAsion rate     회피율
def cri; xparam(2); end    # CRI CRItical rate    크리티컬 확률
def cev; xparam(3); end    # CEV Critical EVasion rate    크리티컬 회피율
def mev; xparam(4); end    # MEV Magic EVasion rate     마법 회피율
def mrf; xparam(5); end    # MRF Magic ReFlection rate    마법 반사율
def cnt; xparam(6); end    # CNT CouNTer attack rate        물리 반사율
def hrg; xparam(7); end    # HRG Hp ReGeneration rate     체력 재생율
def mrg; xparam(8); end    # MRG Mp ReGeneration rate    마나 재생율
def trg; xparam(9); end    # TRG Tp ReGeneration rate    TP 재생율
def tgr; sparam(0); end    # TGR TarGet Rate             타겟 비율 ?
def grd; sparam(1); end    # GRD GuaRD effect rate        방어 효과율
def rec; sparam(2); end    # REC RECovery effect rate       재생 효과율
def pha; sparam(3); end    # PHA PHArmacology             약 효과율
def mcr; sparam(4); end    # MCR Mp Cost Rate              MP  소비율
def tcr; sparam(5); end    # TCR Tp Charge Rate                   TP 충전율
def pdr; sparam(6); end    # PDR Physical Damage Rate          물리 데미지 비율
def mdr; sparam(7); end    # MDR Magical Damage Rate            마법 데미지 비율
def fdr; sparam(8); end    # FDR Floor Damage Rate               바닥 데미지 비율
def exr; sparam(9); end    # EXR EXperience Rate                   경험치 비율




행동을 즉시 중단 시키기
b.remove_current_action

if rand(100) <= 35 ; b.remove_current_action ; end ; 50
35%로 적의 행동을 중지시킨다. 데미지는 50을 준다.


나타나기 사라지기 (숙련자용 ㄷㄷ )

a.hide
b.appear

# 모든적이 hide 되면 승리됨 ㄷㄷ
# 아군이 hide 되면...ㄷㄷ 타겟이 안되서 appear하려면 골치 아파짐


Can we get the base value of a stat? 이건 잘 모르겟음

.param_base(param_id)
.param_plus(param_id)
.param_min(param_id)
능력치 값 조절?



상대에게 강제로 스킬 사용하게 만들기
a.force_action(n, x)
a는 사용자 b는 적군
n은 사용할 스킬 id
x는 타겟팅 넘버
-2 는 마지막 타겟한 타겟
-1 는 랜덤 타겟

b.force_action(1, -1);0
타겟이
1 (기본공격)을
랜덤한 타겟에게 쓰게 만듬.
이 스킬의 데미지는 0임.

주의 할점
만약 사용자가 사용자가에 쓸경우
스킬을 반복한다. a.id != b.id. 를 응용 해야한다.
타겟이 이미 행동을 한 경우라면 안먹힌다.
스킬의 속도보정을 넣거나 해야한다.



if 절 재료들

특수문자 "?" 와" :"    이거 두가지로 나타내는 법이 있습니다.  

 ? 만족하면 나오는 결과 : 만족못할경우 나오는 결과 ; 그 외 처리값      <-이런 순으로 씁니다.

예제
b.state?(50) ? 1 : 0
b(타겟)가 50번째 상태이상에 걸렸을때, 데미지를 1줌
아닐땐, 데미지 0​
b.state?(50) ? r = a.atk * 2 : r = a.atk * 1 ; r
b(타겟)가 50번째 상태이상에 걸렸을때, 사용자의 힘의 2을 곱한수가 데미지
아닐땐, 사용자의 힘의 1를 곱한수가 데미지
"적이 독에 걸렸을때, 더 쎈 공격이 됨"​ 이런거 구현할때 씀

if ; ; end ; 로 나타내기
if ; 만족하면 나오는 결과 ; end ; 만족하든 말든 추가로 적용되는 값
if rand(100) <= 35 ; b.remove_current_action ; end ; 50


이 if 조건에 쓸 수 있는 재료는 아래와 같음

#--------------------------------------------------------------------------
# * Determine if States Are Addable  상태이상 추가 가능한 상태냐
#--------------------------------------------------------------------------
state_addable?

#--------------------------------------------------------------------------
# * Determine Buff Status    특정 버프 중이냐
#--------------------------------------------------------------------------
 buff?(param_id)

#--------------------------------------------------------------------------
# * Determine Debuff Status  특정 디버프 중이냐
#--------------------------------------------------------------------------
debuff?(param_id)

#--------------------------------------------------------------------------
# * Determine if Buff Is at Maximum Level    
#--------------------------------------------------------------------------
buff_max?(param_id)

#--------------------------------------------------------------------------
# * Determine if Debuff Is at Maximum Level    디버프가 최대 레벨? 뭐지?
#--------------------------------------------------------------------------
debuff_max?(param_id)

#--------------------------------------------------------------------------
# * Determine if Skill/Item Has Any Valid Effects     아이템이 효과 있냐
#--------------------------------------------------------------------------
 item_has_any_valid_effects?(user, item)

#--------------------------------------------------------------------------
# * Determine Usability of Normal Attack    평타 공격 사용 가능 하냐?
#--------------------------------------------------------------------------
attack_usable?

#--------------------------------------------------------------------------
# * Determine Usability of Guard          방어를 사용 가능 하냐?
#--------------------------------------------------------------------------
guard_usable?

#--------------------------------------------------------------------------
# * Determine if Enemy         적군 이냐?
#--------------------------------------------------------------------------
enemy?

#--------------------------------------------------------------------------
# * Determine if Actor or Not         액터, 아군이냐?
#--------------------------------------------------------------------------
actor?

#--------------------------------------------------------------------------
# * Determine if Action is Possible          움직일 수 있냐?
#--------------------------------------------------------------------------
 exist? && restriction < 4

#--------------------------------------------------------------------------
# * Determine if Character is Confused            혼란에 걸렸냐?
#--------------------------------------------------------------------------
confusion?
 exist? && restriction >= 1 && restriction <= 3

#--------------------------------------------------------------------------
# * Determine if Guard                      방어 중이냐?
#--------------------------------------------------------------------------
guard?
 special_flag(FLAG_ID_GUARD) && movable?

#--------------------------------------------------------------------------
# * Determine if Substitute                         대신 하고 있냐?
#--------------------------------------------------------------------------
substitute?
 special_flag(FLAG_ID_SUBSTITUTE) && movable?

#--------------------------------------------------------------------------
# * Determine if Preserve TP                        TP를 받고 있냐
#--------------------------------------------------------------------------
 preserve_tp?

#--------------------------------------------------------------------------
# * Determine if State Is Resisted                           특정 상태 저항이냐?
#--------------------------------------------------------------------------
state_resist?(state_id)

#--------------------------------------------------------------------------
# * Check K.O. State                             죽었냐?
#--------------------------------------------------------------------------
death_state?

#--------------------------------------------------------------------------
# * Check State                       상태냐?
#--------------------------------------------------------------------------
state?(state_id)
 @states.include?(state_id)


운지천F Coriolus versicolor Fountain F (First)










운지천F
 Coriolus versicolor Fountain F (First)


매력적인 옛 광고임 ㅋ
Charming old style ad  lol


뚜른뚜른 뚜르르르
♩~

자연속에 내가 있다
in nature am i

운 지
Coriolus versicolor



# 雲 뜻 : 구름 운
      mean :   cloud

芝 뜻 : 영지 지 (靈芝: 불로초과의 버섯)
      mean :   "Coriolus versicolor " mushroom


드르르르르룬~
♪~

자연에서 찾는다
search in Nature


운    지
Coriolus versicolor


(점프)
(jump)


마시자 운지버섯 드링크
let's drink, Coriolus versicolor mushroom beverage


운 지 천!
Coriolus versicolor Fountain !


(마심)
(he drink)


이제 운지천입니다
now, Coriolus versicolor Fountain.

운지버섯 드링크
운지천!
Coriolus versicolor mushroom beverage
Coriolus versicolor Fountain


나는 자연인이다!!!!!
I am nature-man !!!




get more