Rim World (림월드)/(old) 모딩

막무가내로 오류 잡아가며 식물추가 및 레시피등록

Keulraenoa 2021. 8. 20. 23:08

Defs 구성

*알고보니 ThingDefs 하나로 추가되는것들을 정리할수있었다. (폴더구분을 딱히 안하는듯? 한글명도될지는 모르겠음)

 

총 4개의 폴더로 정리했다.

1. 레시피

 Recipes_Meals.xml

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

  <RecipeDef>
    <defName>CookSuperRiceMeal</defName>
    <label>SuperRiceMeal 2.0</label>
    <description>A</description>
    <jobString>B</jobString>
    <workSpeedStat>CookSpeed</workSpeedStat>
    <requiredGiverWorkType>Cooking</requiredGiverWorkType>
    <effectWorking>Cook</effectWorking>
    <soundWorking>Recipe_CookMeal</soundWorking>
    <allowMixingIngredients>true</allowMixingIngredients>
    <ingredientValueGetterClass>IngredientValueGetter_Nutrition</ingredientValueGetterClass>
    <ingredients>
      <li>
        <filter>
          <categories>
            <li>SuperFood</li>
          </categories>
        </filter>
        <count>10</count>
      </li>
    </ingredients>
    <products>
      <SuperRiceMeal>10</SuperRiceMeal>
    </products>
    <workSkill>Cooking</workSkill>
  </RecipeDef>

</Defs>

2. 카테고리

 ThingCategories.xml

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

      <ThingCategoryDef>
        <defName>SuperFood</defName>
        <label>SuperFood</label>
        <parent>FoodRaw</parent>
        <iconPath>UI/Icons/ThingCategories/PlantFoodRaw</iconPath>
      </ThingCategoryDef>

</Defs>

3. 추가아이템

 SuperRice.xml (*벼)

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

  <ThingDef ParentName="PlantBase">
    <defName>SuperRice</defName>
    <label>SuperRice 2.0</label>
    <description>A</description>
    <statBases>
      <MaxHitPoints>200</MaxHitPoints>
      <Nutrition>0.175</Nutrition>
      <Flammability>0</Flammability>
      <DeteriorationRate>0</DeteriorationRate>
      <Mass>0.03</Mass>
    </statBases>
    <graphicData>
      <texPath>Things/Plant/RicePlant</texPath>
      <graphicClass>Graphic_Random</graphicClass>
    </graphicData>
    <selectable>true</selectable>
    <pathCost>14</pathCost>
    <ingestible />
    <plant>
      <dieIfLeafless>true</dieIfLeafless>
      <maxMeshCount>4</maxMeshCount>
      <harvestTag>Standard</harvestTag>
      <harvestedThingDef>RawSuperRice</harvestedThingDef>
      <harvestYield>75</harvestYield>
      <sowTags>
        <li>Ground</li>
        <li>Hydroponic</li>
      </sowTags>
      <topWindExposure>0.1</topWindExposure>
      <growDays>1</growDays>
      <visualSizeRange>0.3~0.8</visualSizeRange>
      <wildOrder>2</wildOrder>
      <purpose>Food</purpose>
      <humanFoodPlant>true</humanFoodPlant>
    </plant>
    <tickerType>Rare</tickerType>
    <healthAffectsPrice>false</healthAffectsPrice>
  </ThingDef>


</Defs>

 Items_Resource_RawPlant.xml (*생쌀)

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

  <ThingDef ParentName="PlantFoodRawBase">
    <defName>RawSuperRice</defName>
    <label>RawSuperRice 2.0</label>
    <description>A</description>
    <soundInteract>Grain_Drop</soundInteract>
    <soundDrop>Grain_Drop</soundDrop>
    <graphicData>
      <texPath>Things/Item/Resource/PlantFoodRaw/Rice</texPath>
    </graphicData>
    <statBases>
      <MarketValue>10</MarketValue>
      <Nutrition>0.5</Nutrition>
      <FoodPoisonChanceFixedHuman>0</FoodPoisonChanceFixedHuman>
    </statBases>
    <ingestible>
      <foodType>Seed</foodType>
    </ingestible>
    <thingCategories>
      <li>SuperFood</li>
    </thingCategories>
    <comps>
      <li Class="CompProperties_Rottable">
        <daysToRotStart>360</daysToRotStart>
        <rotDestroys>true</rotDestroys>
      </li>
    </comps>
  </ThingDef>
  
