閲覧数 507 推奨数 0 コメント 0
?

Shortcut

Prev前へ 書き込み

Next次へ 書き込み

Larger Font Smaller Font 上へ 下へ Go comment 印刷
?

Shortcut

Prev前へ 書き込み

Next次へ 書き込み

Larger Font Smaller Font 上へ 下へ Go comment 印刷

 #--------------------------------------------------------------------------
  # ● 통상 공격의 효과 적용
  #     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
番号 タイトル 投稿者 日付 閲覧数
8827 형제들이여 !!! 나를 구제해다오!! Ress 2006.01.26 443
8826 형제들이여 !!! 나를 구제해다오!! KaSsia 2006.01.25 475
8825 rpg2003에서 music음향이 작업시에는 실행되는데 게임을 실행하면 않되네요 ★샤일☆ 2007.01.03 979
8824 RPG2003의 그림들의 사이즈... MiNi'M' 2006.02.21 1061
8823 RPG만들기2003에 관하여...정말 굼금해요~!~부탁드림 ∑☆メ이누∴。』 2005.08.09 773
8822 게이지바 구동 방법좀 <<게이지 유>> file 랑이a 2006.07.03 684
8821 길드는 어떻게 만드나요? 루넨스 2009.06.15 1176
8820 길드는 어떻게 만드나요? 제로스 2009.06.15 1453
8819 동영상 관련및.. 급해요 ㅠ RML 2006.07.12 1665
8818 마법 연계 다시 질문!!! 제발 대답부탁!!; file 나르카이제 2005.06.15 554
8817 몬스터가없으면 다른곳으로 자동이동가능? Novelist 2006.08.29 497
8816 몬스터가없으면 다른곳으로 자동이동가능? CredMotion 2006.08.29 541
8815 스크립트로요,, 이동하는걸 보드게임처럼 할순 없나요? XLostTimesX 2006.01.09 589
8814 아이템창 같은 단축창를 만들려고하는데..[rpg2003] ScolPion 2006.04.15 740
8813 아이템창 같은 단축창를 만들려고하는데..[rpg2003] 방콕족의생활 2006.04.15 965
8812 질문! file 『Q트_아키』 2005.05.22 866
8811 "스크립트 데이터 읽기 실패" 라고 뜨는데.. 김세츠나 2009.07.31 1283
8810 "클래스가 등록되지 않았습니다"라니 -0-;;[RPG2003] Chrishyua .E 2007.03.02 890
8809 "클래스가 등록되지 않았습니다"라니 -0-;;[RPG2003] =ROD= 2007.03.07 1080
8808 "파일 dmd 은 열지 않습니다" 이리저디 옮겼는데.. 윈드 2006.08.18 392
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 442 Next
/ 442