호환 가능한 총 추가 - solaris0115/RimWorldModGuide GitHub Wiki

CE는 기존의 무기와 호환이 되지 않는 완전히 다른 새로운 사격 시스템을 사용합니다. 또한 새 무기를 추가하는 모드도 호환이 되지 않으며 별도의 패치를 해주어야 합니다.

CE 총기 정의

예시로 CE의 M60총기를 기준으로 설명하겠습니다.

  <ThingDef ParentName="BaseHumanMakeableGun">
    <defName>CE_Gun_MSixty</defName>
    <label>M60</label>
    <description>A belt-fed general-purpose machine gun. Lots of firepower but heavy and cumbersome to carry around. Commonly nicknamed "The Pig".</description>
    <graphicData>
      <texPath>Things/Weapons/M60</texPath>
      <graphicClass>Graphic_Single</graphicClass>
    </graphicData>
    <soundInteract>InteractRifle</soundInteract>
    <statBases>
      <WorkToMake>27500</WorkToMake>
      <SightsEfficiency>0.50</SightsEfficiency>
      <ShotSpread>0.06</ShotSpread>
      <SwayFactor>1.51</SwayFactor>
      <Bulk>14.05</Bulk>
      <Mass>10.50</Mass>
      <RangedWeapon_Cooldown>0.56</RangedWeapon_Cooldown>
    </statBases>
    <costList>
      <Steel>90</Steel>
      <Component>4</Component>
    </costList>
    <verbs>
      <li Class="CombatExtended.VerbPropertiesCE">
        <recoilAmount>0.79</recoilAmount>
        <verbClass>CombatExtended.Verb_ShootCE</verbClass>
        <hasStandardCommand>true</hasStandardCommand>
        <projectileDef>Bullet_762x51mmNATO_FMJ</projectileDef>
        <warmupTime>1.25</warmupTime>
        <range>75</range>
        <ticksBetweenBurstShots>6</ticksBetweenBurstShots>
        <burstShotCount>10</burstShotCount>
        <soundCast>ShotMinigun</soundCast>
        <muzzleFlashScale>9</muzzleFlashScale>
        <targetParams>
          <canTargetLocations>true</canTargetLocations>
        </targetParams>
        <recoilPattern>Mounted</recoilPattern>
      </li>
    </verbs>
    <comps>
      <li Class="CombatExtended.CompProperties_AmmoUser">
        <magazineSize>100</magazineSize>
        <reloadTime>7.8</reloadTime>
        <ammoSet>AmmoSet_762x51mmNATO</ammoSet>
      </li>
      <li Class="CombatExtended.CompProperties_FireModes">
        <aiUseBurstMode>FALSE</aiUseBurstMode>
        <aiAimMode>SuppressFire</aiAimMode>
        <aimedBurstShotCount>5</aimedBurstShotCount>
      </li>
    </comps>
    <weaponTags>
      <li>CE_MachineGun</li>
    </weaponTags>
  </ThingDef>

StatBases

    <statBases>
      <WorkToMake>27500</WorkToMake>
      <SightsEfficiency>0.50</SightsEfficiency>
      <ShotSpread>0.06</ShotSpread>
      <SwayFactor>1.51</SwayFactor>
      <Bulk>14.05</Bulk>
      <Mass>10.50</Mass>
      <RangedWeapon_Cooldown>0.56</RangedWeapon_Cooldown>
    </statBases>

CE 총기 정의에는 기존 총기 정의에 있는 Accuracy_Long과 같은 조준관련 태그가 없습니다. CE에서는 사용하지 않기 때문입니다. 따라서 가독성을 위해 빼셔도 괜찮습니다. 대신 CE에서는 아래와 같은 스탯을 사용합니다.

SightsEfficiency: 무기 조준경 효율을 나타냅니다. 기계식 조준기는 스코프나 도트사이트보다 낮은 효율을 갖고 있습니다.

Shotspread: 발사시 탄퍼짐입니다. 샷건처럼 퍼지는 정도를 나타냅니다.

SwayFactor: 손에서 총이 얼마나 흔들리는지 결정합니다. 값이 높을수록 손에서 더 많이 흔들립니다.

Bulk: 무기가 인벤토리 시스템에서 차지하는 부피를 의미합니다.

Verbs

    <verbs>
      <li Class="CombatExtended.VerbPropertiesCE">
        <recoilAmount>0.79</recoilAmount>
        <verbClass>CombatExtended.Verb_ShootCE</verbClass>
        <hasStandardCommand>true</hasStandardCommand>
        <projectileDef>Bullet_762x51mmNATO_FMJ</projectileDef>
        <warmupTime>1.25</warmupTime>
        <range>75</range>
        <ticksBetweenBurstShots>6</ticksBetweenBurstShots>
        <burstShotCount>10</burstShotCount>
        <soundCast>ShotMinigun</soundCast>
        <muzzleFlashScale>9</muzzleFlashScale>
        <targetParams>
          <canTargetLocations>true</canTargetLocations>
        </targetParams>
        <recoilPattern>Mounted</recoilPattern>
      </li>
    </verbs>

VerbPropertiesCE: 모든 CE verb 항목에는 이 값이 필요합니다.

verbClass: 발사 방법을 정해줍니다. 기존 verb말고 CE용 verb를 사용하는것이 중요합니다. 그렇지 않으면 CE 매커니즘대로 작동치 않을 수 있습니다. 기존의 verb를 CE용으로 변경하실 수 있습니다.

  • Verb_LaunchProjectile -> Verb_LaunchProjectileCE
  • Verb_Shoot -> Verb_ShootCE
  • Verb_ShootOneUse -> Verb_ShootCEOneUse
  • Verb_MeleeAttack -> Verb_MeleeAttackCE

