디스 이즈 예제.

이왕 예쁘게 사진으로 가져와봤는데, 그저 그렇다.

<?xml version="1.0" encoding="utf-8" ?>
<Patch>
    <!-- Andorid tiers--> 
    <Operation Class="PatchOperationSequence">
        <success>Always</success>
        <operations>
            <li Class="PatchOperationTest">
                <xpath>/Defs/WorkGiverDef[defName = "ChJAndroidDoctorChargePatients"]</xpath>
            </li>

            <li Class="PatchOperationReplace">
                <xpath>/Defs/WorkGiverDef[defName = "ChJAndroidDoctorChargePatients"]/workType</xpath>
                <value>
                    <workType>Doctor</workType>
                </value>
            </li>

            <li Class="PatchOperationReplace">
                <xpath>/Defs/WorkGiverDef[defName = "DoBillsRobotics"]/workType</xpath>
                <value>
                    <workType>FSFMachining</workType>
                </value>
            </li>
                    </operations>
    </Operation>
                <!-- Moyo -->   
    <Operation Class="PatchOperationSequence">
        <operations>
            <li Class="PatchOperationTest">
                <xpath>/Defs/HPF.HPFWorkGiverDef[defName = "ExtractDeepBlue_Work"]</xpath>
            </li>

            <li Class="PatchOperationReplace">
                <xpath>/Defs/HPF.HPFWorkGiverDef[defName = "ExtractDeepBlue_Work"]/workType</xpath>
                <value>
                    <workType>FSFNurse</workType>
                </value>
            </li>       
        </operations>
    </Operation>


디스 이즈 예제 ver.2

이정도면 예쁘게 복사 된 듯. 근데 띄어쓰기 긔찮다.

이후 예제는 대충 보길 바람.


패치 관련 모딩 위키https://rimworldwiki.com/wiki/Modding_Tutorials/PatchOperations


Class="PatchOperationSequence"

패치 오퍼레이션 시퀸스: 패치 실행 시, 문제가 있으면 도중에 멈추는 코드다.

만약 이 명령을 통해 아래의 코드들을 이용할 경우, 모드 하나당 하나씩 재 선언 해줘야한다.

        <success>Always</success>

위 시퀸스가 실행될 때, 문제가 있을 시 에러코드를 안띄우고 넘어가게 하는 용도.


            <li Class="PatchOperationTest">
                <xpath>/Defs/WorkGiverDef[defName = "ChJAndroidDoctorChargePatients"]</xpath>
            </li>

패치 오퍼레이션 테스트: <Xpath>의 경로 상에, 조건의 선언이 있는지 확인한다.

단독적으로 쓰기보다는 위 시퀸스랑 같이 써서, 테스트 했는데 테스트가 안되면, 이후 코드를 전부 무시하는 용도로 사용함.

패치 관련으로 여러 모드를 리밸런스하거나 고치는 경우 자주 사용 됨.


            <li Class="PatchOperationReplace">
                <xpath>/Defs/WorkGiverDef[defName = "ChJAndroidDoctorChargePatients"]/workType</xpath>
                <value>
                    <workType>Doctor</workType>
                </value>
            </li>

패치 오퍼레이션 리플레이스: 바꿔치기 한다는 말.

정확히는 <xpath> 경로상에서 해당 선언의 /example을 바꿔치기하겠다고 선언하는 것임.

그 값으로 <value> <example> 선언 하여, 수정하는 형식.


위 코드는 안드로이드 충전하기를 치료에 배정하는 것입니다.





자 여기서 궁금한게 하나 있을 것임. 경로란 무엇인가?


실제 윈도우 폴더를 따라가는게 아니라, 폴더 안에서 선언하는 것을 따라갑니다.

폴더 안에

<Defs>

가 있으면 /Defs 인 것임.


  <WorkGiverDef>

은 /WorkGiveDef 인 것임.


즉 아래는 

<Defs>
  <WorkGiverDef>

/Defs/WorkGiveDef 입니다.


                <xpath>/Defs/WorkGiverDef[defName = "ChJAndroidDoctorChargePatients"]</xpath>

이 문구는 해당 경로의 defname 중에 "이것"과 동일한 것을 찾겠다 라고 선언하는 것입니다.


            <li Class="PatchOperationReplace">
                <xpath>/Defs/HPF.HPFWorkGiverDef[defName = "ExtractDeepBlue_Work"]/workType</xpath>
                <value>
                    <workType>FSFNurse</workType>
                </value>
            </li>       

이 코드는 모요 코드, 혈액 추출하기를 간호에 설정하는 코드임.

보다시피 코드가 좀 다른 것을 보실 수 있습니다.


왜냐하면 실제 모요 코드가

    <HPF.HPFWorkGiverDef ParentName="HPFWorkGiverBase">
        <defName>ExtractDeepBlue_Work</defName>

이렇게 생겼기 때문임.



제가 아는 것은 여기까지 임.