호환 가능한 총 추가 - solaris0115/RimWorldModGuide GitHub Wiki
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>
<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>
<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 - 고정 거치형
<comps>
<li Class="CombatExtended.CompProperties_AmmoUser">
<magazineSize>100</magazineSize>
<reloadTime>7.8</reloadTime>
<ammoSet>AmmoSet_762x51mmNATO</ammoSet>
</li>
</comps>
이 컴포넌트는 탄약시스템을 통해 다뤄집니다. 만약 무한탄약과 탄창이 필요없다면 해당 구간은 건너뛰셔도 됩니다.
magazineSize: 탄창마다 몇개의 탄약이 들어가는지 결정합니다. 따로 지정되지 않거나 탄창값이 0이라면 인벤토리내에서 직접 공급합니다. (활, 수류탄?같은 것들)
reloadTime: 재장전을 하는데 걸리는 시간입니다.
ammoSet: 어떤 탄종을 사용할지 정합니다.
<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>
<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용 패치 관련 정보는 해당 페이지를 참고 하시기바랍니다.