http://artificialprovidence.web.fc2.com/rgss3/r3enhance/RGSS3CERTAINTY_HIT.txt 


이거 번역한거임



#==============================================================================
# ■ RGSS3 절대명중/절대회피특징&아이템/스킬 Ver1.00 by 호시가타
#------------------------------------------------------------------------------
# 명중타입별 혹은 모든 아이템에 대하여
# 절대명중/절대회피화시키는 특징을 작성할 수 있게 됩니다.
# 또, 절대 명중하는 아이템/스킬의 작성도 가능하게 됩니다.
# 명중/회피 관련 모든 스크립트보다 아래쪽에 배치되는 것이 좋습니다.
#==============================================================================
# ★ 설정 예 (액터, 에너지, 스테이트, 장비품의 메모란에 설정)
#------------------------------------------------------------------------------
# <전절대명중>
#
# 이 캐릭터에 의한 모든 스킬/아이템이 절대 명중됩니다.
#------------------------------------------------------------------------------
# <필중절대명중>
#
# 이 캐릭터에 의한 명중 유형: 필중의 스킬/아이템이 절대 명중합니다.
#------------------------------------------------------------------------------
# <물리 절대 명중>
#
# 이 캐릭터에 의한 명중 유형: 물리 스킬/아이템이 절대 명중합니다.
#------------------------------------------------------------------------------
# <마법 절대 명중>
#
# 이 캐릭터에 의한 명중 유형 : 마법의 스킬 / 아이템이 절대 명중합니다.
#------------------------------------------------------------------------------
# <전절대회피>
#
# 이 캐릭터가 받는 모든 스킬/아이템을 절대 회피합니다.
#------------------------------------------------------------------------------
# <필중절대회피>
#
# 해당 캐릭터가 받는 명중 유형: 필중의 스킬/아이템을 절대 회피합니다.
#------------------------------------------------------------------------------
# <물리 절대 회피>
#
# 이 캐릭터가 받는 명중 유형: 물리 스킬/아이템을 절대 회피합니다.
#------------------------------------------------------------------------------
# <마법 절대 회피>
#
# 이 캐릭터가 받는 명중 유형 : 마법의 스킬 / 아이템을 절대 회피합니다.
#==============================================================================
# ★ 설정 예 (아이템 및 스킬 메모란에 설정)
#------------------------------------------------------------------------------
# <절대명중>
#
# 이 스킬/아이템은 무조건 명중합니다.
#==============================================================================
module CertaintyHit

#절대명중과 절대회피가 동시에 계산되는 경우
#절대명중과 절대회피중 어느쪽을 우선할지를 결정합니다.
#0 의 경우는 명중을 우선합니다.
#1 의 경우는 회피를 우선으로 합니다.
#2의 경우는 절대 명중도 절대 회피도 없었던 것으로 하고 본래의 처리를 실시합니다.

Type = 0

#특징용 절대명중화용 키워드를 지정합니다.

Words1 = ["필중절대명중", "물리절대명중", "마법절대명중", "전절대명중"]

#특징용 절대회피화용 키워드를 지정합니다.

Words2 = ["필중절대회피", "물리절대회피", "마법절대회피", "전절대회피"]

# 스킬 / 아이템용의 절대 명중화용 키워드를 지정합니다.

Word = "절대 명중"

#절대명중시/절대회피처리용 명중률 및 회피율을 설정합니다.
#절대명중의 경우는 명중에 전자, 회피에 후자,
#절대 회피의 경우는, 명중에 후자, 회피에 전자를 사용합니다.

Value = [ 9 . 99 , - 9 . 99 ]

#--------------------------------------------------------------------------
# 키워드 배열
#--------------------------------------------------------------------------
def self . words ( type )
type ? Words 1 : Words 2
end
end
class Game _ Battler < Game _ BattlerBase
#--------------------------------------------------------------------------
# 스킬/아이템의 명중률 계산
#--------------------------------------------------------------------------
alias item _ hit _ certainty item _ hit
def item _ hit ( user , item )

#설정별로 처리.

case CertaintyHit :: Type

#절대명중을 우선하는 경우.

when 0

#절대명중일 경우는 절대명중용의 값을 반환한다.

return CertaintyHit :: Value [ 0 ] if certainty _ hit _ execute ( user , item )

#절대회피의 경우는 절대회피용의 값을 반환한다.

return CertaintyHit :: Value [ 1 ] if certainty _ eva _ execute ( user , item )

#절대회피를 우선시하는 경우.

when 1

#절대회피의 경우는 절대회피용의 값을 반환한다.

return CertaintyHit :: Value [ 1 ] if certainty _ eva _ execute ( user , item )

#절대명중일 경우는 절대명중용의 값을 반환한다.

return CertaintyHit :: Value [ 0 ] if certainty _ hit _ execute ( user , item )

#절대명중과 절대회피가 서로 깨지는 경우.

when 2

#절대명중, 절대회피가 아닌 경우는 절대명중용의 값을 반환한다.