</Defs>

 Items_Food.xml (*밥)

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

  <ThingDef ParentName="MealCooked">
    <defName>SuperRiceMeal</defName>
    <label>SuperRiceMeal 2.0</label>
    <description>A</description>
    <graphicData>
      <texPath>Things/Item/Meal/Lavish</texPath>
      <graphicClass>Graphic_StackCount</graphicClass>
    </graphicData>
    <statBases>
      <MarketValue>150</MarketValue>
      <WorkToMake>100</WorkToMake>
      <Nutrition>1</Nutrition>
    </statBases>
    <ingestible>
      <preferability>MealLavish</preferability>
      <tasteThought>AteSuperRiceMeaSet</tasteThought>
      <ingestEffect>EatVegetarian</ingestEffect>
      <ingestSound>Meal_Eat</ingestSound>
    </ingestible>
    <tradeability>Buyable</tradeability>
    <comps>
      <li Class="CompProperties_Rottable">
        <daysToRotStart>180</daysToRotStart>
        <rotDestroys>true</rotDestroys>
      </li>
    </comps>
  </ThingDef>

</Defs>

 Buildings_Production.xml (*전기스토브와 스토브내역에 추가)

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

  <ThingDef ParentName="BenchBase">
    <defName>ElectricStove</defName>
    <label>electric stove</label>
    <description>An electrically-powered stove with an attached countertop for preparing meals.</description>
    <thingClass>Building_WorkTable_HeatPush</thingClass>
    <graphicData>
      <texPath>Things/Building/Production/TableStoveElectric</texPath>
      <graphicClass>Graphic_Multi</graphicClass>
      <drawSize>(3.5,1.5)</drawSize>
      <damageData>
        <cornerTL>Damage/Corner</cornerTL>
        <cornerTR>Damage/Corner</cornerTR>
        <cornerBL>Damage/Corner</cornerBL>
        <cornerBR>Damage/Corner</cornerBR>
      </damageData>
    </graphicData>
    <castEdgeShadows>true</castEdgeShadows>
    <staticSunShadowHeight>0.20</staticSunShadowHeight>
    <constructEffect>ConstructMetal</constructEffect>
    <costList>
      <Steel>80</Steel>
      <ComponentIndustrial>2</ComponentIndustrial>
    </costList>
    <altitudeLayer>Building</altitudeLayer>
    <fillPercent>0.5</fillPercent>
    <useHitPoints>True</useHitPoints>
    <statBases>
      <WorkToBuild>2000</WorkToBuild>
      <MaxHitPoints>180</MaxHitPoints>
      <Flammability>1.0</Flammability>
    </statBases>
    <size>(3,1)</size>
    <designationCategory>Production</designationCategory>
    <passability>PassThroughOnly</passability>
    <pathCost>50</pathCost>
    <hasInteractionCell>True</hasInteractionCell>
    <interactionCellOffset>(0,0,-1)</interactionCellOffset>
    <surfaceType>Item</surfaceType>
    <constructionSkillPrerequisite>4</constructionSkillPrerequisite>
    <recipes>
      <li>CookMealSimple</li>
      <li>CookMealFine</li>
      <li>CookMealFine_Veg</li>
      <li>CookMealFine_Meat</li>
      <li>CookMealLavish</li>
      <li>CookMealLavish_Veg</li>
      <li>CookMealLavish_Meat</li>
      <li>CookMealSurvival</li>
      <li>CookMealSimpleBulk</li>
      <li>CookMealFineBulk</li>
      <li>CookMealFineBulk_Veg</li>
      <li>CookMealFineBulk_Meat</li>
      <li>CookMealLavishBulk</li>
      <li>CookMealLavishBulk_Veg</li>
      <li>CookMealLavishBulk_Meat</li>
      <li>CookMealSurvivalBulk</li>
      <li>Make_Pemmican</li>
      <li>Make_PemmicanBulk</li>
      <li>CookSuperRiceMeal</li>
    </recipes>
    <inspectorTabs>
      <li>ITab_Bills</li>
    </inspectorTabs>
    <comps>
      <li Class="CompProperties_Power">
        <compClass>CompPowerTrader</compClass>
        <shortCircuitInRain>true</shortCircuitInRain>
        <basePowerConsumption>350</basePowerConsumption>
      </li>
      <li Class="CompProperties_Flickable"/>
      <li Class="CompProperties_Breakdownable"/>
      <li Class="CompProperties_HeatPusher">
        <compClass>CompHeatPusherPowered</compClass>
        <heatPerSecond>3</heatPerSecond>
      </li>
    </comps>
    <building>
      <isMealSource>true</isMealSource>
      <spawnedConceptLearnOpportunity>BillsTab</spawnedConceptLearnOpportunity>
      <heatPerTickWhileWorking>0.10</heatPerTickWhileWorking>
    </building>
    <designationHotKey>Misc8</designationHotKey>
    <placeWorkers>
      <li>PlaceWorker_PreventInteractionSpotOverlap</li>
    </placeWorkers>
    <researchPrerequisites>
      <li>Electricity</li>
    </researchPrerequisites>
  </ThingDef>

  <ThingDef ParentName="BenchBase">
    <defName>FueledStove</defName>
    <label>fueled stove</label>
    <description>A wood-fueled stove with an attached countertop for preparing meals.</description>
    <thingClass>Building_WorkTable_HeatPush</thingClass>
    <drawerType>MapMeshAndRealTime</drawerType>
    <graphicData>
      <texPath>Things/Building/Production/TableStoveFueled</texPath>
      <graphicClass>Graphic_Multi</graphicClass>
      <drawSize>(3.5,1.5)</drawSize>
      <damageData>
        <cornerTL>Damage/Corner</cornerTL>
        <cornerTR>Damage/Corner</cornerTR>
        <cornerBL>Damage/Corner</cornerBL>
        <cornerBR>Damage/Corner</cornerBR>
      </damageData>
    </graphicData>
    <castEdgeShadows>true</castEdgeShadows>
    <staticSunShadowHeight>0.20</staticSunShadowHeight>
    <constructEffect>ConstructMetal</constructEffect>
    <costList>
      <Steel>80</Steel>
    </costList>
    <altitudeLayer>Building</altitudeLayer>
    <fillPercent>0.5</fillPercent>
    <useHitPoints>True</useHitPoints>
    <statBases>
      <WorkToBuild>2000</WorkToBuild>
      <MaxHitPoints>180</MaxHitPoints>
      <Flammability>1.0</Flammability>
    </statBases>
    <size>(3,1)</size>
    <designationCategory>Production</designationCategory>
    <passability>PassThroughOnly</passability>
    <pathCost>50</pathCost>
    <hasInteractionCell>True</hasInteractionCell>
    <interactionCellOffset>(0,0,-1)</interactionCellOffset>
    <surfaceType>Item</surfaceType>
    <recipes>
      <li>CookMealSimple</li>
      <li>CookMealFine</li>
      <li>CookMealFine_Veg</li>
      <li>CookMealFine_Meat</li>
      <li>CookMealLavish</li>
      <li>CookMealLavish_Veg</li>
      <li>CookMealLavish_Meat</li>
      <li>CookMealSurvival</li>
      <li>CookMealSimpleBulk</li>
      <li>CookMealFineBulk</li>
      <li>CookMealFineBulk_Veg</li>
      <li>CookMealFineBulk_Meat</li>
      <li>CookMealLavishBulk</li>
      <li>CookMealLavishBulk_Veg</li>
      <li>CookMealLavishBulk_Meat</li>
      <li>CookMealSurvivalBulk</li>
      <li>Make_Pemmican</li>
      <li>Make_PemmicanBulk</li>
      <li>CookSuperRiceMeal</li>
    </recipes>
    <inspectorTabs>
      <li>ITab_Bills</li>
    </inspectorTabs>
    <comps>
      <li Class="CompProperties_Refuelable">
        <fuelConsumptionRate>160.0</fuelConsumptionRate>
        <fuelCapacity>50.0</fuelCapacity>
        <fuelFilter>
          <thingDefs>
            <li>WoodLog</li>
          </thingDefs>
        </fuelFilter>
        <consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
        <showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
      </li>
      <li Class="CompProperties_HeatPusher">
        <compClass>CompHeatPusherPowered</compClass>
        <heatPerSecond>4</heatPerSecond>
      </li>
    </comps>
    <placeWorkers>
      <li>PlaceWorker_PreventInteractionSpotOverlap</li>
    </placeWorkers>
    <building>
      <isMealSource>true</isMealSource>
      <spawnedConceptLearnOpportunity>BillsTab</spawnedConceptLearnOpportunity>
      <heatPerTickWhileWorking>0.10</heatPerTickWhileWorking>
    </building>
  </ThingDef>

