사용자 지정 종족 패치 - solaris0115/RimWorldModGuide GitHub Wiki

새 동물을 추가할 경우 이에 대한 근접 및 투사체 시스템에 대한 패치를 해야합니다. 아래는 이에 대한 가이드입니다.

Setting race stats

MoveSpeed​​: 일반적인 속도(km/h)를 10으로 나눈 값입니다. 예를 들면, 동물의 최고 속도가 55km/h인 경우 moveSpeed스탯은 5.5입니다. 극단적인 경우 게임내 밸런스를 위해 상향,하향조정될 필요성이 있습니다.

ArmorRating: 곰이나 코뿔소처럼 거친 동물의 경우 둔탁함과 날카로움에 대한 두터운 가죽을 갖고 있어야 합니다. 참고로 CE모드의 곰은 0.13의 둔탁함에 대한 방어도와 0.15의 날카로운 방어도를 갖습니다. 대부분의 일반 동물은 방어도가 0.2이상은 넘어가지 않아야합니다.

BaseBodySize: 이 스탯을 계산하기 위해서 동물의 높이를 미터로 환산한 뒤 몸체 배율로 나누고 그 결과값을 1.75로 나누면 됩니다.
공식은 다음과 같습니다.
해당 동물의 키(meter) ÷ 몸체 배율 ÷ 1.75 = 해당 스탯
예를 들어, 우리가 머팔로키가 1.85m라고 할때, 네발 짐승류는 0.5의 높이 배수를 갖습니다. 결과값은 다음과 같습니다. : 1.85 ÷ 0.5 ÷ 1.75 ~= 2.11

동물의 길이만 알고 높이를 모를 경우 해당 공식에서 몸체 배율대신 키를 사용하면 됩니다.

BaseHealthScale: 대부분의 동물의 건강정도는 비슷해야 합니다. 새같이 쉽게 죽는 경우 80%로 곰같이 생명이 질긴 경우 120%정도로 설정하시면 됩니다.

몸체 모양 설정

CE 동물은 RacePropertiesExtension가 없는 경우 에러를 출력합니다. 몸체 모양 설정은 피격박스의 크기를 지정합니다. 미지정시 게임내에서 자동적으로 1x1이 크기로 설정됩니다.

  <Operation Class="PatchOperationAddModExtension">
    <xpath>*/ThingDef[defName="Muffalo"]</xpath>
    <value>
      <li Class="CombatExtended.RacePropertiesExtensionCE">
        <bodyShape>Quadruped</bodyShape>
      </li>
    </value>
  </Operation>

대부분의 몸체 모양에 대한 정의는 CE모드내 Defs/Bodies/BodyShapes.xml에서 찾으실 수 있습니다.

  • 인간형 : 인간과 비슷한 형태의 동물. 원숭이, 터미네이터(누구 상상인지 모르겠지만)
  • 네발 짐승: 키의 절반이 다리고 50%는 몸통인 동물. 머팔로나 사슴등 대부분의 동물이 이 범주에 속합니다.
  • 낮은 네발 짐승 산토끼나 다람쥐같은 동물
  • 구불구불한 짐승: 뱀이나 이구아나와 같이 길고 얇은 동물
  • 조류: 비교적 곡선미가 있는 몸과 긴 목을 갖은 동물, 새나 트럼보같은 동물

근접 시스템 결합

CE 시스템과 해당 동물을 결합하려면 아래 두가지 작업을 더 수행해야 합니다. 근접과 회피, 치명타, 패리에대한 스탯을 추가하고 자연적인 도구를 CE 방식으로 변경해야 합니다.

근접 관련 스탯 추가

  <Operation Class="PatchOperationAdd">
    <xpath>*/ThingDef[defName="Muffalo"]/statBases</xpath>
    <value>
      <MeleeDodgeChance>0.12</MeleeDodgeChance>
      <MeleeCritChance>0.27</MeleeCritChance>
      <MeleeParryChance>0.20</MeleeParryChance>
    </value>
  </Operation>

MeleeDodgeChance: 공격에 대해 얼마나 잘 회피하는지 정합니다.

MeleeCritChance: 얼마나 치명적인 공격을 가할 수 있는지 정합니다.

MeleeParryChance: 공격을 얼마나 잘 받아치거나 흘리는지에 대한 확률을 정합니다.