return CertaintyHit :: Value [ 0 ] if certainty _ hit _ execute ( user , item ) && ! certainty _ eva _ execute ( user , item )

#절대회피,절대명중이 아닌 경우는 절대회피용 값을 반환한다.

return CertaintyHit :: Value [ 1 ] if certainty _ eva _ execute ( user , item ) && ! certainty _ hit _ execute ( user , item )

end

#본래 처리 실행.

item _ hit _ certainty ( user , item )

end
#--------------------------------------------------------------------------
# 스킬/아이템 회피율 계산
#--------------------------------------------------------------------------
alias item _ eva _ certainty item _ eva
def item _ eva ( user , item )

#설정별로 처리.

case CertaintyHit :: Type

#절대명중을 우선하는 경우.

when 0

#절대명중일 경우는 절대명중용의 값을 반환한다.

return CertaintyHit :: Value [ 1 ] if certainty _ hit _ execute ( user , item )

#절대회피의 경우는 절대회피용의 값을 반환한다.

return CertaintyHit :: Value [ 0 ] if certainty _ eva _ execute ( user , item )

#절대회피를 우선시하는 경우.

when 1

#절대회피의 경우는 절대회피용의 값을 반환한다.

return CertaintyHit :: Value [ 0 ] if certainty _ eva _ execute ( user , item )

#절대명중일 경우는 절대명중용의 값을 반환한다.

return CertaintyHit :: Value [ 1 ] if certainty _ hit _ execute ( user , item )

#절대명중과 절대회피가 서로 깨지는 경우.

when 2

#절대명중, 절대회피가 아닌 경우는 절대명중용의 값을 반환한다.

return CertaintyHit :: Value [ 1 ] if certainty _ hit _ execute ( user , item ) && ! certainty _ eva _ execute ( user , item )

#절대회피,절대명중이 아닌 경우는 절대회피용 값을 반환한다. 


eturn CertaintyHit :: Value [ 0 ] if certainty _ eva _ execute ( user , item ) && ! certainty _ hit _ execute ( user , item )

end

#본래 처리 실행.

item _ eva _ certainty ( user , item )

end
#--------------------------------------------------------------------------
# 절대명중
#--------------------------------------------------------------------------
def certainty _ hit _ execute ( user , item )

#절대명중 스킬/아이템의 경우 true를 반환한다.

return true if item . certainty _ hit _ item

#전 절대명중일 경우 true를 반환한다.

return true if user . certainty _ hit ( 3 ) or user . certainty _ hit ( item . hit _ type )

#false를 반환한다.

false

end
#--------------------------------------------------------------------------
# 절대 회피
#--------------------------------------------------------------------------
def certainty _ eva _ execute ( user , item )

#아군으로의 스킬의 경우는 절대 회피하지 않는다.
#스킬이 아군 대상, 적 대상이 아닌
#사용자가 액터이며 대상이 액터인가
#사용자가 에너지이고 대상이 에너지인 경우는 false로 한다.
#(무의미한 처리로 보일지 모르지만, 주로 경쟁대책의 처리입니다.)

return false if item . for _ friend ? && ! item . for _ opponent ? && user . actor ? == self . actor ?

# 절대 회피 시 true를 반환한다.

return true if certainty _ eva ( 3 ) or certainty _ eva ( item . hit _ type )

#false를 반환한다.

false

end
#--------------------------------------------------------------------------
# 절대 명중 데이터 획득
#--------------------------------------------------------------------------
def certainty _ hit ( type )
feature _ objects . any ? { | f | f . certainty _ hit _ array [ type ] }
end
#--------------------------------------------------------------------------
# 절대 회피 데이터 가져오기
#--------------------------------------------------------------------------
def certainty _ eva ( type )
feature _ objects . any ? { | f | f . certainty _ eva _ array [ type ] }
end
end
class RPG :: BaseItem
#--------------------------------------------------------------------------
# 절대명중배열 획득
#--------------------------------------------------------------------------
def certainty _ hit _ array
@ certainty _ hit _ array || = create _ certainty _ hit _ eva _ array ( true )
end
#--------------------------------------------------------------------------
# 절대 회피 배열 가져오기
#--------------------------------------------------------------------------
def certainty _ eva _ array
@ certainty _ eva _ array || = create _ certainty _ hit _ eva _ array ( false )
end
#--------------------------------------------------------------------------
# 절대명중/회피배열 생성
#--------------------------------------------------------------------------
def create _ certainty _ hit _ eva _ array ( type )
CertaintyHit . words ( type ) . inject ( [ ] ) { | r , t | r . push ( / < # { t } > / = ~ note ) }
end
end
class RPG :: UsableItem < RPG :: BaseItem
#--------------------------------------------------------------------------
# 절대명중 아이템
#--------------------------------------------------------------------------
def certainty _ hit _ item
( @ certainty _ hit _ item || = / < # { CertaintyHit :: Word } > / = ~ note ? 1 : 0 ) == 1
end
end