xpath 패치 - solaris0115/RimWorldModGuide GitHub Wiki

CE는 새로운 두 가지 패치 작업을 지원하여 호환성 패치를 보다 쉽게 해줍니다.

PatchOperationFindMod

<Operation Class="CombatExtended.PatchOperationFindMod">
  <modName>YourModNameHere</modName>
</Operation>

패치하려는 모드가 로드되어 있다면 성공을 출력합니다. 첫 작업으로 PatchOperationSequence가 실행된 뒤 해당 패치작업을 합니다.

modName: About.xml에 정의된 모드의 이름을 적어 넣습니다.

PatchOperationMakeGunCECompatible

  <Operation Class="CombatExtended.PatchOperationMakeGunCECompatible">
    <defName></defName>
    <statBases></statBases>
    <costList></costList>
    <Properties></Properties>
    <AmmoUser></AmmoUser>
    <FireModes></FireModes>
    <weaponTags></weaponTags>
    <researchPrerequisite></researchPrerequisite>
  </Operation>

해당 작업은 자주 쓰이는 기능중 하나로 CE호환성을 부여할 때 해주는 보다 빠르게 해줍니다.

defName: 패치할 개체에 대한 defName입니다. 기본 권총에 패치를 하고 싶다면 기본 권총의 defName인 Gun_Pistol을 적으시면 됩니다.

statBases: 해당 개체의 statBases입니다. 여기에 지정된 것들이 기존 정의의 statBases에 추가됩니다. 해당 개체에 이미 값이 존재한다면 새로운 값으로 교체됩니다. 해당 정의에 statBases가 없다면 자동으로 추가합니다.

costList: 기존의 costList를 대체하게 됩니다. 해당 정의에 있는 모든 재료를 제거하고 지정된 재료만 남겨둡니다. 정의에 costList가 없는 경우 자동으로 추가합니다.

Properties: 자동적으로 기본 ranged verbs를 제거하고 지정된 verb로 교체합니다. 절대 Verb_MeleeAttack를 추가 하지 맙시다.

AmmoUser: CompPropertiesCompAmmoUser를 추가합니다. 사용할경우 기본 값으로 설정됩니다. CompAmmoUser항목을 작성하지 않을 것이라면 해당 태그를 삭제하시기 바랍니다. 만약 정의에 comps가 없다면 comps를 자동적으로 추가할 것입니다.

FireModes: AmmoUser와 비슷합니다. 참고

weaponTags: 총에 태그를 추가시킵니다. 기존 태크는 유지됩니다. 참고

researchPrerequisite: 제작시 필요한 연구조건을 덮어씌웁니다. 세계 2차 대전 이후의 총들의 선행 연구 조건은 CE_AdvancedFirearms로 하면 됩니다. ( 진짜 간단한 구조의 총이 아니라면 - ex: 현대식 리볼버 )

예제

대구경 총탄 모드에 대한 가상 호환성 패치 가상의 모드인 High Caliber mod를 예로들어 호환성 패치에 대한 형태를 보여 드리겠습니다.

<?xml version="1.0" encoding="utf-8" ?>
<Patch>

  <Operation Class="PatchOperationSequence">
    <success>Always</success>
    <operations>
      <li Class="CombatExtended.PatchOperationFindMod">
        <modName>High Caliber</modName>
      </li>

      <!-- FN Five-Seven -->
      <li Class="CombatExtended.PatchOperationMakeGunCECompatible">
        <defName>Gun_Fiveseven_HC</defName>
        <statBases>
          <Mass>0.61</Mass>
          <RangedWeapon_Cooldown>0.37</RangedWeapon_Cooldown>
          <SightsEfficiency>0.35</SightsEfficiency>
          <ShotSpread>0.17</ShotSpread>
          <SwayFactor>0.9</SwayFactor>
          <Bulk>2.08</Bulk>
          <WorkToMake>5000</WorkToMake>
        </statBases>
        <costList>
          <Steel>25</Steel>
          <Component>2</Component>
        </costList>
        <Properties>
          <verbClass>CombatExtended.Verb_ShootCE</verbClass>
          <hasStandardCommand>true</hasStandardCommand>
          <projectileDef>Bullet_FN57x28mm_FMJ</projectileDef>
          <warmupTime>0.6</warmupTime>
          <range>12</range>
          <soundCast>ShotFiveseven</soundCast>
          <soundCastTail>GunTail_Light</soundCastTail>
          <muzzleFlashScale>9</muzzleFlashScale>
        </Properties>
        <AmmoUser>
          <magazineSize>20</magazineSize>
          <reloadTime>4</reloadTime>
          <ammoSet>AmmoSet_FN57x28mm</ammoSet>
        </AmmoUser>
        <FireModes />
        <weaponTags>
          <li>CE_Sidearm</li>
          <li>CE_AI_Pistol</li>
          <li>CE_OneHandedWeapon</li>
        </weaponTags>
        </researchPrerequisite>CE_AdvancedFirearms</researchPrerequisite>
      </li>

      <!-- SVU -->
      <li Class="CombatExtended.PatchOperationMakeGunCECompatible">
        <defName>Gun_DragunovSVU_HC</defName>
        <statBases>
          <Mass>4.20</Mass>
          <RangedWeapon_Cooldown>0.37</RangedWeapon_Cooldown>
          <SightsEfficiency>1.24</SightsEfficiency>
          <ShotSpread>0.06</ShotSpread>
          <SwayFactor>1.33</SwayFactor>
          <Bulk>8.7</Bulk>
          <WorkToMake>18000</WorkToMake>
        </statBases>
        <costList>
          <Steel>60</Steel>
          <Component>3</Component>
        </costList>
        <Properties>
          <verbClass>CombatExtended.Verb_ShootCE</verbClass>
          <hasStandardCommand>true</hasStandardCommand>
          <projectileDef>Bullet_762x54mmR_FMJ</projectileDef>
          <warmupTime>1.5</warmupTime>
          <range>75</range>
          <soundCast>ShotSVU</soundCast>
        </Properties>
        <AmmoUser>
          <magazineSize>10</magazineSize>
          <reloadTime>4.5</reloadTime>
          <ammoSet>AmmoSet_762x54mmR</ammoSet>
        </AmmoUser>
        <FireModes>
          <aiAimMode>AimedShot</aiAimMode>
        </FireModes>
        <weaponTags>
          <li>CE_AI_Rifle</li>
        </weaponTags>
        </researchPrerequisite>CE_AdvancedFirearms</researchPrerequisite>
      </li>

      <!-- etc.. -->
    </operations>
  </Operation>

</Patch>
⚠️ **GitHub.com Fallback** ⚠️