잘은 모르지만 (채택 않해주셔도됩니다) 완력수치가 공격력에 적용되는건 대충 수치만 바꾸면될거같아요
#--------------------------------------------------------------------------
# ● 통상 공격의 효과 적용
# attacker : 공격자 (버틀러)
#--------------------------------------------------------------------------
def attack_effect(attacker)
# 위기 플래그를 클리어
self.critical = false
# 제일 명중 판정
hit_result = (rand(100) < attacker.hit)
# 명중의 경우
if hit_result == true
# 기본 데미지를 계산
atk = [attacker.atk - self.pdef / 2, 0]. max
self.damage = atk * (20 + attacker.str) / 20
# 속성 수정
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# 데미지의 부호가 정의 경우
if self.damage > 0
# 위기 수정
if rand(100) < 4 * attacker.dex / self.agi
self.damage *= 2
self.critical = true
end
# 방어 수정
if self.guarding?
self.damage /= 2
end
end
# 분산
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1]. max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 제2 명중 판정
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
end
# 명중의 경우
if hit_result == true
# 스테이트 충격 해제
remove_states_shock
# HP 로부터 데미지를 감산
self.hp -= self.damage
# 스테이트 변화
@state_changed = false
states_plus(attacker.plus_state_set)
states_minus(attacker.minus_state_set)
# 미스의 경우
else
# 데미지에 "Miss" 를 설정
self.damage = "Miss"
# 위기 플래그를 클리어
self.critical = false
end
# 메소드 종료
return true
end
여기서
# 기본 데미지를 계산
atk = [attacker.atk - self.pdef / 2, 0]. max
self.damage = atk * (20 + attacker.str) / 20
이 항목을 바꾸시면되는데요
바보인 제가 대충 해석해보면
atk = [attacker.atk - self.pdef / 2, 0]. max 는
공격 = [공격자의공격력 -(빼기) 방어자의 방어력 수치(?) 나누기 2
그러니까 아마 (아닐수도) 공격자의 공격력에서 방어자의 방어력/2 를 뺀다는뜻이 되는데요
self.damage = atk * (20 + attacker.str) / 20 는
줄 데미지(저 위에서 보시면 아시다시피 상대 hp 에서 이걸 빼는거 같더군요)= 공격력(위 식에서 계산이 완료 된 값, 그러니까 공격력-방어력) X[곱하기(20 + 공격자의 완력)]/20
쉽게 말하자면, 위에서 계산한 atk 수치를 (20 + 공격자의 완력) 만큼 곱한다음 20을 나누는 겁니다.
그렇다면 초기데미지는 1이라는 계산이 나오죠. 만약 방어자의 방어력이 4 공격자의 공격력이 5 완력이 40 이라면 (5-4/2)X(20+ 40)/20 아마 이거일껍니다.
atk 수치 계산은 이해가 갑니다만, 상대에게 줄 데미지는 정확하지가 않아요
제가 생각해도 셀프.데미지 계산은 좀 이상하네요. 상대 방어력이 10이고 공격력이 4 라면 공격력은 -6이 되고 오히려 힘이 높을수록 상대를 회복하잖습니까
제가 답벼했지만 제가 생각해도 어이가없네요;;; 그래도 방어력 1당 공격력 수치를 1씩 깎으시려면
atk = [attacker.atk - self.pdef / 2, 0]. max 를
atk = [attacker.atk - self.pdef / 1, 0]. max 로 바꾸시면 될'것'같습니다.
아마도입니다.
#--------------------------------------------------------------------------
# ● 통상 공격의 효과 적용
# attacker : 공격자 (버틀러)
#--------------------------------------------------------------------------
def attack_effect(attacker)
# 위기 플래그를 클리어
self.critical = false
# 제일 명중 판정
hit_result = (rand(100) < attacker.hit)
# 명중의 경우
if hit_result == true
# 기본 데미지를 계산
atk = [attacker.atk - self.pdef / 2, 0]. max
self.damage = atk * (20 + attacker.str) / 20
# 속성 수정
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# 데미지의 부호가 정의 경우
if self.damage > 0
# 위기 수정
if rand(100) < 4 * attacker.dex / self.agi
self.damage *= 2
self.critical = true
end
# 방어 수정
if self.guarding?
self.damage /= 2
end
end
# 분산
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1]. max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 제2 명중 판정
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
end
# 명중의 경우
if hit_result == true
# 스테이트 충격 해제
remove_states_shock
# HP 로부터 데미지를 감산
self.hp -= self.damage
# 스테이트 변화
@state_changed = false
states_plus(attacker.plus_state_set)
states_minus(attacker.minus_state_set)
# 미스의 경우
else
# 데미지에 "Miss" 를 설정
self.damage = "Miss"
# 위기 플래그를 클리어
self.critical = false
end
# 메소드 종료
return true
end
여기서
# 기본 데미지를 계산
atk = [attacker.atk - self.pdef / 2, 0]. max
self.damage = atk * (20 + attacker.str) / 20
이 항목을 바꾸시면되는데요
바보인 제가 대충 해석해보면
atk = [attacker.atk - self.pdef / 2, 0]. max 는
공격 = [공격자의공격력 -(빼기) 방어자의 방어력 수치(?) 나누기 2
그러니까 아마 (아닐수도) 공격자의 공격력에서 방어자의 방어력/2 를 뺀다는뜻이 되는데요
self.damage = atk * (20 + attacker.str) / 20 는
줄 데미지(저 위에서 보시면 아시다시피 상대 hp 에서 이걸 빼는거 같더군요)= 공격력(위 식에서 계산이 완료 된 값, 그러니까 공격력-방어력) X[곱하기(20 + 공격자의 완력)]/20
쉽게 말하자면, 위에서 계산한 atk 수치를 (20 + 공격자의 완력) 만큼 곱한다음 20을 나누는 겁니다.
그렇다면 초기데미지는 1이라는 계산이 나오죠. 만약 방어자의 방어력이 4 공격자의 공격력이 5 완력이 40 이라면 (5-4/2)X(20+ 40)/20 아마 이거일껍니다.
atk 수치 계산은 이해가 갑니다만, 상대에게 줄 데미지는 정확하지가 않아요
제가 생각해도 셀프.데미지 계산은 좀 이상하네요. 상대 방어력이 10이고 공격력이 4 라면 공격력은 -6이 되고 오히려 힘이 높을수록 상대를 회복하잖습니까
제가 답벼했지만 제가 생각해도 어이가없네요;;; 그래도 방어력 1당 공격력 수치를 1씩 깎으시려면
atk = [attacker.atk - self.pdef / 2, 0]. max 를
atk = [attacker.atk - self.pdef / 1, 0]. max 로 바꾸시면 될'것'같습니다.
아마도입니다.