xpath 패치 - solaris0115/RimWorldModGuide GitHub Wiki
CE는 새로운 두 가지 패치 작업을 지원하여 호환성 패치를 보다 쉽게 해줍니다.
<Operation Class="CombatExtended.PatchOperationFindMod">
<modName>YourModNameHere</modName>
</Operation>
패치하려는 모드가 로드되어 있다면 성공을 출력합니다. 첫 작업으로 PatchOperationSequence
가 실행된 뒤 해당 패치작업을 합니다.
modName: About.xml에 정의된 모드의 이름을 적어 넣습니다.
<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: CompProperties
에 CompAmmoUser
를 추가합니다. 사용할경우 기본 값으로 설정됩니다. 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>