조회 수 402 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

 #--------------------------------------------------------------------------
  # ● 통상 공격의 효과 적용
  #     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(공격력)=[공격자의 공격력-피격자의 물리방어력/2, 0].최대치'라고 해석할 수 있습니다.


저도 스크립트 초짜라 잘은 모르겠지만 콤마 앞의 것이 최대치, 0이 최소치라고 생각됩니다.


그러니까 공격력은 최소치와 최대치 사이에 속해있는 숫자가 되는 것입니다.


 


그리고 두번째 줄을 보면


'self.damage(피격자의 데미지) = 공격력(위에서 정의한 공식)*(20+공격자의 완력) / 20 이라고 되어 있습니다.


한마디로 피격자가 받는 데미지는 위에서 정의한 공식에 따라 나온 공격력에 (공격자의 완력+20)을 곱한 다음 20으로 나눈 것이 되는 것입니다.


 


이것으로 공식 해석은 되었지만 속성이나 상태 같은 것이 들어가면 더 복잡해집니다;;


허접한 답변 읽어주셔서 감사합니다.


 


 

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
5347 기본전투계산식이 궁금합니다. 『덩키동크』 2007.06.03 368
5346 기본전투계산식이 궁금합니다. 천당의새 2007.06.03 609
5345 국악 샘플링 하는 방법? C코드선생 2007.06.03 1143
5344 비스타에서 rpg게임을 하거나 테스트 플레이를 하면... windinw 2007.06.01 666
5343 RPGXP 테스트, 실행조차 안된다? Archer 2007.06.01 704
5342 RPGXP 테스트, 실행조차 안된다? 『덩키동크』 2007.06.01 683
5341 주인공 초기장비 에서 궁금한 점 위토르 2007.05.27 631
5340 주인공 이동속도 조절 어떻게 하나요? Archer 2007.05.27 1964
5339 주인공 이동속도 조절 어떻게 하나요? 식칼 2007.05.27 852
5338 전투할때 케릭터가 계속 더블어택을 하네요.. 『덩키동크』 2007.05.27 243
5337 RPG2000 투명대화창 만드는 법(시스템그래픽) file AFeel 2007.05.24 1419
5336 주인공 초기장비 에서 궁금한 점 Archer 2007.05.24 454
5335 정말 미쳐버리겠습니다. 식칼 2007.05.22 503
5334 RPG2000 투명대화창 만드는 법(시스템그래픽) file 젊은아이 2007.05.22 509
5333 전투문제 토깽이 2007.05.21 515
5332 진짜 마지막의스토리질문하나더 입니다 Chrishyua .E 2007.05.21 167
5331 진짜 마지막의스토리질문하나더 입니다 『덩키동크』 2007.05.21 214
5330 진짜 마지막의스토리질문하나더 입니다 작렬씨. 2007.05.21 345
5329 Unsupported PNG Image 이게 뭔가요? 아쳐 2007.05.21 330
5328 Unsupported PNG Image 이게 뭔가요? 금오령 2007.05.21 552
Board Pagination Prev 1 ... 170 171 172 173 174 175 176 177 178 179 ... 442 Next
/ 442


[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)