暂存
This commit is contained in:
Binary file not shown.
@@ -1,83 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<Defs>
|
<Defs>
|
||||||
|
|
||||||
<ThingDef ParentName="BuildingBase">
|
|
||||||
<defName>ARANutrientDispenser</defName>
|
|
||||||
<label>阿拉克涅蜜晶巢穴</label>
|
|
||||||
<description>一个生产阿拉克涅蜜晶糕的虫虫巢穴。通过分解虫蜜来生产可食用的蜜晶糕。</description>
|
|
||||||
<thingClass>ArachnaeSwarm.Building_ARANutrientDispenser</thingClass>
|
|
||||||
<graphicData>
|
|
||||||
<texPath>Things/Building/Production/NutrientDispenser</texPath>
|
|
||||||
<graphicClass>Graphic_Multi</graphicClass>
|
|
||||||
<color>(232,255,191)</color>
|
|
||||||
<shaderType>CutoutComplex</shaderType>
|
|
||||||
<drawSize>(3,4)</drawSize>
|
|
||||||
<damageData>
|
|
||||||
<rect>(0.02,0.25,2.96,2.85)</rect>
|
|
||||||
<cornerTL>Damage/Corner</cornerTL>
|
|
||||||
<cornerTR>Damage/Corner</cornerTR>
|
|
||||||
</damageData>
|
|
||||||
<shadowData>
|
|
||||||
<volume>(2.87,0.75,3.05)</volume>
|
|
||||||
<offset>(0,0,0.38)</offset>
|
|
||||||
</shadowData>
|
|
||||||
</graphicData>
|
|
||||||
<altitudeLayer>Building</altitudeLayer>
|
|
||||||
<passability>Impassable</passability>
|
|
||||||
<pathCost>150</pathCost>
|
|
||||||
<fillPercent>1.0</fillPercent>
|
|
||||||
<statBases>
|
|
||||||
<MaxHitPoints>250</MaxHitPoints>
|
|
||||||
<WorkToBuild>2000</WorkToBuild>
|
|
||||||
<Flammability>0.5</Flammability>
|
|
||||||
</statBases>
|
|
||||||
<size>(3,4)</size>
|
|
||||||
<costList>
|
|
||||||
<ARA_Carapace>50</ARA_Carapace>
|
|
||||||
</costList>
|
|
||||||
<tickerType>Normal</tickerType>
|
|
||||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
|
||||||
<comps>
|
|
||||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
|
||||||
<fuelCapacity>10.0</fuelCapacity>
|
|
||||||
<fuelFilter>
|
|
||||||
<thingDefs>
|
|
||||||
<li>ARA_InsectJelly</li>
|
|
||||||
</thingDefs>
|
|
||||||
</fuelFilter>
|
|
||||||
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
|
||||||
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
|
||||||
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
|
||||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
|
||||||
</li>
|
|
||||||
<li Class="CompProperties_AffectedByFacilities">
|
|
||||||
<linkableFacilities>
|
|
||||||
<li>ARA_NutrientNetworkTower</li>
|
|
||||||
</linkableFacilities>
|
|
||||||
</li>
|
|
||||||
<!-- This component acts as a perpetual power source with no consumption, ensuring powerComp.PowerOn is always true -->
|
|
||||||
<li Class="CompProperties_Power">
|
|
||||||
<compClass>CompPowerPlant</compClass>
|
|
||||||
<basePowerConsumption>-1</basePowerConsumption> <!-- Negative value makes it a generator -->
|
|
||||||
<transmitsPower>false</transmitsPower> <!-- This is CRITICAL. It prevents the building from powering the whole grid. -->
|
|
||||||
</li>
|
|
||||||
</comps>
|
|
||||||
<modExtensions>
|
|
||||||
<li Class="ArachnaeSwarm.ARAFoodDispenserProperties">
|
|
||||||
<thingToDispense>ARA_NutrientPasteMeal</thingToDispense>
|
|
||||||
<nutritionCostPerDispense>1.25</nutritionCostPerDispense>
|
|
||||||
<soundDispense>DispensePaste</soundDispense>
|
|
||||||
</li>
|
|
||||||
</modExtensions>
|
|
||||||
<building>
|
|
||||||
<isMealSource>true</isMealSource>
|
|
||||||
</building>
|
|
||||||
<interactionCellOffset>(0,0,3)</interactionCellOffset>
|
|
||||||
<hasInteractionCell>true</hasInteractionCell>
|
|
||||||
<designationCategory>ARA_Buildings</designationCategory>
|
|
||||||
<researchPrerequisites>
|
|
||||||
<li>NutrientPaste</li>
|
|
||||||
</researchPrerequisites>
|
|
||||||
</ThingDef>
|
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
@@ -47,6 +47,8 @@
|
|||||||
<li>ARA_MorphableResearchBench</li>
|
<li>ARA_MorphableResearchBench</li>
|
||||||
<li>ARANutrientDispenser</li>
|
<li>ARANutrientDispenser</li>
|
||||||
<li>ARA_WormholePortal_A</li>
|
<li>ARA_WormholePortal_A</li>
|
||||||
|
<li>ARA_Acidling_AutoMortar</li>
|
||||||
|
<li>CatastropheMissileSilo</li>
|
||||||
</linkableBuildings>
|
</linkableBuildings>
|
||||||
<maxDistance>80</maxDistance> <!-- 供能范围 -->
|
<maxDistance>80</maxDistance> <!-- 供能范围 -->
|
||||||
<maxSimultaneous>10</maxSimultaneous>
|
<maxSimultaneous>10</maxSimultaneous>
|
||||||
@@ -63,6 +65,8 @@
|
|||||||
<li>ARA_MorphableResearchBench</li>
|
<li>ARA_MorphableResearchBench</li>
|
||||||
<li>ARANutrientDispenser</li>
|
<li>ARANutrientDispenser</li>
|
||||||
<li>ARA_WormholePortal_A</li>
|
<li>ARA_WormholePortal_A</li>
|
||||||
|
<li>ARA_Acidling_AutoMortar</li>
|
||||||
|
<li>CatastropheMissileSilo</li>
|
||||||
</linkableBuildings>
|
</linkableBuildings>
|
||||||
<maxDistance>80</maxDistance>
|
<maxDistance>80</maxDistance>
|
||||||
<lineTexturePath>ArachnaeSwarm/Building/Nutrition_Pie</lineTexturePath>
|
<lineTexturePath>ArachnaeSwarm/Building/Nutrition_Pie</lineTexturePath>
|
||||||
@@ -392,7 +396,7 @@
|
|||||||
<li>Corpses</li>
|
<li>Corpses</li>
|
||||||
</categories>
|
</categories>
|
||||||
</fuelFilter>
|
</fuelFilter>
|
||||||
<fuelCapacity>50</fuelCapacity>
|
<fuelCapacity>25</fuelCapacity>
|
||||||
<fuelConsumptionRate>25</fuelConsumptionRate>
|
<fuelConsumptionRate>25</fuelConsumptionRate>
|
||||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||||
</li>
|
</li>
|
||||||
@@ -463,7 +467,7 @@
|
|||||||
<comps>
|
<comps>
|
||||||
<!-- 1. 作为消费者,自己也需要燃料 -->
|
<!-- 1. 作为消费者,自己也需要燃料 -->
|
||||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||||
<fuelCapacity>10.0</fuelCapacity>
|
<fuelCapacity>5.0</fuelCapacity>
|
||||||
<fuelFilter>
|
<fuelFilter>
|
||||||
<thingDefs>
|
<thingDefs>
|
||||||
<li>ARA_InsectJelly</li>
|
<li>ARA_InsectJelly</li>
|
||||||
@@ -482,7 +486,7 @@
|
|||||||
<li>ARA_BioforgeIncubator_Thing</li>
|
<li>ARA_BioforgeIncubator_Thing</li>
|
||||||
</linkableBuildings>
|
</linkableBuildings>
|
||||||
<maxSimultaneous>10</maxSimultaneous>
|
<maxSimultaneous>10</maxSimultaneous>
|
||||||
<maxDistance>20</maxDistance>
|
<maxDistance>20</maxDistance>
|
||||||
<statOffsets>
|
<statOffsets>
|
||||||
<NutrientTransmissionEfficiency>0.05</NutrientTransmissionEfficiency>
|
<NutrientTransmissionEfficiency>0.05</NutrientTransmissionEfficiency>
|
||||||
<ARA_IncubationSpeedFactor>0.1</ARA_IncubationSpeedFactor>
|
<ARA_IncubationSpeedFactor>0.1</ARA_IncubationSpeedFactor>
|
||||||
@@ -506,4 +510,83 @@
|
|||||||
</modExtensions>
|
</modExtensions>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="BuildingBase">
|
||||||
|
<defName>ARANutrientDispenser</defName>
|
||||||
|
<label>阿拉克涅蜜晶巢穴</label>
|
||||||
|
<description>一个生产阿拉克涅蜜晶糕的虫虫巢穴。通过分解虫蜜来生产可食用的蜜晶糕。</description>
|
||||||
|
<thingClass>ArachnaeSwarm.Building_ARANutrientDispenser</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Building/Production/NutrientDispenser</texPath>
|
||||||
|
<graphicClass>Graphic_Multi</graphicClass>
|
||||||
|
<color>(232,255,191)</color>
|
||||||
|
<shaderType>CutoutComplex</shaderType>
|
||||||
|
<drawSize>(3,4)</drawSize>
|
||||||
|
<damageData>
|
||||||
|
<rect>(0.02,0.25,2.96,2.85)</rect>
|
||||||
|
<cornerTL>Damage/Corner</cornerTL>
|
||||||
|
<cornerTR>Damage/Corner</cornerTR>
|
||||||
|
</damageData>
|
||||||
|
<shadowData>
|
||||||
|
<volume>(2.87,0.75,3.05)</volume>
|
||||||
|
<offset>(0,0,0.38)</offset>
|
||||||
|
</shadowData>
|
||||||
|
</graphicData>
|
||||||
|
<altitudeLayer>Building</altitudeLayer>
|
||||||
|
<passability>Impassable</passability>
|
||||||
|
<pathCost>150</pathCost>
|
||||||
|
<fillPercent>1.0</fillPercent>
|
||||||
|
<statBases>
|
||||||
|
<MaxHitPoints>250</MaxHitPoints>
|
||||||
|
<WorkToBuild>2000</WorkToBuild>
|
||||||
|
<Flammability>0.5</Flammability>
|
||||||
|
</statBases>
|
||||||
|
<size>(3,4)</size>
|
||||||
|
<costList>
|
||||||
|
<ARA_Carapace>50</ARA_Carapace>
|
||||||
|
</costList>
|
||||||
|
<tickerType>Normal</tickerType>
|
||||||
|
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||||
|
<comps>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||||
|
<fuelCapacity>10.0</fuelCapacity>
|
||||||
|
<fuelFilter>
|
||||||
|
<thingDefs>
|
||||||
|
<li>ARA_InsectJelly</li>
|
||||||
|
</thingDefs>
|
||||||
|
</fuelFilter>
|
||||||
|
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||||
|
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||||
|
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||||
|
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||||
|
</li>
|
||||||
|
<li Class="CompProperties_AffectedByFacilities">
|
||||||
|
<linkableFacilities>
|
||||||
|
<li>ARA_NutrientNetworkTower</li>
|
||||||
|
</linkableFacilities>
|
||||||
|
</li>
|
||||||
|
<!-- This component acts as a perpetual power source with no consumption, ensuring powerComp.PowerOn is always true -->
|
||||||
|
<li Class="CompProperties_Power">
|
||||||
|
<compClass>CompPowerPlant</compClass>
|
||||||
|
<basePowerConsumption>-1</basePowerConsumption> <!-- Negative value makes it a generator -->
|
||||||
|
<transmitsPower>false</transmitsPower> <!-- This is CRITICAL. It prevents the building from powering the whole grid. -->
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="ArachnaeSwarm.ARAFoodDispenserProperties">
|
||||||
|
<thingToDispense>ARA_NutrientPasteMeal</thingToDispense>
|
||||||
|
<nutritionCostPerDispense>1.25</nutritionCostPerDispense>
|
||||||
|
<soundDispense>DispensePaste</soundDispense>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
<building>
|
||||||
|
<isMealSource>true</isMealSource>
|
||||||
|
</building>
|
||||||
|
<interactionCellOffset>(0,0,3)</interactionCellOffset>
|
||||||
|
<hasInteractionCell>true</hasInteractionCell>
|
||||||
|
<designationCategory>ARA_Buildings</designationCategory>
|
||||||
|
<researchPrerequisites>
|
||||||
|
<li>NutrientPaste</li>
|
||||||
|
</researchPrerequisites>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
</Defs>
|
</Defs>
|
||||||
@@ -1,6 +1,158 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Defs>
|
<Defs>
|
||||||
<ThingDef ParentName="BuildingBase">
|
<!-- Auto mortar -->
|
||||||
|
|
||||||
|
<ThingDef ParentName="BuildingBase">
|
||||||
|
<defName>ARA_Acidling_AutoMortar</defName>
|
||||||
|
<label>酸爆种投射巢</label>
|
||||||
|
<description>一个投射酸爆种的巢穴.</description>
|
||||||
|
<thingClass>Building_TurretGun</thingClass>
|
||||||
|
<drawerType>MapMeshAndRealTime</drawerType>
|
||||||
|
<drawHighlight>true</drawHighlight>
|
||||||
|
<drawHighlightOnlyForHostile>true</drawHighlightOnlyForHostile>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>ArachnaeSwarm/Building/ARA_CatastropheMissileSilo_Base</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
<drawSize>(3,3)</drawSize>
|
||||||
|
<drawOffset>(0,0,-0.1)</drawOffset>
|
||||||
|
<shadowData>
|
||||||
|
<offset>(-0.13,-0.87,-0.1)</offset>
|
||||||
|
<volume>(0.5,0.4,1.05)</volume>
|
||||||
|
</shadowData>
|
||||||
|
</graphicData>
|
||||||
|
<receivesSignals>true</receivesSignals>
|
||||||
|
<altitudeLayer>Building</altitudeLayer>
|
||||||
|
<stealable>false</stealable>
|
||||||
|
<size>(3,3)</size>
|
||||||
|
<passability>PassThroughOnly</passability>
|
||||||
|
<pathCost>50</pathCost>
|
||||||
|
<fillPercent>0.4</fillPercent>
|
||||||
|
<tickerType>Normal</tickerType>
|
||||||
|
<terrainAffordanceNeeded>Heavy</terrainAffordanceNeeded>
|
||||||
|
<comps>
|
||||||
|
<li Class="CompProperties_Forbiddable"/>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||||
|
<fuelCapacity>5.0</fuelCapacity>
|
||||||
|
<fuelFilter>
|
||||||
|
<thingDefs>
|
||||||
|
<li>ARA_InsectJelly</li>
|
||||||
|
</thingDefs>
|
||||||
|
</fuelFilter>
|
||||||
|
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||||
|
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||||
|
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||||
|
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||||
|
</li>
|
||||||
|
<li Class="CompProperties_Refuelable">
|
||||||
|
<fuelLabel>弹药</fuelLabel>
|
||||||
|
<fuelGizmoLabel>弹药</fuelGizmoLabel>
|
||||||
|
<outOfFuelMessage>缺少弹药</outOfFuelMessage>
|
||||||
|
<fuelFilter>
|
||||||
|
</fuelFilter>
|
||||||
|
<fuelCapacity>30</fuelCapacity>
|
||||||
|
<initialFuelPercent>0</initialFuelPercent>
|
||||||
|
<autoRefuelPercent>1</autoRefuelPercent>
|
||||||
|
<showFuelGizmo>true</showFuelGizmo>
|
||||||
|
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_NutritionToFuelConverter">
|
||||||
|
<checkInterval>300</checkInterval>
|
||||||
|
<nutritionCost>0.5</nutritionCost>
|
||||||
|
<workAmount>600</workAmount>
|
||||||
|
<fuelAmount>1</fuelAmount>
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_ForceTargetable" />
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_DelayedTerrainSpawn">
|
||||||
|
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||||
|
<spawnRadius>6</spawnRadius>
|
||||||
|
</li>
|
||||||
|
<li Class="CompProperties_AffectedByFacilities">
|
||||||
|
<linkableFacilities>
|
||||||
|
<li>ARA_NutrientNetworkTower</li>
|
||||||
|
</linkableFacilities>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
<statBases>
|
||||||
|
<MaxHitPoints>260</MaxHitPoints>
|
||||||
|
<Flammability>0</Flammability>
|
||||||
|
<Mass>30</Mass>
|
||||||
|
<ShootingAccuracyTurret>0.9</ShootingAccuracyTurret>
|
||||||
|
<Beauty>-20</Beauty>
|
||||||
|
</statBases>
|
||||||
|
<damageMultipliers>
|
||||||
|
<li>
|
||||||
|
<damageDef>Flame</damageDef>
|
||||||
|
<multiplier>0</multiplier>
|
||||||
|
</li>
|
||||||
|
</damageMultipliers>
|
||||||
|
<generateCommonality>4</generateCommonality> <!-- generate more often than other problem causers for mech clusters -->
|
||||||
|
<building>
|
||||||
|
<buildingTags>
|
||||||
|
<li>Artillery</li>
|
||||||
|
</buildingTags>
|
||||||
|
<turretGunDef>ARA_Acidling_Artillery_AutoMortar</turretGunDef>
|
||||||
|
<turretBurstWarmupTime>10.0</turretBurstWarmupTime>
|
||||||
|
<turretTopDrawSize>3.0</turretTopDrawSize>
|
||||||
|
</building>
|
||||||
|
<designationCategory>ARA_Buildings</designationCategory>
|
||||||
|
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||||
|
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="BaseArtilleryWeapon">
|
||||||
|
<defName>ARA_Acidling_Artillery_AutoMortar</defName>
|
||||||
|
<label>酸爆种投射巢</label>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>ArachnaeSwarm/Building/ARA_Turret</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<uiIconScale>1.25</uiIconScale>
|
||||||
|
<weaponTags>
|
||||||
|
<li>Artillery_BaseDestroyer</li>
|
||||||
|
</weaponTags>
|
||||||
|
<verbs>
|
||||||
|
<li>
|
||||||
|
<verbClass>ArachnaeSwarm.Verb_ShootConsumeNutrition</verbClass>
|
||||||
|
<defaultProjectile>ArachnaeBase_Race_Acidling_Proj</defaultProjectile>
|
||||||
|
<forcedMissRadius>10</forcedMissRadius>
|
||||||
|
<ai_AvoidFriendlyFireRadius>3</ai_AvoidFriendlyFireRadius>
|
||||||
|
<warmupTime>2</warmupTime>
|
||||||
|
<range>500</range>
|
||||||
|
<burstShotCount>3</burstShotCount>
|
||||||
|
<ticksBetweenBurstShots>16</ticksBetweenBurstShots>
|
||||||
|
<soundCast>Mortar_LaunchA</soundCast>
|
||||||
|
<soundCastTail>GunTail_Light</soundCastTail>
|
||||||
|
<muzzleFlashScale>16</muzzleFlashScale>
|
||||||
|
<requireLineOfSight>false</requireLineOfSight>
|
||||||
|
<consumeFuelPerShot>0.5</consumeFuelPerShot>
|
||||||
|
<targetParams>
|
||||||
|
<canTargetLocations>true</canTargetLocations>
|
||||||
|
</targetParams>
|
||||||
|
</li>
|
||||||
|
</verbs>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="BaseGrenadeProjectile">
|
||||||
|
<defName>ArachnaeBase_Race_Acidling_Proj</defName>
|
||||||
|
<label>阿拉克涅酸爆种</label>
|
||||||
|
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
|
||||||
|
<uiIconPath>Wula/Things/WULA_Attack_Cat/WULA_Cat_Thin_south</uiIconPath>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Pawn/Animal/Spelopede/Spelopede</texPath>
|
||||||
|
<graphicClass>Graphic_Multi</graphicClass>
|
||||||
|
</graphicData>
|
||||||
|
<projectile>
|
||||||
|
<speed>41</speed>
|
||||||
|
<spawnsPawnKind>ArachnaeBase_Race_Acidling</spawnsPawnKind>
|
||||||
|
<tryAdjacentFreeSpaces>true</tryAdjacentFreeSpaces>
|
||||||
|
<damageDef>ARA_AcidBurn</damageDef>
|
||||||
|
<damageAmountBase>10</damageAmountBase>
|
||||||
|
<flyOverhead>true</flyOverhead>
|
||||||
|
<soundAmbient>MortarRound_Ambient</soundAmbient>
|
||||||
|
</projectile>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="BuildingBase">
|
||||||
<defName>CatastropheMissileSilo</defName>
|
<defName>CatastropheMissileSilo</defName>
|
||||||
<label>天灾酸烧炮组织</label>
|
<label>天灾酸烧炮组织</label>
|
||||||
<description>阿拉克涅虫族所进化出的终极生物武器之一。它由大量没有自主意识的高度特化器官共同构成,骇人的酸烧炮可以发射令生灵闻风丧胆的天灾酸烧导弹。作为复合型防御系统,它既可以向本地的目标发射导弹,也可以向远处的威胁实施精确打击。</description>
|
<description>阿拉克涅虫族所进化出的终极生物武器之一。它由大量没有自主意识的高度特化器官共同构成,骇人的酸烧炮可以发射令生灵闻风丧胆的天灾酸烧导弹。作为复合型防御系统,它既可以向本地的目标发射导弹,也可以向远处的威胁实施精确打击。</description>
|
||||||
@@ -10,7 +162,7 @@
|
|||||||
<texPath>ArachnaeSwarm/Building/ARA_CatastropheMissileSilo_Base</texPath>
|
<texPath>ArachnaeSwarm/Building/ARA_CatastropheMissileSilo_Base</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
<drawSize>(5,5)</drawSize>
|
<drawSize>(5,5)</drawSize>
|
||||||
<drawOffset>(0,0,-0.1)</drawOffset>
|
<drawOffset>(0,0,0.5)</drawOffset>
|
||||||
<shadowData>
|
<shadowData>
|
||||||
<volume>(1.5,0.35,1.4)</volume>
|
<volume>(1.5,0.35,1.4)</volume>
|
||||||
<offset>(0,0,-0.05)</offset>
|
<offset>(0,0,-0.05)</offset>
|
||||||
@@ -30,6 +182,18 @@
|
|||||||
</statBases>
|
</statBases>
|
||||||
<tickerType>Normal</tickerType>
|
<tickerType>Normal</tickerType>
|
||||||
<comps>
|
<comps>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||||
|
<fuelCapacity>5.0</fuelCapacity>
|
||||||
|
<fuelFilter>
|
||||||
|
<thingDefs>
|
||||||
|
<li>ARA_InsectJelly</li>
|
||||||
|
</thingDefs>
|
||||||
|
</fuelFilter>
|
||||||
|
<fuelGizmoLabel>虫蜜</fuelGizmoLabel>
|
||||||
|
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
|
||||||
|
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
|
||||||
|
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||||
|
</li>
|
||||||
<li Class="CompProperties_Refuelable">
|
<li Class="CompProperties_Refuelable">
|
||||||
<fuelLabel>导弹</fuelLabel>
|
<fuelLabel>导弹</fuelLabel>
|
||||||
<fuelGizmoLabel>导弹</fuelGizmoLabel>
|
<fuelGizmoLabel>导弹</fuelGizmoLabel>
|
||||||
@@ -45,6 +209,12 @@
|
|||||||
<showFuelGizmo>true</showFuelGizmo>
|
<showFuelGizmo>true</showFuelGizmo>
|
||||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||||
</li>
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_NutritionToFuelConverter">
|
||||||
|
<checkInterval>300</checkInterval>
|
||||||
|
<nutritionCost>20</nutritionCost>
|
||||||
|
<workAmount>6000</workAmount>
|
||||||
|
<fuelAmount>1</fuelAmount>
|
||||||
|
</li>
|
||||||
<li Class="CompProperties_Forbiddable"/>
|
<li Class="CompProperties_Forbiddable"/>
|
||||||
<li Class="CompProperties_Breakdownable"/>
|
<li Class="CompProperties_Breakdownable"/>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_ForceTargetable" />
|
<li Class="ArachnaeSwarm.CompProperties_ForceTargetable" />
|
||||||
@@ -52,19 +222,28 @@
|
|||||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||||
<spawnRadius>8</spawnRadius>
|
<spawnRadius>8</spawnRadius>
|
||||||
</li>
|
</li>
|
||||||
|
<li Class="CompProperties_AffectedByFacilities">
|
||||||
|
<linkableFacilities>
|
||||||
|
<li>ARA_NutrientNetworkTower</li>
|
||||||
|
</linkableFacilities>
|
||||||
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
<building>
|
<building>
|
||||||
<turretGunDef>CatastropheMissile_Weapon</turretGunDef>
|
<turretGunDef>CatastropheMissile_Weapon</turretGunDef>
|
||||||
<turretBurstCooldownTime>15.0</turretBurstCooldownTime>
|
<turretBurstCooldownTime>15.0</turretBurstCooldownTime>
|
||||||
<turretTopDrawSize>5.0</turretTopDrawSize>
|
<turretTopDrawSize>7.0</turretTopDrawSize>
|
||||||
|
<turretTopOffset>(0,1.2)</turretTopOffset>
|
||||||
<buildingTags>
|
<buildingTags>
|
||||||
<li>Artillery</li>
|
<li>Artillery</li>
|
||||||
</buildingTags>
|
</buildingTags>
|
||||||
</building>
|
</building>
|
||||||
|
<costList>
|
||||||
|
<ARA_Carapace>50</ARA_Carapace>
|
||||||
|
</costList>
|
||||||
<designationCategory>ARA_Buildings</designationCategory>
|
<designationCategory>ARA_Buildings</designationCategory>
|
||||||
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
|
<constructionSkillPrerequisite>12</constructionSkillPrerequisite>
|
||||||
|
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||||
<researchPrerequisites>
|
<researchPrerequisites>
|
||||||
<li>ShipbuildingBasics</li>
|
|
||||||
</researchPrerequisites>
|
</researchPrerequisites>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="BaseArtilleryWeapon">
|
<ThingDef ParentName="BaseArtilleryWeapon">
|
||||||
@@ -118,7 +297,7 @@
|
|||||||
<explosiveRadius>10.9</explosiveRadius>
|
<explosiveRadius>10.9</explosiveRadius>
|
||||||
<postExplosionSpawnThingDef>ARA_Filth_SpentAcid</postExplosionSpawnThingDef>
|
<postExplosionSpawnThingDef>ARA_Filth_SpentAcid</postExplosionSpawnThingDef>
|
||||||
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
||||||
<postExplosionSpawnThingCount>2</postExplosionSpawnThingCount>
|
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount>
|
||||||
<wickTicks>30~60</wickTicks>
|
<wickTicks>30~60</wickTicks>
|
||||||
<explosionSound>MortarBomb_Explode</explosionSound>
|
<explosionSound>MortarBomb_Explode</explosionSound>
|
||||||
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
||||||
@@ -144,7 +323,7 @@
|
|||||||
<speed>80</speed>
|
<speed>80</speed>
|
||||||
<flyOverhead>true</flyOverhead>
|
<flyOverhead>true</flyOverhead>
|
||||||
<filth>ARA_Filth_SpentAcid</filth>
|
<filth>ARA_Filth_SpentAcid</filth>
|
||||||
<filthCount>2</filthCount>
|
<filthCount>1</filthCount>
|
||||||
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
||||||
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
|
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
|
||||||
<doExplosionVFX>false</doExplosionVFX>
|
<doExplosionVFX>false</doExplosionVFX>
|
||||||
@@ -182,6 +361,46 @@
|
|||||||
</comps>
|
</comps>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
|
||||||
|
<ThingDef ParentName="BaseBullet">
|
||||||
|
<defName>Projectile_CatastropheMissile_Fake</defName>
|
||||||
|
<label>“天灾”巡航导弹</label>
|
||||||
|
<thingClass>ArachnaeSwarm.Projectile_CruiseMissile</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
|
||||||
|
<texPath>Things/Projectile/FleshmassSpitterProjectileSheet</texPath>
|
||||||
|
<drawSize>(3,3)</drawSize>
|
||||||
|
<shaderType>MoteGlow</shaderType>
|
||||||
|
</graphicData>
|
||||||
|
<projectile>
|
||||||
|
<useGraphicClass>True</useGraphicClass>
|
||||||
|
<shadowSize>1</shadowSize>
|
||||||
|
<damageDef>ARA_AcidBurn</damageDef>
|
||||||
|
<damageAmountBase>0</damageAmountBase>
|
||||||
|
<speed>80</speed>
|
||||||
|
<flyOverhead>true</flyOverhead>
|
||||||
|
</projectile>
|
||||||
|
<modExtensions>
|
||||||
|
<li Class="ArachnaeSwarm.CruiseMissileProperties">
|
||||||
|
<isDummy>true</isDummy>
|
||||||
|
<useSubExplosions>false</useSubExplosions>
|
||||||
|
<bezierArcHeightFactor>0.01</bezierArcHeightFactor>
|
||||||
|
<bezierMinArcHeight>1</bezierMinArcHeight>
|
||||||
|
<bezierMaxArcHeight>5</bezierMaxArcHeight>
|
||||||
|
<bezierHorizontalOffsetFactor>0.05</bezierHorizontalOffsetFactor>
|
||||||
|
<bezierSideOffsetFactor>0.05</bezierSideOffsetFactor>
|
||||||
|
<bezierRandomOffsetScale>1.5</bezierRandomOffsetScale>
|
||||||
|
</li>
|
||||||
|
</modExtensions>
|
||||||
|
<comps>
|
||||||
|
<li Class="CompProperties_ProjectileEffecter">
|
||||||
|
<effecterDef>Shell_AcidSpitStream</effecterDef>
|
||||||
|
</li>
|
||||||
|
<li Class="CompProperties_ProjectileEffecter">
|
||||||
|
<effecterDef>Shell_AcidSpitLaunched</effecterDef>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
<ThingDef ParentName="BaseFilth">
|
<ThingDef ParentName="BaseFilth">
|
||||||
<defName>ARA_Filth_SpentAcid</defName>
|
<defName>ARA_Filth_SpentAcid</defName>
|
||||||
<label>阿拉克涅残酸</label>
|
<label>阿拉克涅残酸</label>
|
||||||
@@ -198,7 +417,7 @@
|
|||||||
</graphicData>
|
</graphicData>
|
||||||
<filth>
|
<filth>
|
||||||
<ignoreFilthMultiplierStat>true</ignoreFilthMultiplierStat>
|
<ignoreFilthMultiplierStat>true</ignoreFilthMultiplierStat>
|
||||||
<disappearsInDays>1~3</disappearsInDays>
|
<disappearsInDays>0.5~1</disappearsInDays>
|
||||||
<rainWashes>true</rainWashes>
|
<rainWashes>true</rainWashes>
|
||||||
<cleaningWorkToReduceThickness>70</cleaningWorkToReduceThickness>
|
<cleaningWorkToReduceThickness>70</cleaningWorkToReduceThickness>
|
||||||
<canFilthAttach>true</canFilthAttach>
|
<canFilthAttach>true</canFilthAttach>
|
||||||
@@ -257,45 +476,5 @@
|
|||||||
</li>
|
</li>
|
||||||
</children>
|
</children>
|
||||||
</EffecterDef>
|
</EffecterDef>
|
||||||
|
|
||||||
<ThingDef ParentName="BaseBullet">
|
</Defs>
|
||||||
<defName>Projectile_CatastropheMissile_Fake</defName>
|
|
||||||
<label>“天灾”巡航导弹</label>
|
|
||||||
<thingClass>ArachnaeSwarm.Projectile_CruiseMissile</thingClass>
|
|
||||||
<graphicData>
|
|
||||||
<graphicClass>Graphic_Single_AgeSecs</graphicClass>
|
|
||||||
<texPath>Things/Projectile/FleshmassSpitterProjectileSheet</texPath>
|
|
||||||
<drawSize>(3,3)</drawSize>
|
|
||||||
<shaderType>MoteGlow</shaderType>
|
|
||||||
</graphicData>
|
|
||||||
<projectile>
|
|
||||||
<useGraphicClass>True</useGraphicClass>
|
|
||||||
<shadowSize>1</shadowSize>
|
|
||||||
<damageDef>ARA_AcidBurn</damageDef>
|
|
||||||
<damageAmountBase>0</damageAmountBase>
|
|
||||||
<speed>80</speed>
|
|
||||||
<flyOverhead>true</flyOverhead>
|
|
||||||
</projectile>
|
|
||||||
<modExtensions>
|
|
||||||
<li Class="ArachnaeSwarm.CruiseMissileProperties">
|
|
||||||
<isDummy>true</isDummy>
|
|
||||||
<useSubExplosions>false</useSubExplosions>
|
|
||||||
<bezierArcHeightFactor>0.01</bezierArcHeightFactor>
|
|
||||||
<bezierMinArcHeight>1</bezierMinArcHeight>
|
|
||||||
<bezierMaxArcHeight>5</bezierMaxArcHeight>
|
|
||||||
<bezierHorizontalOffsetFactor>0.05</bezierHorizontalOffsetFactor>
|
|
||||||
<bezierSideOffsetFactor>0.05</bezierSideOffsetFactor>
|
|
||||||
<bezierRandomOffsetScale>1.5</bezierRandomOffsetScale>
|
|
||||||
</li>
|
|
||||||
</modExtensions>
|
|
||||||
<comps>
|
|
||||||
<li Class="CompProperties_ProjectileEffecter">
|
|
||||||
<effecterDef>Shell_AcidSpitStream</effecterDef>
|
|
||||||
</li>
|
|
||||||
<li Class="CompProperties_ProjectileEffecter">
|
|
||||||
<effecterDef>Shell_AcidSpitLaunched</effecterDef>
|
|
||||||
</li>
|
|
||||||
</comps>
|
|
||||||
</ThingDef>
|
|
||||||
|
|
||||||
</Defs>
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<LanguageData>
|
||||||
|
|
||||||
|
<!-- CompNutritionToFuelConverter -->
|
||||||
|
<ARA_NutritionConverter_ErrorMissingComps>错误:缺少组件</ARA_NutritionConverter_ErrorMissingComps>
|
||||||
|
|
||||||
|
<ARA_NutritionConverter_StatusLabel>状态</ARA_NutritionConverter_StatusLabel>
|
||||||
|
<ARA_NutritionConverter_NextConversionLabel>下次转换</ARA_NutritionConverter_NextConversionLabel>
|
||||||
|
|
||||||
|
<ARA_NutritionConverter_State_NoNutrition>缺少营养</ARA_NutritionConverter_State_NoNutrition>
|
||||||
|
<ARA_NutritionConverter_State_TankFull>弹药已满</ARA_NutritionConverter_State_TankFull>
|
||||||
|
<ARA_NutritionConverter_State_Converting>组装中</ARA_NutritionConverter_State_Converting>
|
||||||
|
|
||||||
|
<!-- New keys for two-stage process -->
|
||||||
|
<ARA_NutritionConverter_Gathering>装填中: {0} / {1}</ARA_NutritionConverter_Gathering>
|
||||||
|
<ARA_NutritionConverter_Working>组装中: {0} / {1}</ARA_NutritionConverter_Working>
|
||||||
|
|
||||||
|
</LanguageData>
|
||||||
BIN
Content/Textures/ArachnaeSwarm/Building/ARA_Turret.png
Normal file
BIN
Content/Textures/ArachnaeSwarm/Building/ARA_Turret.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
@@ -128,6 +128,7 @@
|
|||||||
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\CompRefuelableWithKey.cs" />
|
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\CompRefuelableWithKey.cs" />
|
||||||
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\IFuelSource.cs" />
|
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\IFuelSource.cs" />
|
||||||
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\Patch_CompRefuelableWithKey.cs" />
|
<Compile Include="Building_Comps\WULA_MutiFuelSpawner\Patch_CompRefuelableWithKey.cs" />
|
||||||
|
<Compile Include="Building_Comps\CompNutritionToFuelConverter.cs" />
|
||||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\Hediff_ConfigurableMutant.cs" />
|
<Compile Include="Hediffs\ARA_ConfigurableMutant\Hediff_ConfigurableMutant.cs" />
|
||||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\Hediff_NecroticVirus_Configurable.cs" />
|
<Compile Include="Hediffs\ARA_ConfigurableMutant\Hediff_NecroticVirus_Configurable.cs" />
|
||||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\HediffComp_NecroticTransformation.cs" />
|
<Compile Include="Hediffs\ARA_ConfigurableMutant\HediffComp_NecroticTransformation.cs" />
|
||||||
@@ -203,6 +204,7 @@
|
|||||||
<Compile Include="Verbs\Verb_ShootArc.cs" />
|
<Compile Include="Verbs\Verb_ShootArc.cs" />
|
||||||
<Compile Include="Verbs\Verb_ShootMeltBeam.cs" />
|
<Compile Include="Verbs\Verb_ShootMeltBeam.cs" />
|
||||||
<Compile Include="Verbs\Verb_ShootShotgun.cs" />
|
<Compile Include="Verbs\Verb_ShootShotgun.cs" />
|
||||||
|
<Compile Include="Verbs\Verb_ShootConsumeNutrition.cs" />
|
||||||
<Compile Include="Verbs\VerbProperties_Excalibur.cs" />
|
<Compile Include="Verbs\VerbProperties_Excalibur.cs" />
|
||||||
<Compile Include="Verbs\Verb_ShootSprayMulti.cs" />
|
<Compile Include="Verbs\Verb_ShootSprayMulti.cs" />
|
||||||
<Compile Include="Verbs\WeaponStealBeam\Verb_ShootWeaponStealBeam.cs" />
|
<Compile Include="Verbs\WeaponStealBeam\Verb_ShootWeaponStealBeam.cs" />
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ namespace ArachnaeSwarm
|
|||||||
|
|
||||||
public override string CompInspectStringExtra()
|
public override string CompInspectStringExtra()
|
||||||
{
|
{
|
||||||
string text = Props.FuelLabel + ": " + Fuel.ToStringDecimalIfSmall() + " / " + Props.fuelCapacity.ToStringDecimalIfSmall();
|
string fuelLabel = string.IsNullOrEmpty(Props.FuelLabel) ? "Nutrition" : Props.FuelLabel;
|
||||||
|
string text = fuelLabel + ": " + Fuel.ToStringDecimalIfSmall() + " / " + Props.fuelCapacity.ToStringDecimalIfSmall();
|
||||||
|
|
||||||
if (currentConsumptionRate > 0f && HasFuel)
|
if (currentConsumptionRate > 0f && HasFuel)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,125 @@
|
|||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace ArachnaeSwarm
|
||||||
|
{
|
||||||
|
public class CompProperties_NutritionToFuelConverter : CompProperties
|
||||||
|
{
|
||||||
|
public int checkInterval = 240;
|
||||||
|
public float nutritionCost = 20f;
|
||||||
|
public int workAmount = 6000;
|
||||||
|
public float fuelAmount = 1f;
|
||||||
|
|
||||||
|
public CompProperties_NutritionToFuelConverter()
|
||||||
|
{
|
||||||
|
compClass = typeof(CompNutritionToFuelConverter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CompNutritionToFuelConverter : ThingComp
|
||||||
|
{
|
||||||
|
private CompRefuelableNutrition nutritionComp;
|
||||||
|
private CompRefuelable fuelComp;
|
||||||
|
|
||||||
|
public float nutritionProgress = 0f;
|
||||||
|
public float workProgress = 0f;
|
||||||
|
|
||||||
|
private CompProperties_NutritionToFuelConverter Props => (CompProperties_NutritionToFuelConverter)props;
|
||||||
|
|
||||||
|
public override void PostSpawnSetup(bool respawningAfterLoad)
|
||||||
|
{
|
||||||
|
base.PostSpawnSetup(respawningAfterLoad);
|
||||||
|
nutritionComp = parent.GetComp<CompRefuelableNutrition>();
|
||||||
|
fuelComp = parent.GetComp<CompRefuelable>();
|
||||||
|
|
||||||
|
if (nutritionComp == null)
|
||||||
|
{
|
||||||
|
Log.Error($"[ArachnaeSwarm] {parent.def.defName} has CompNutritionToFuelConverter but no CompRefuelableNutrition.");
|
||||||
|
}
|
||||||
|
if (fuelComp == null)
|
||||||
|
{
|
||||||
|
Log.Error($"[ArachnaeSwarm] {parent.def.defName} has CompNutritionToFuelConverter but no CompRefuelable.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void PostExposeData()
|
||||||
|
{
|
||||||
|
base.PostExposeData();
|
||||||
|
Scribe_Values.Look(ref nutritionProgress, "nutritionProgress", 0f);
|
||||||
|
Scribe_Values.Look(ref workProgress, "workProgress", 0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void CompTick()
|
||||||
|
{
|
||||||
|
base.CompTick();
|
||||||
|
if (parent.IsHashIntervalTick(Props.checkInterval))
|
||||||
|
{
|
||||||
|
TryProcess();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TryProcess()
|
||||||
|
{
|
||||||
|
if (fuelComp == null || fuelComp.IsFull)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stage 1: Gather nutrition
|
||||||
|
if (nutritionProgress < Props.nutritionCost)
|
||||||
|
{
|
||||||
|
if (nutritionComp != null && nutritionComp.Fuel > 0)
|
||||||
|
{
|
||||||
|
float needed = Props.nutritionCost - nutritionProgress;
|
||||||
|
float canTake = System.Math.Min(needed, nutritionComp.Fuel);
|
||||||
|
nutritionComp.ConsumeFuel(canTake);
|
||||||
|
nutritionProgress += canTake;
|
||||||
|
}
|
||||||
|
// Reset work progress if we are still gathering nutrition
|
||||||
|
workProgress = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stage 2: Process work
|
||||||
|
workProgress += Props.checkInterval;
|
||||||
|
|
||||||
|
// Stage 3: Finish crafting
|
||||||
|
if (workProgress >= Props.workAmount)
|
||||||
|
{
|
||||||
|
int unitsToCraft = (int)(workProgress / Props.workAmount);
|
||||||
|
float totalFuel = unitsToCraft * Props.fuelAmount;
|
||||||
|
float spaceInTank = fuelComp.Props.fuelCapacity - fuelComp.Fuel;
|
||||||
|
|
||||||
|
if (totalFuel > spaceInTank)
|
||||||
|
{
|
||||||
|
totalFuel = spaceInTank;
|
||||||
|
unitsToCraft = (int)(totalFuel / Props.fuelAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unitsToCraft > 0)
|
||||||
|
{
|
||||||
|
fuelComp.Refuel(unitsToCraft * Props.fuelAmount);
|
||||||
|
nutritionProgress -= unitsToCraft * Props.nutritionCost;
|
||||||
|
workProgress -= unitsToCraft * Props.workAmount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string CompInspectStringExtra()
|
||||||
|
{
|
||||||
|
if (fuelComp == null) return null;
|
||||||
|
|
||||||
|
if (fuelComp.IsFull)
|
||||||
|
{
|
||||||
|
return "ARA_NutritionConverter_State_TankFull".Translate();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nutritionProgress < Props.nutritionCost)
|
||||||
|
{
|
||||||
|
return "ARA_NutritionConverter_Gathering".Translate(nutritionProgress.ToString("F1"), Props.nutritionCost);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "ARA_NutritionConverter_Working".Translate(workProgress.ToString("F0"), Props.workAmount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
Source/ArachnaeSwarm/Verbs/Verb_ShootConsumeNutrition.cs
Normal file
41
Source/ArachnaeSwarm/Verbs/Verb_ShootConsumeNutrition.cs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
using RimWorld;
|
||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace ArachnaeSwarm
|
||||||
|
{
|
||||||
|
public class Verb_ShootConsumeNutrition : Verb_Shoot
|
||||||
|
{
|
||||||
|
public override bool Available()
|
||||||
|
{
|
||||||
|
if (!base.Available())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verbProps.consumeFuelPerShot > 0f)
|
||||||
|
{
|
||||||
|
CompRefuelableNutrition comp = caster.TryGetComp<CompRefuelableNutrition>();
|
||||||
|
if (comp != null && comp.Fuel < verbProps.consumeFuelPerShot)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void WarmupComplete()
|
||||||
|
{
|
||||||
|
// This is a bit of a workaround. The base WarmupComplete calls TryCastNextBurstShot,
|
||||||
|
// which in turn calls the base Verb's fuel consumption logic before we can intervene.
|
||||||
|
// So we consume fuel here, and the base call will find it already consumed.
|
||||||
|
// This relies on the fact that TryCastNextBurstShot in the base Verb class checks fuel again.
|
||||||
|
if (verbProps.consumeFuelPerShot > 0f)
|
||||||
|
{
|
||||||
|
caster.TryGetComp<CompRefuelableNutrition>()?.ConsumeFuel(verbProps.consumeFuelPerShot);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.WarmupComplete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user