projectileDef: 커스텀 CE무기에 CompAmmoUser가 있다면 실제 게임상으로 해당 태그는 아무런 효과가 없습니다. 그럼에도 불구하고 여러분이 만든 AmmoSet을 기본 투사체로 연결하는것이 좋습니다. 정보 탭에서 무엇으로 인해 피해를 받었는지 결정하기 때문입니다.

recoilAmount: 총알이 발사 될 때 마다 정확도가 떨어지게 됩니다. 이 인자값은 매 사격마다 총기반동의 정도를 결정합니다.

recoilPattern: 총알이 어떤 패턴으로 분산되는지를 결정합니다. 예를들면 위로튀면서 오른쪽으로, 혹은 위아래로, 좌우반동과 같은 것 입니다.

  • None - 없음
  • Regular - 일반 총
  • Mounted - 고정 거치형

CompAmmoUser

    <comps>
      <li Class="CombatExtended.CompProperties_AmmoUser">
        <magazineSize>100</magazineSize>
        <reloadTime>7.8</reloadTime>
        <ammoSet>AmmoSet_762x51mmNATO</ammoSet>
      </li>
    </comps>

이 컴포넌트는 탄약시스템을 통해 다뤄집니다. 만약 무한탄약과 탄창이 필요없다면 해당 구간은 건너뛰셔도 됩니다.

magazineSize: 탄창마다 몇개의 탄약이 들어가는지 결정합니다. 따로 지정되지 않거나 탄창값이 0이라면 인벤토리내에서 직접 공급합니다. (활, 수류탄?같은 것들)

reloadTime: 재장전을 하는데 걸리는 시간입니다.

ammoSet: 어떤 탄종을 사용할지 정합니다.

CmopFireModes

    <comps>
      <li Class="CombatExtended.CompProperties_FireModes">
        <aiUseBurstMode>FALSE</aiUseBurstMode>
        <aiAimMode>SuppressFire</aiAimMode>
        <aimedBurstShotCount>5</aimedBurstShotCount>
      </li>
    </comps>

이 컴포넌트는 사격방식을 결정합니다.

aiUseBurstMode: 기본적으로, AI컨트롤러에 의해 해적과 같은 폰들은 연사를 사용합니다. 이것을 True로 설정하면 점사 모드로 사용하게 됩니다. 연사로 하고싶다면 해당 태그를 쓰지 않으시면 됩니다.

aiAimMode: 인공지능의 조준방식을 결정합니다. 기본적으로 조준사격 모드로 설정됩니다.

  • Snapshot - 지향 사격
  • AimedShot - 조준 사격
  • SuppressFire - 제압 사격

aimedBurstShotCount: 점사 모드 사용시 발사 횟수를 결정합니다. 최소 1이상 Verb.burstShotCount태그값의 사이 값이어야 합니다.

weaponTags

    <weaponTags>
      <li>CE_MachineGun</li>
    </weaponTags>

CE는 다양한 무기태그를 사용하여 폰이 생성될때 무엇과 함께 생성될지 결정할 수 있습니다. 위 예제의 경우 해당 태그를 갖은 용병은 기관총태그가 달린 무기중 하나를 갖고 생성됩니다. 사용 가능한 태그는 다음과 같습니다.

  • CE_Sidearm, CE_Sidearm_Melee: 레이더 인벤토리에 스폰될 때 어떤 장비로 함께 생성될지 결정합니다.
  • CE_OneHandedWeapon: 방패와 함께 사용 가능한 무기
  • CE_SMG: 미사일로 무장한 용병들은 이것을 보조무기로 사용합니다.

게임내 스탯 결정

여기에 가시면 여러분이 모드를 만드는데 있어 게임내 스탯을 결정하는데 도움이 될 것입니다. 현실에서의 데이터를 넣으면 게임내 스탯으로 전환해줍니다. 간단하게 '무기 데이터'와 '제작 데이터'탭에 정보를 넣으면 인게임 스탯제작 정보탭에 갱신이 됩니다. 상단에 있는 설명을 읽어보세요. (해당 시트는 다운로드하거나 구글 드라이브에 복제하실 수 있습니다.)

사용 총탄 결정

실제 총을 사용하는 경우 이미 해당 탄이 CE모드에 포함되어 있을 가능성이 높습니다. CE모드에 포함된 탄 종류를 알고싶다면 Combat Extended 모드 폴더로 가셔서 \Defs\Ammo 주소로 가시면 모든 탄약의 정의를 찾으실 수 있습니다. 만약 사용하시는 탄이 CE에 포함되어있다면 자동적으로 상인과 제작탭에 추가될 것 입니다.

만약 탄이 CE에 미포함 되어있는 경우 해당 페이지를 참고 하시면 됩니다.

패치파일 제출

호환성 패치를 만드셨다면 CE모드와 함께 제공될 수 있습니다. 포럼 혹은 Github에 제출하시면 이것을 심사 후 기본 CE모드에 포함시킬 것입니다. 포함이 되었다면 별도의 모드없이 CE모드에서 패치가 자동 적용 될 것 입니다.

CE용 패치 관련 정보는 해당 페이지를 참고 하시기바랍니다.

⚠️ **GitHub.com Fallback** ⚠️