</Defs>

4. 아이템효과

 Thoughts_Memory_Eating.xml

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

  <ThoughtDef>
    <defName>AteSuperRiceMeaSet</defName>
    <durationDays>7</durationDays>
    <stages>
      <li>
        <label>A</label>
        <description>B</description>
        <baseMoodEffect>20</baseMoodEffect>
      </li>
    </stages>
  </ThoughtDef>

</Defs>

 

이렇게 등록하고 나니 에러없이 깔끔하게 완성됬다.

*라벨과 설명을 한글로 하고싶어서 한글화 찾아보니까 Language / korean / keyed 에 <LanguageData> 추가하는것을 발견했는데 해보니까 적용이안된다... 쳇 =ㅅ= 왜안되는건지 모르겠으나 나중에 한글화 할수있으면 추가하겠음.

 

한글로 바꾸는걸 알아냈다.

모드 폴더안에 Languages/Korean/DefInjected 안에 넣었어야하는거였다. Keyed랑 DefInjected랑 다른거였음.

이안에 구조는 Defs랑 똑같이하고 안에 xml만 다르게 입력하는것으로 처리했다.

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

  <CookSuperRiceMeal.label>쌀밥 2.0</CookSuperRiceMeal.label>
  <CookSuperRiceMeal.description>영양만점 맛있는 식단.</CookSuperRiceMeal.description>
  <CookSuperRiceMeal.jobString>쿡후~ 밥하는 중~</CookSuperRiceMeal.jobString>

</LanguageData>

이런식으로 DefName를 기준으로 label, description, jobString 등을 한글로 넣어주면 된다.