해당 스탯들을 계산하려면 여기를 참조하시기 바랍니다.

동물 공격에 대한 방어 관통도를 계산하려면 여기를 참조하시기 바랍니다.

도구 추가

  <Operation Class="PatchOperationReplace">
    <xpath>*/ThingDef[defName="Muffalo"]/verbs</xpath>
    <value>
      <tools>
        <li Class="CombatExtended.ToolCE">
	  <label>head</label>
	  <capacities>
	    <li>Blunt</li>
          </capacities>
	  <power>18</power>
	  <cooldownTime>1.65</cooldownTime>
	  <linkedBodyPartsGroup>HeadAttackTool</linkedBodyPartsGroup>
	  <commonality>0.2</commonality>
	  <armorPenetration>0.178</armorPenetration>
	</li>
      </tools>
    </value>
  </Operation>

대부분 기본 버전과 몇가지 차이가 있습니다.

li Class: 동물이 CE모드에 적용되려면 CombatExtended.ToolCE를 설정해주셔야 합니다.

capacity: CE는 Slash라는 새로운 타입의 피해유형을 추가합니다. 긁힘과 일부 비슷하지만 방어에 의해 막혔을 경우 둔탁한 피해를 입힙니다. 긁힘 형태의 공격이 많은 경우 해당 공격이 둔탁함을 내포하면 (예: 곰 발톱, 트럼보 뿔) Slash 타입으로 변경해야합니다. 하지만 작은 짐승들(고양이,개,다람쥐)등의 경우 여전히 긁힘 유형의 피해로 남겨둡니다.

meleeArmorPenetration: 공격이 얼마나 방어도를 무시하는지 결정합니다. 근접 무기 추가에서 설명했듯 방어도와 관통도가 동일할 경우 50%의 확률로 피해를 받습니다. 위 방어도 관련 시트에서 계산하시면 됩니다.

메카노이드나 인간형 컴포넌트 추가

  <Operation Class="PatchOperationAdd">
    <xpath>*/ThingDef[defName="Human"]/comps</xpath>
    <value>
      <li>
        <compClass>CombatExtended.CompPawnGizmo</compClass>
      </li>
      <li Class="CombatExtended.CompProperties_Suppressable" />
    </value>
  </Operation>

CompPawnGizmo: 일반 폰에게서 탄약과 같은 아래 제어UI를 표시합니다. 메카노이드를 포함해 총과 같은것을 지닐 수 있는 것이 있어야합니다. (히드라?)

CompSuppressable: 제압에 대한 처리를 합니다. 메카노이드와 터미네이터는 두려움을 느낄 필요가 없지만 옴닉과 우리의 예비 소파재료들은 포화에 대한 두려움을 느낍니다. 두려움을 느낄 필요가 없다면 제거하시면 됩니다.

인벤토리 지원 추가

사용자 정의 폰의 정의가 기존의 폰(혹은 비슷한 추상 정의)에서 상속 받었다면 자동적으로 생성됩니다. 하지만 그렇지 않는경우 수동 추가를 해야 합니다.

  <Operation Class="PatchOperationReplace">
    <xpath>*/ThingDef[@Name="BasePawn"]/inspectorTabs/li[.="ITab_Pawn_Gear"]</xpath>
    <value>
      <li>CombatExtended.ITab_Inventory</li>
    </value>
  </Operation>

  <Operation Class="PatchOperationAdd">
    <xpath>*/ThingDef[@Name="BasePawn"]/comps</xpath>
    <value>
      <li Class="CombatExtended.CompProperties_Inventory" />
    </value>
  </Operation>

무게/부피 바를 표시하기 위해 폰이 기존의 ITab_Pawn_Gear 를 CE의 ITab_Inventory로 변경해야 합니다. 그 이상의 기능을 추가 할 필요가 없다면 CompInventory를 추가하면 됩니다.

만약 인간형일 경우 pawnKindDef을 가지고 있다면 방문자/침략자/기타 등으로 행성될 수 있습니다. 사용자 로드아웃의 정의가 추가되어야 할것 입니다. 자세한 내용은 로드아웃 추가 페이지를 참고하시기 바랍니다.

패치 제출

해당 xpath 패치는 Github 혹은 포럼으로 보내주시면 CE모드에 내장 시키실 수 있습니다.

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