暂存
This commit is contained in:
Binary file not shown.
@@ -1,83 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<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>
|
||||
@@ -47,6 +47,8 @@
|
||||
<li>ARA_MorphableResearchBench</li>
|
||||
<li>ARANutrientDispenser</li>
|
||||
<li>ARA_WormholePortal_A</li>
|
||||
<li>ARA_Acidling_AutoMortar</li>
|
||||
<li>CatastropheMissileSilo</li>
|
||||
</linkableBuildings>
|
||||
<maxDistance>80</maxDistance> <!-- 供能范围 -->
|
||||
<maxSimultaneous>10</maxSimultaneous>
|
||||
@@ -63,6 +65,8 @@
|
||||
<li>ARA_MorphableResearchBench</li>
|
||||
<li>ARANutrientDispenser</li>
|
||||
<li>ARA_WormholePortal_A</li>
|
||||
<li>ARA_Acidling_AutoMortar</li>
|
||||
<li>CatastropheMissileSilo</li>
|
||||
</linkableBuildings>
|
||||
<maxDistance>80</maxDistance>
|
||||
<lineTexturePath>ArachnaeSwarm/Building/Nutrition_Pie</lineTexturePath>
|
||||
@@ -392,7 +396,7 @@
|
||||
<li>Corpses</li>
|
||||
</categories>
|
||||
</fuelFilter>
|
||||
<fuelCapacity>50</fuelCapacity>
|
||||
<fuelCapacity>25</fuelCapacity>
|
||||
<fuelConsumptionRate>25</fuelConsumptionRate>
|
||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||
</li>
|
||||
@@ -463,7 +467,7 @@
|
||||
<comps>
|
||||
<!-- 1. 作为消费者,自己也需要燃料 -->
|
||||
<li Class="ArachnaeSwarm.CompProperties_RefuelableNutrition">
|
||||
<fuelCapacity>10.0</fuelCapacity>
|
||||
<fuelCapacity>5.0</fuelCapacity>
|
||||
<fuelFilter>
|
||||
<thingDefs>
|
||||
<li>ARA_InsectJelly</li>
|
||||
@@ -482,7 +486,7 @@
|
||||
<li>ARA_BioforgeIncubator_Thing</li>
|
||||
</linkableBuildings>
|
||||
<maxSimultaneous>10</maxSimultaneous>
|
||||
<maxDistance>20</maxDistance>
|
||||
<maxDistance>20</maxDistance>
|
||||
<statOffsets>
|
||||
<NutrientTransmissionEfficiency>0.05</NutrientTransmissionEfficiency>
|
||||
<ARA_IncubationSpeedFactor>0.1</ARA_IncubationSpeedFactor>
|
||||
@@ -506,4 +510,83 @@
|
||||
</modExtensions>
|
||||
</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>
|
||||
@@ -1,6 +1,158 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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>
|
||||
<label>天灾酸烧炮组织</label>
|
||||
<description>阿拉克涅虫族所进化出的终极生物武器之一。它由大量没有自主意识的高度特化器官共同构成,骇人的酸烧炮可以发射令生灵闻风丧胆的天灾酸烧导弹。作为复合型防御系统,它既可以向本地的目标发射导弹,也可以向远处的威胁实施精确打击。</description>
|
||||
@@ -10,7 +162,7 @@
|
||||
<texPath>ArachnaeSwarm/Building/ARA_CatastropheMissileSilo_Base</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<drawSize>(5,5)</drawSize>
|
||||
<drawOffset>(0,0,-0.1)</drawOffset>
|
||||
<drawOffset>(0,0,0.5)</drawOffset>
|
||||
<shadowData>
|
||||
<volume>(1.5,0.35,1.4)</volume>
|
||||
<offset>(0,0,-0.05)</offset>
|
||||
@@ -30,6 +182,18 @@
|
||||
</statBases>
|
||||
<tickerType>Normal</tickerType>
|
||||
<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">
|
||||
<fuelLabel>导弹</fuelLabel>
|
||||
<fuelGizmoLabel>导弹</fuelGizmoLabel>
|
||||
@@ -45,6 +209,12 @@
|
||||
<showFuelGizmo>true</showFuelGizmo>
|
||||
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
|
||||
</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_Breakdownable"/>
|
||||
<li Class="ArachnaeSwarm.CompProperties_ForceTargetable" />
|
||||
@@ -52,19 +222,28 @@
|
||||
<terrainToSpawn>ARA_InsectCreep</terrainToSpawn>
|
||||
<spawnRadius>8</spawnRadius>
|
||||
</li>
|
||||
<li Class="CompProperties_AffectedByFacilities">
|
||||
<linkableFacilities>
|
||||
<li>ARA_NutrientNetworkTower</li>
|
||||
</linkableFacilities>
|
||||
</li>
|
||||
</comps>
|
||||
<building>
|
||||
<turretGunDef>CatastropheMissile_Weapon</turretGunDef>
|
||||
<turretBurstCooldownTime>15.0</turretBurstCooldownTime>
|
||||
<turretTopDrawSize>5.0</turretTopDrawSize>
|
||||
<turretTopDrawSize>7.0</turretTopDrawSize>
|
||||
<turretTopOffset>(0,1.2)</turretTopOffset>
|
||||
<buildingTags>
|
||||
<li>Artillery</li>
|
||||
</buildingTags>
|
||||
</building>
|
||||
<costList>
|
||||
<ARA_Carapace>50</ARA_Carapace>
|
||||
</costList>
|
||||
<designationCategory>ARA_Buildings</designationCategory>
|
||||
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
|
||||
<constructionSkillPrerequisite>12</constructionSkillPrerequisite>
|
||||
<terrainAffordanceNeeded>ARA_Creep</terrainAffordanceNeeded>
|
||||
<researchPrerequisites>
|
||||
<li>ShipbuildingBasics</li>
|
||||
</researchPrerequisites>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="BaseArtilleryWeapon">
|
||||
@@ -118,7 +297,7 @@
|
||||
<explosiveRadius>10.9</explosiveRadius>
|
||||
<postExplosionSpawnThingDef>ARA_Filth_SpentAcid</postExplosionSpawnThingDef>
|
||||
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
||||
<postExplosionSpawnThingCount>2</postExplosionSpawnThingCount>
|
||||
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount>
|
||||
<wickTicks>30~60</wickTicks>
|
||||
<explosionSound>MortarBomb_Explode</explosionSound>
|
||||
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
||||
@@ -144,7 +323,7 @@
|
||||
<speed>80</speed>
|
||||
<flyOverhead>true</flyOverhead>
|
||||
<filth>ARA_Filth_SpentAcid</filth>
|
||||
<filthCount>2</filthCount>
|
||||
<filthCount>1</filthCount>
|
||||
<explosionEffect>ARA_Shell_AcidSpitImpact</explosionEffect>
|
||||
<explosionEffectLifetimeTicks>60</explosionEffectLifetimeTicks>
|
||||
<doExplosionVFX>false</doExplosionVFX>
|
||||
@@ -182,6 +361,46 @@
|
||||
</comps>
|
||||
</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">
|
||||
<defName>ARA_Filth_SpentAcid</defName>
|
||||
<label>阿拉克涅残酸</label>
|
||||
@@ -198,7 +417,7 @@
|
||||
</graphicData>
|
||||
<filth>
|
||||
<ignoreFilthMultiplierStat>true</ignoreFilthMultiplierStat>
|
||||
<disappearsInDays>1~3</disappearsInDays>
|
||||
<disappearsInDays>0.5~1</disappearsInDays>
|
||||
<rainWashes>true</rainWashes>
|
||||
<cleaningWorkToReduceThickness>70</cleaningWorkToReduceThickness>
|
||||
<canFilthAttach>true</canFilthAttach>
|
||||
@@ -257,45 +476,5 @@
|
||||
</li>
|
||||
</children>
|
||||
</EffecterDef>
|
||||
|
||||
<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>
|
||||
|
||||
</Defs>
|
||||
|
||||
</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\IFuelSource.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_NecroticVirus_Configurable.cs" />
|
||||
<Compile Include="Hediffs\ARA_ConfigurableMutant\HediffComp_NecroticTransformation.cs" />
|
||||
@@ -203,6 +204,7 @@
|
||||
<Compile Include="Verbs\Verb_ShootArc.cs" />
|
||||
<Compile Include="Verbs\Verb_ShootMeltBeam.cs" />
|
||||
<Compile Include="Verbs\Verb_ShootShotgun.cs" />
|
||||
<Compile Include="Verbs\Verb_ShootConsumeNutrition.cs" />
|
||||
<Compile Include="Verbs\VerbProperties_Excalibur.cs" />
|
||||
<Compile Include="Verbs\Verb_ShootSprayMulti.cs" />
|
||||
<Compile Include="Verbs\WeaponStealBeam\Verb_ShootWeaponStealBeam.cs" />
|
||||
|
||||
@@ -76,7 +76,8 @@ namespace ArachnaeSwarm
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -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