到底有多强

This commit is contained in:
Tourswen
2025-11-12 00:32:52 +08:00
parent 40b0cdbb05
commit c2b23554cc
67 changed files with 769 additions and 425 deletions

View File

@@ -2,19 +2,30 @@
<Defs>
<!-- 有一个verb的cs引用了这个勿删 -->
<ThingDef ParentName="MoteBase">
<defName>ExcaliburBeam</defName>
<defName>WULA_ExcaliburBeam</defName>
<thingClass>WulaFallenEmpire.Thing_ExcaliburBeam</thingClass>
<label>Excalibur Beam</label>
<altitudeLayer>MoteOverhead</altitudeLayer>
<graphicData>
<texPath>Things/Mote/PowerBeam</texPath>
<shaderType>MoteGlow</shaderType>
<texPath>Things/Mote/GraserBeam</texPath>
<graphicClass>Graphic_MoteWithAgeSecs</graphicClass>
<shaderType>MoteBeam</shaderType>
<drawSize>(25,1)</drawSize>
<color>(165, 44, 2, 255)</color>
<shaderParameters>
<_ScrollSpeedA>0</_ScrollSpeedA>
<_ScrollSpeedB>0</_ScrollSpeedB>
<_Intensity>2</_Intensity>
</shaderParameters>
</graphicData>
<drawOffscreen>true</drawOffscreen>
<mote>
<fadeInTime>0.5</fadeInTime>
<solidTime>9.3</solidTime>
<fadeOutTime>1.0</fadeOutTime>
<rotateTowardsTarget>True</rotateTowardsTarget>
<scaleToConnectTargets>True</scaleToConnectTargets>
<fadeOutUnmaintained>True</fadeOutUnmaintained>
</mote>
</ThingDef>

View File

@@ -241,7 +241,7 @@
<PawnKindDef Name="Wula_Mech_Mobile_Factory_PawnKind" ParentName="HeavyMechanoidKind">
<defName>Wula_Mech_Mobile_Factory</defName> <!-- 修改了defName以避免冲突 -->
<label>MFm-87"天秤"</label>
<label>MFm-2"陆行舰"</label>
<race>Wula_Mech_Mobile_Factory</race>
<combatPower>1000</combatPower>
<allowInMechClusters>false</allowInMechClusters>
@@ -262,7 +262,7 @@
<maskPath>Wula/Things/WULA_Cat/AllegianceOverlays/None</maskPath>
<shaderType>CutoutWithOverlay</shaderType>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>6</drawSize>
<drawSize>9</drawSize>
<shadowData>
<volume>(1.4, 1.8, 1.4)</volume>
</shadowData>
@@ -277,10 +277,85 @@
</weaponTags>
<abilities>
<li>WULA_GiveSwitchHediff</li> <!-- 添加“停止生产”技能 -->
<li>WULA_RemoveSwitchHediff</li> <!-- 保留“恢复生产”技能 -->
<li>Wula_Mech_Mobile_Factory_Produce</li>
</abilities>
</PawnKindDef>
<PawnKindDef Name="WULA_Mech_Flyer_PawnKind" ParentName="BaseMechanoidKind">
<defName>WULA_Mech_Flyer</defName>
<label>CRm-51"兵蚁"</label>
<race>WULA_Mech_Flyer</race>
<combatPower>190</combatPower>
<allowInMechClusters>false</allowInMechClusters>
<flyingAnimationFramePathPrefix>Wula/Things/WULA_Mech_Flyer/Wula_Mech_Flyer_east_Flying_</flyingAnimationFramePathPrefix>
<flyingAnimationDrawSize>1</flyingAnimationDrawSize>
<flyingAnimationFrameCount>1</flyingAnimationFrameCount>
<flyingAnimationTicksPerFrame>2</flyingAnimationTicksPerFrame>
<flyingAnimationInheritColors>false</flyingAnimationInheritColors>
<forceDeathOnDowned>true</forceDeathOnDowned>
<forceNoDeathNotification>true</forceNoDeathNotification>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer</texPath>
<shaderType>CutoutWithOverlay</shaderType>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>1.5</drawSize>
<shadowData>
<volume>(0.4, 0.8, 0.4)</volume>
</shadowData>
</bodyGraphicData>
</li>
</lifeStages>
<techHediffsChance>1</techHediffsChance>
<techHediffsMoney>9999~9999</techHediffsMoney>
</PawnKindDef>
<AbilityDef>
<defName>Wula_Mech_Mobile_Factory_Produce</defName>
<label>生产战争机器</label>
<description>立刻生产10台CRm-51"兵蚁",快速组织一道近战阵线。</description>
<iconPath>Wula/UI/Abilities/Wula_Mech_Mobile_Factory_Produce</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange>
<charges>5</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
<disableGizmoWhileUndrafted>true</disableGizmoWhileUndrafted>
<displayGizmoWhileUndrafted>false</displayGizmoWhileUndrafted>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<range>24</range>
<warmupTime>0</warmupTime>
<soundCast>WarqueenWarUrchinsSpawned</soundCast>
<violent>false</violent>
<targetable>false</targetable>
<targetParams>
<canTargetSelf>true</canTargetSelf>
</targetParams>
</verbProperties>
<comps>
<li Class="WulaFallenEmpire.CompProperties_AbilityLaunchMultiProjectile">
<projectileDef>Wula_Mech_Mobile_Factory_Produce_Proj</projectileDef>
<numProjectiles>10</numProjectiles>
</li>
</comps>
</AbilityDef>
<ThingDef ParentName="BaseGrenadeProjectile">
<defName>Wula_Mech_Mobile_Factory_Produce_Proj</defName>
<label>CRm-51"兵蚁"</label>
<thingClass>Projectile_SpawnsPawnZeroAge</thingClass>
<graphicData>
<texPath>Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_south</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<projectile>
<speed>41</speed>
<spawnsPawnKind>WULA_Mech_Flyer</spawnsPawnKind>
<tryAdjacentFreeSpaces>true</tryAdjacentFreeSpaces>
<damageDef>Bullet</damageDef>
<damageAmountBase>1</damageAmountBase>
</projectile>
</ThingDef>
<!-- 乌拉族反常网络 -->
<PawnKindDef Name="Wula_Broken_Personality_Pawn_Base" Abstract="True">

View File

@@ -239,6 +239,17 @@
<li>WULA_Synth_Productor_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Mech_Mobile_Factory_Technology</defName>
<researchViewX>9.00</researchViewX>
<researchViewY>5.60</researchViewY>
<label>陆行舰空投许可</label>
<description>允许殖民地申请空投MFm-2"陆行舰",乌拉帝国的大型战争机械,一座插满火炮和战地生产设施的移动堡垒。</description>
<baseCost>800</baseCost>
<prerequisites>
<li>WULA_Colony_License_LV3_Technology</li>
</prerequisites>
</ResearchProjectDef>
<!-- 防御 -->
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Turret_Base_AT_Technology</defName>
@@ -383,8 +394,6 @@
</prerequisites>
</ResearchProjectDef>
<!-- 衣服 -->
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Clothes_1_Technology</defName>

View File

@@ -80,6 +80,22 @@
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>WULA_Unlimit_Penetrating_Beam_Shootingsound</defName>
<context>MapOnly</context>
<maxSimultaneous>1</maxSimultaneous>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Wula/WULA_Unlimit_Penetrating_Beam_Shootingsound</clipPath>
</li>
</grains>
<volumeRange>65</volumeRange>
<pitchRange>0.9~1.1</pitchRange>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>WULA_RW_Beam_Shootingsound</defName>
<sustain>true</sustain>

View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 陆行舰 -->
<ThingDef ParentName="BuildingBase">
<defName>Wula_Mech_Mobile_Factory_Cleanzone</defName>
<label>MFm-2"陆行舰"</label>
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。建造好的信标可以收起或移至他处,但是必须要有母舰或者工程舰在上空才能投送大型战争机械。\n\n陆行舰是乌拉帝国的大型战争机械简直就是一座移动堡垒——它不仅装甲厚实、火炮林立还能在战场上生产大量的辅助战争机械以形成坚实的弹性阵线生来就是为了粉碎坚固的堡垒和顽强的抵抗。</description>
<uiIconPath>Wula/Things/Wula_Mech_Mobile_Factory/Wula_Mech_Mobile_Factory_Incoming</uiIconPath>
<minifiedDef>MinifiedThing</minifiedDef>
<tickerType>Normal</tickerType>
<descriptionHyperlinks>
<ThingDef>Wula_Mech_Mobile_Factory</ThingDef>
<ThingDef>WULA_Mech_Flyer</ThingDef>
</descriptionHyperlinks>
<thingCategories Inherit="False">
<li>BuildingsMisc</li>
</thingCategories>
<graphicData>
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>(3,3)</drawSize>
<damageData>
<enabled>false</enabled>
</damageData>
</graphicData>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<castEdgeShadows>false</castEdgeShadows>
<fillPercent>0.5</fillPercent>
<canOverlapZones>false</canOverlapZones>
<pathCost>0</pathCost>
<hasInteractionCell>false</hasInteractionCell>
<rotatable>false</rotatable>
<researchPrerequisites Inherit="False">
<li>WULA_Mech_Mobile_Factory_Technology</li>
</researchPrerequisites>
<statBases>
<MaxHitPoints>1</MaxHitPoints>
<WorkToBuild>1</WorkToBuild>
<Mass>1</Mass>
<Flammability>0</Flammability>
</statBases>
<size>(3,3)</size>
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
<resourcesFractionWhenDeconstructed>1</resourcesFractionWhenDeconstructed>
<costList>
<Steel>50</Steel>
<ComponentIndustrial>1</ComponentIndustrial>
</costList>
<building>
<destroySound>BuildingDestroyed_Metal_Small</destroySound>
</building>
<placeWorkers>
<li>WulaFallenEmpire.PlaceWorker_CustomRadius</li>
</placeWorkers>
<designationCategory>WULA_Buildings</designationCategory>
<comps>
<li Class="WulaFallenEmpire.CompProperties_SkyfallerCaller">
<skyfallerDef>Wula_Mech_Mobile_Factory_Incoming</skyfallerDef> <!-- 替换为您想要的Skyfaller类型 -->
<destroyBuilding>true</destroyBuilding>
<delayTicks>1</delayTicks>
<allowThinRoof>true</allowThinRoof>
<allowThickRoof>false</allowThickRoof>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="SkyfallerBase">
<defName>Wula_Mech_Mobile_Factory_Incoming</defName>
<label>MFm-2"陆行舰"(空投中)</label>
<size>(1,1)</size>
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
<graphicData>
<texPath>Wula/Things/Wula_Mech_Mobile_Factory/Wula_Mech_Mobile_Factory_Incoming</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutFlying</shaderType>
<drawSize>(9,9)</drawSize>
</graphicData>
<skyfaller>
<movementType>Decelerate</movementType>
<shadow>Things/Skyfaller/SkyfallerShadowDropPod</shadow>
<shadowSize>(6, 6)</shadowSize>
<anticipationSound>DropPod_Fall</anticipationSound>
<anticipationSoundTicks>100</anticipationSoundTicks>
<impactSound>Explosion_Vaporize</impactSound>
<moteSpawnTime>0.05</moteSpawnTime>
<motesPerCell>1</motesPerCell>
<cameraShake>1</cameraShake>
<angleCurve>
<points>
<li>(0,0)</li>
<li>(1, 1)</li>
</points>
</angleCurve>
<!-- <spawnThing></spawnThing> -->
<explosionRadius>15</explosionRadius>
<explosionDamage>WULA_Mech_EMP_Drop</explosionDamage>
<explosionDamageFactor>0</explosionDamageFactor>
</skyfaller>
<comps>
<li Class="CompProperties_Effecter">
<effecterDef>Smoke_Joint</effecterDef>
</li>
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
<pawnKind>Wula_Mech_Mobile_Factory</pawnKind>
<faction>PlayerColony</faction>
<spawnDrafted>false</spawnDrafted>
<spawnHostile>false</spawnHostile>
</li>
</comps>
</ThingDef>
<DamageDef ParentName="StunBase">
<defName>WULA_Mech_EMP_Drop</defName>
<label>EMP</label>
<externalViolenceForMechanoids>true</externalViolenceForMechanoids>
<deathMessage>{0} has been EMPed to death.</deathMessage>
<harmsHealth>false</harmsHealth>
<impactSoundType>Electric</impactSoundType>
<defaultDamage>50</defaultDamage>
<explosionSnowMeltAmount>0</explosionSnowMeltAmount>
<!-- <explosionCellFleck>BlastEMP</explosionCellFleck> -->
<!-- <explosionColorEdge>(0.8, 0.8, 0.8, 0.8)</explosionColorEdge>
<explosionInteriorFleck>ElectricalSpark</explosionInteriorFleck> -->
<soundExplosion>Explosion_Vaporize</soundExplosion>
<combatLogRules>Damage_EMP</combatLogRules>
<causeStun>true</causeStun>
<stunResistStat MayRequireAnyOf="Ludeon.RimWorld.Biotech,Ludeon.RimWorld.Anomaly">EMPResistance</stunResistStat>
<stunAdaptationTicks>2200</stunAdaptationTicks>
<explosionCenterEffecter>WULA_Mech_EMP_Drop_Shockwave</explosionCenterEffecter>
</DamageDef>
<EffecterDef>
<defName>WULA_Mech_EMP_Drop_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandRedLine</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>FlashMechBand</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>Mote_RedFlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef>
</Defs>

View File

@@ -1188,6 +1188,42 @@
</skyfaller>
</ThingDef>
<EffecterDef>
<defName>WULA_DarkMatterBomb_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandRedLine</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>FlashMechBand</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>Mote_RedFlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef>
<!-- <EffecterDef>
<defName>WULA_DarkMatterBomb_Shockwave</defName>
<children>
<li>
@@ -1214,8 +1250,8 @@
<scale>24</scale>
</li>
</children>
</EffecterDef>
<FleckDef ParentName="FleckBase_Thrown">
</EffecterDef> -->
<!-- <FleckDef ParentName="FleckBase_Thrown">
<defName>WULA_DarkMatterBomb_MechBandRedLine_Fleck</defName>
<altitudeLayer>LightingOverlay</altitudeLayer>
<fadeInTime>0.1</fadeInTime>
@@ -1241,7 +1277,7 @@
</shaderParameters>
<drawSize>(7, 7)</drawSize>
</graphicData>
</FleckDef>
</FleckDef> -->
<ThingDef ParentName="MoteBase">
<defName>WULA_DarkMatterBomb_FlashStrong</defName>
<thingClass>MoteAttached</thingClass>

View File

@@ -2,16 +2,16 @@
<Defs>
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>WULA_RW_Unlimit_Penetrating_Beam_Cannon</defName>
<label>XXx-00 "贯杀炮"</label>
<description>乌拉帝国军械部在黄金时期所设计的武器,时至今日仍未被确认其实际代号。这种武器装填缓慢、体积巨大,只能由最庞大的战争平台所配备,所发射的切割束几乎可以横跨战场,并抹除路径上所有的敌人。</description>
<label>UPb-00 "贯杀炮"</label>
<description>乌拉帝国军械部在黄金时期所设计的武器,装填缓慢、体积巨大,只能由最庞大的战争平台所配备,所发射的切割束几乎可以横跨战场,并抹除路径上所有的敌人。</description>
<techLevel>Archotech</techLevel>
<tradeability>None</tradeability>
<graphicData>
<texPath>Wula/Weapon/WULA_RW_Unlimit_Penetrating_Beam_Cannon</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
<drawSize>3</drawSize>
</graphicData>
<uiIconScale>0.75</uiIconScale>
<uiIconScale>0.5</uiIconScale>
<soundInteract>Interact_Rifle</soundInteract>
<statBases>
<Mass>200</Mass>
@@ -19,7 +19,7 @@
<AccuracyShort>1</AccuracyShort>
<AccuracyMedium>1</AccuracyMedium>
<AccuracyLong>1</AccuracyLong>
<RangedWeapon_Cooldown>0</RangedWeapon_Cooldown>
<RangedWeapon_Cooldown>4</RangedWeapon_Cooldown>
</statBases>
<smeltable>false</smeltable>
<recipeMaker Inherit="False" IsNull="True" />
@@ -33,29 +33,30 @@
<li Class="WulaFallenEmpire.VerbProperties_Excalibur">
<verbClass>WulaFallenEmpire.Verb_Excalibur</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<range>30.9</range>
<warmupTime>6</warmupTime>
<range>500</range>
<warmupTime>5</warmupTime>
<burstShotCount>1</burstShotCount>
<ticksBetweenBurstShots>2</ticksBetweenBurstShots>
<soundCast>ChargeLance_Fire</soundCast>
<soundCast>WULA_Unlimit_Penetrating_Beam_Shootingsound</soundCast>
<soundCastTail>GunTail_Heavy</soundCastTail>
<requireLineOfSight>false</requireLineOfSight>
<aimingLineMote>Mote_HellsphereCannon_Aim</aimingLineMote>
<soundAiming>HellsphereCannon_Aiming</soundAiming>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<pathWidth>1</pathWidth>
<damageDef>Bomb</damageDef>
<pathWidth>2</pathWidth>
<damageDef>BombSuper</damageDef>
<damageAmount>450</damageAmount>
<armorPenetration>2</armorPenetration>
<beamDefName>ExcaliburBeam</beamDefName>
<beamDefName>WULA_ExcaliburBeam</beamDefName>
</li>
</verbs>
<weaponTags>
<li>Wula_Mech_Mobile_Factory_Main_Weapon</li>
</weaponTags>
</ThingDef>
<ThingDef Name="Wula_CR_Mobile_Factory_Turret" ParentName="BaseWeaponTurret">
<ThingDef ParentName="BaseWeaponTurret">
<defName>Wula_CR_Mobile_Factory_Turret</defName>
<label>CRt-91"铱锇"</label>
<description>由乌拉帝国的陆行舰所配备的炮塔之一,能够喷射穿透装甲的热熔束,处理靠近陆行舰的威胁。</description>
@@ -127,120 +128,6 @@
</li>
</verbs>
</ThingDef>
<ThingDef ParentName="Wula_CR_Mobile_Factory_Turret">
<defName>Wula_CR_Mobile_Factory_Turret_MKII</defName>
<label>CRt-92"铱锇MK2"</label>
<description>由乌拉帝国的陆行舰所配备的炮塔之一,此改进版比起其原型可以将热熔束喷到更远的地方,但是无法处理过近的目标。</description>
<verbs Inherit="False">
<li>
<verbClass>Verb_ArcSprayIncinerator</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<range>26</range>
<beamFullWidthRange>15</beamFullWidthRange>
<defaultCooldownTime>6</defaultCooldownTime>
<burstShotCount>25</burstShotCount>
<showBurstShotStats>false</showBurstShotStats>
<requireLineOfSight>false</requireLineOfSight>
<beamWidth>6</beamWidth>
<ticksBetweenBurstShots>2</ticksBetweenBurstShots>
<beamDamageDef>Damage_WULA_Melta</beamDamageDef>
<soundCastTail>GunTail_Medium</soundCastTail>
<muzzleFlashScale>9</muzzleFlashScale>
<soundCastBeam>Flamethrower_Firing</soundCastBeam>
<beamGroundFleckDef>Fleck_IncineratorBeamBurn</beamGroundFleckDef>
<beamFleckChancePerTick>0.32</beamFleckChancePerTick>
<beamMaxDeviation>0.5</beamMaxDeviation>
<beamCurvature>0</beamCurvature>
<beamEndEffecterDef>IncineratorBeam_End</beamEndEffecterDef>
<beamChanceToStartFire>0.85</beamChanceToStartFire>
<beamFireSizeRange>0.55~0.85</beamFireSizeRange>
<beamStartOffset>.5</beamStartOffset>
<beamHitsNeighborCells>true</beamHitsNeighborCells>
<beamCantHitWithinMinRange>true</beamCantHitWithinMinRange>
<beamHitsNeighborCellsRequiresLOS>true</beamHitsNeighborCellsRequiresLOS>
<beamSetsGroundOnFire>true</beamSetsGroundOnFire>
<ai_BeamIsIncendiary>true</ai_BeamIsIncendiary>
<beamLineFleckDef>Fleck_IncineratorBeamSmoke</beamLineFleckDef>
<highlightColor>(58, 225, 225)</highlightColor>
<secondaryHighlightColor>(102, 200, 200)</secondaryHighlightColor>
<beamLineFleckChanceCurve>
<points>
<li>(0, 0)</li>
<li>(0.65, 0.02)</li>
<li>(1, .5)</li>
</points>
</beamLineFleckChanceCurve>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<flammabilityAttachFireChanceCurve>
<points>
<li>(0.6, 0)</li>
<li>(0.7, 0.2)</li>
<li>(1.2, 0.8)</li>
</points>
</flammabilityAttachFireChanceCurve>
<rangedFireRulepack>Combat_RangedFlamethrower</rangedFireRulepack>
</li>
</verbs>
</ThingDef>
<ThingDef ParentName="Wula_CR_Mobile_Factory_Turret">
<defName>WULA_MechFlyerTurretGun_Melta</defName>
<label>CRt-93"铱锇MK3"</label>
<description>由乌拉帝国的CRm-51"兵蚁"机械体所配备的武装,替换了常规的磁力光束,可以在近距离上灼烧敌军。</description>
<verbs Inherit="False">
<li>
<verbClass>Verb_ArcSprayIncinerator</verbClass>
<hasStandardCommand>true</hasStandardCommand>
<range>3</range>
<beamFullWidthRange>6</beamFullWidthRange>
<defaultCooldownTime>4</defaultCooldownTime>
<burstShotCount>25</burstShotCount>
<showBurstShotStats>false</showBurstShotStats>
<requireLineOfSight>false</requireLineOfSight>
<beamWidth>3</beamWidth>
<ticksBetweenBurstShots>2</ticksBetweenBurstShots>
<beamDamageDef>Damage_WULA_Melta_Small</beamDamageDef>
<soundCastTail>GunTail_Medium</soundCastTail>
<muzzleFlashScale>9</muzzleFlashScale>
<soundCastBeam>Flamethrower_Firing</soundCastBeam>
<beamGroundFleckDef>Fleck_IncineratorBeamBurn</beamGroundFleckDef>
<beamFleckChancePerTick>0.32</beamFleckChancePerTick>
<beamMaxDeviation>0.5</beamMaxDeviation>
<beamCurvature>0</beamCurvature>
<beamEndEffecterDef>IncineratorBeam_End</beamEndEffecterDef>
<beamChanceToStartFire>0.85</beamChanceToStartFire>
<beamFireSizeRange>0.55~0.85</beamFireSizeRange>
<beamStartOffset>.5</beamStartOffset>
<beamHitsNeighborCells>true</beamHitsNeighborCells>
<beamCantHitWithinMinRange>true</beamCantHitWithinMinRange>
<beamHitsNeighborCellsRequiresLOS>true</beamHitsNeighborCellsRequiresLOS>
<beamSetsGroundOnFire>true</beamSetsGroundOnFire>
<ai_BeamIsIncendiary>true</ai_BeamIsIncendiary>
<beamLineFleckDef>Fleck_IncineratorBeamSmoke</beamLineFleckDef>
<highlightColor>(58, 225, 225)</highlightColor>
<secondaryHighlightColor>(102, 200, 200)</secondaryHighlightColor>
<beamLineFleckChanceCurve>
<points>
<li>(0, 0)</li>
<li>(0.65, 0.02)</li>
<li>(1, .5)</li>
</points>
</beamLineFleckChanceCurve>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<flammabilityAttachFireChanceCurve>
<points>
<li>(0.6, 0)</li>
<li>(0.7, 0.2)</li>
<li>(1.2, 0.8)</li>
</points>
</flammabilityAttachFireChanceCurve>
<rangedFireRulepack>Combat_RangedFlamethrower</rangedFireRulepack>
</li>
</verbs>
</ThingDef>
<ThingDef ParentName="BaseWeaponTurret">
<defName>Wula_MR_Mobile_Factory_Turret</defName>
<label>CRt-60"陨磷"</label>
@@ -334,13 +221,14 @@
<hasStandardCommand>true</hasStandardCommand>
<defaultProjectile>Bullet_Wula_LR_Mobile_Factory_Turret</defaultProjectile>
<warmupTime>0</warmupTime>
<defaultCooldownTime>9</defaultCooldownTime>
<defaultCooldownTime>16</defaultCooldownTime>
<isMortar>true</isMortar>
<requireLineOfSight>false</requireLineOfSight>
<minRange>4</minRange>
<range>120</range>
<burstShotCount>1</burstShotCount>
<soundCast>Mortar_LaunchA</soundCast>
<burstShotCount>3</burstShotCount>
<ticksBetweenBurstShots>12</ticksBetweenBurstShots>
<soundCast>Shot_TurretSniper</soundCast>
<muzzleFlashScale>12</muzzleFlashScale>
<forcedMissRadius>6</forcedMissRadius>
<targetParams>
@@ -378,4 +266,86 @@
</li>
</modExtensions>
</ThingDef>
<ThingDef ParentName="BaseWeaponTurret">
<defName>WULA_MechFlyerTurretGun</defName>
<label>磁力光束</label>
<description>一种可以窃取他人武器的内置炮塔。</description>
<tradeability>None</tradeability>
<destroyOnDrop>true</destroyOnDrop>
<graphicData>
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<statBases>
<Mass>2.6</Mass>
<AccuracyTouch>0.60</AccuracyTouch>
<AccuracyShort>0.80</AccuracyShort>
<AccuracyMedium>0.90</AccuracyMedium>
<AccuracyLong>0.85</AccuracyLong>
</statBases>
<verbs>
<li Class="WulaFallenEmpire.VerbProperties_WeaponStealBeam">
<verbClass>WulaFallenEmpire.Verb_ShootWeaponStealBeam</verbClass>
<hediffToApply>WULA_WeaponStealEffect</hediffToApply>
<hediffSeverityPerHit>0.1</hediffSeverityPerHit>
<hediffMaxSeverity>1.0</hediffMaxSeverity>
<removeHediffOnSteal>true</removeHediffOnSteal>
<!-- 基础射线参数 -->
<hasStandardCommand>true</hasStandardCommand>
<warmupTime>0</warmupTime>
<range>5</range>
<burstShotCount>5</burstShotCount>
<ticksBetweenBurstShots>50</ticksBetweenBurstShots>
<beamDamageDef>Wula_Dark_Matter_Beam</beamDamageDef>
<beamTotalDamage>3</beamTotalDamage>
<!-- 消除射线偏移的参数 -->
<beamFullWidthRange>1000</beamFullWidthRange>
<beamWidth>-1</beamWidth>
<beamMaxDeviation>0</beamMaxDeviation>
<beamCurvature>0</beamCurvature>
<beamStartOffset>0</beamStartOffset>
<!-- 视觉和音效 -->
<muzzleFlashScale>0</muzzleFlashScale>
<soundCastBeam>BeamGraser_Shooting</soundCastBeam>
<beamGroundFleckDef>Fleck_BeamBurn</beamGroundFleckDef>
<beamFleckChancePerTick>0.32</beamFleckChancePerTick>
<beamMoteDef>Mote_WULA_RW_Handle_Cannon_Beam</beamMoteDef>
<beamEndEffecterDef>GraserBeam_End</beamEndEffecterDef>
<screenShakeFactor>0.35</screenShakeFactor>
<!-- 火焰效果 -->
<beamChanceToStartFire>0.6</beamChanceToStartFire>
<beamChanceToAttachFire>0.6</beamChanceToAttachFire>
<beamFireSizeRange>0.25</beamFireSizeRange>
<!-- 其他射线属性 -->
<beamHitsNeighborCells>true</beamHitsNeighborCells>
<beamLineFleckChanceCurve>
<points>
<li>(0, 0)</li>
<li>(0.65, 0.4)</li>
<li>(1, 0.75)</li>
</points>
</beamLineFleckChanceCurve>
<!-- 攻击目标设置 -->
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<!-- 每发都爆炸 -->
<enableExplosion>false</enableExplosion>
<!--<explosionShotInterval>1</explosionShotInterval>
<explosionRadius>1.8</explosionRadius>
<explosionDamageDef>Wula_Dark_Matter_Flame</explosionDamageDef>
<explosionDamage>15</explosionDamage>
<explosionSound>Explosion_Bomb</explosionSound>
<chanceToStartFire>0.6</chanceToStartFire>-->
</li>
</verbs>
</ThingDef>
</Defs>

View File

@@ -391,85 +391,4 @@
</ThingDef>
<!-- 神人大鹅武器 -->
<ThingDef ParentName="BaseWeaponTurret">
<defName>WULA_MechFlyerTurretGun</defName>
<label>磁力光束</label>
<description>一种可以窃取他人武器的内置炮塔。</description>
<tradeability>None</tradeability>
<destroyOnDrop>true</destroyOnDrop>
<graphicData>
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
<graphicClass>Graphic_Single</graphicClass>
</graphicData>
<statBases>
<Mass>2.6</Mass>
<AccuracyTouch>0.60</AccuracyTouch>
<AccuracyShort>0.80</AccuracyShort>
<AccuracyMedium>0.90</AccuracyMedium>
<AccuracyLong>0.85</AccuracyLong>
</statBases>
<verbs>
<li Class="WulaFallenEmpire.VerbProperties_WeaponStealBeam">
<verbClass>WulaFallenEmpire.Verb_ShootWeaponStealBeam</verbClass>
<hediffToApply>WULA_WeaponStealEffect</hediffToApply>
<hediffSeverityPerHit>0.1</hediffSeverityPerHit>
<hediffMaxSeverity>1.0</hediffMaxSeverity>
<removeHediffOnSteal>true</removeHediffOnSteal>
<!-- 基础射线参数 -->
<hasStandardCommand>true</hasStandardCommand>
<warmupTime>0</warmupTime>
<range>5</range>
<burstShotCount>5</burstShotCount>
<ticksBetweenBurstShots>50</ticksBetweenBurstShots>
<beamDamageDef>Wula_Dark_Matter_Beam</beamDamageDef>
<beamTotalDamage>3</beamTotalDamage>
<!-- 消除射线偏移的参数 -->
<beamFullWidthRange>1000</beamFullWidthRange>
<beamWidth>-1</beamWidth>
<beamMaxDeviation>0</beamMaxDeviation>
<beamCurvature>0</beamCurvature>
<beamStartOffset>0</beamStartOffset>
<!-- 视觉和音效 -->
<muzzleFlashScale>0</muzzleFlashScale>
<soundCastBeam>BeamGraser_Shooting</soundCastBeam>
<beamGroundFleckDef>Fleck_BeamBurn</beamGroundFleckDef>
<beamFleckChancePerTick>0.32</beamFleckChancePerTick>
<!-- <beamMoteDef>Mote_Wula_Dark_Magnetic_Beam</beamMoteDef> -->
<beamEndEffecterDef>GraserBeam_End</beamEndEffecterDef>
<screenShakeFactor>0.35</screenShakeFactor>
<!-- 火焰效果 -->
<beamChanceToStartFire>0.6</beamChanceToStartFire>
<beamChanceToAttachFire>0.6</beamChanceToAttachFire>
<beamFireSizeRange>0.25</beamFireSizeRange>
<!-- 其他射线属性 -->
<beamHitsNeighborCells>true</beamHitsNeighborCells>
<beamLineFleckChanceCurve>
<points>
<li>(0, 0)</li>
<li>(0.65, 0.4)</li>
<li>(1, 0.75)</li>
</points>
</beamLineFleckChanceCurve>
<!-- 攻击目标设置 -->
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<!-- 每发都爆炸 -->
<enableExplosion>false</enableExplosion>
<!--<explosionShotInterval>1</explosionShotInterval>
<explosionRadius>1.8</explosionRadius>
<explosionDamageDef>Wula_Dark_Matter_Flame</explosionDamageDef>
<explosionDamage>15</explosionDamage>
<explosionSound>Explosion_Bomb</explosionSound>
<chanceToStartFire>0.6</chanceToStartFire>-->
</li>
</verbs>
</ThingDef>
</Defs>

View File

@@ -974,7 +974,7 @@
<ThingDef Name="Wula_Mech_Mobile_Factory" ParentName="WULA_BaseMechanoid">
<defName>Wula_Mech_Mobile_Factory</defName> <!-- 修改了defName以避免冲突 -->
<label>MFm-2"陆行舰"</label>
<description>乌拉帝国的大型战争机械,简直就是一座移动堡垒——它不仅装甲厚实、火炮林立,还能在战场上生产大量的辅助战争机械以形成坚实的弹性阵线,生来就是为了粉碎坚固的堡垒和顽强的抵抗。</description>
<description>乌拉帝国的大型战争机械,简直就是一座移动堡垒——它不仅装甲厚实、火炮林立,还能在战场上生产大量的辅助战争机械以形成坚实的弹性阵线,生来就是为了粉碎坚固的要塞和顽强的抵抗。</description>
<statBases>
<BandwidthCost>1</BandwidthCost>
<MoveSpeed>1</MoveSpeed>
@@ -1022,7 +1022,7 @@
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<overrideMeshSize>(2, 2)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
@@ -1035,15 +1035,15 @@
<dataEast>
<rotationOffset>90</rotationOffset>
<layer>-5</layer>
<offset>(2.15, 0, -1)</offset>
<offset>(3.25, 0, -1)</offset>
</dataEast>
<dataSouth>
<rotationOffset>-90</rotationOffset>
<offset>(1, 0, -1.45)</offset>
<offset>(1.5, 0, -1.45)</offset>
</dataSouth>
<dataWest>
<rotationOffset>90</rotationOffset>
<offset>(-2.15, 0, -1)</offset>
<offset>(-3.25, 0, -1)</offset>
</dataWest>
</drawData>
</li>
@@ -1058,7 +1058,7 @@
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<overrideMeshSize>(2, 2)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
@@ -1069,15 +1069,15 @@
</dataNorth>
<dataEast>
<rotationOffset>-90</rotationOffset>
<offset>(2.15, 0, -1)</offset>
<offset>(3.25, 0, -1)</offset>
</dataEast>
<dataSouth>
<rotationOffset>-90</rotationOffset>
<offset>(-1, 0, -1.45)</offset>
<offset>(-1.6, 0, -1.45)</offset>
</dataSouth>
<dataWest>
<rotationOffset>90</rotationOffset>
<offset>(-2.15, 0, -1)</offset>
<offset>(-3.25, 0, -1)</offset>
<layer>-5</layer>
</dataWest>
</drawData>
@@ -1093,7 +1093,7 @@
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<overrideMeshSize>(2, 2)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
@@ -1106,15 +1106,15 @@
<dataEast>
<rotationOffset>90</rotationOffset>
<layer>-5</layer>
<offset>(1.4, 0, -0.35)</offset>
<offset>(2.4, 0, -0.35)</offset>
</dataEast>
<dataSouth>
<rotationOffset>-90</rotationOffset>
<offset>(1.3, 0, -0.45)</offset>
<offset>(2.3, 0, -0.45)</offset>
</dataSouth>
<dataWest>
<rotationOffset>90</rotationOffset>
<offset>(-1.4, 0, -0.35)</offset>
<offset>(-2.4, 0, -0.35)</offset>
</dataWest>
</drawData>
</li>
@@ -1129,7 +1129,7 @@
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<overrideMeshSize>(2, 2)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
@@ -1141,16 +1141,16 @@
</dataNorth>
<dataEast>
<rotationOffset>-90</rotationOffset>
<offset>(1.4, 0, -0.35)</offset>
<offset>(2.4, 0, -0.35)</offset>
</dataEast>
<dataSouth>
<rotationOffset>-90</rotationOffset>
<offset>(-1.3, 0, -0.45)</offset>
<offset>(-2.3, 0, -0.45)</offset>
</dataSouth>
<dataWest>
<rotationOffset>90</rotationOffset>
<layer>-5</layer>
<offset>(-1.4, 0, -0.35)</offset>
<offset>(-2.4, 0, -0.35)</offset>
</dataWest>
</drawData>
</li>
@@ -1165,7 +1165,7 @@
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<overrideMeshSize>(2, 2)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
@@ -1178,15 +1178,15 @@
<dataEast>
<rotationOffset>90</rotationOffset>
<layer>-5</layer>
<offset>(0.6, 0, 0.15)</offset>
<offset>(1.6, 0, 0.25)</offset>
</dataEast>
<dataSouth>
<rotationOffset>-90</rotationOffset>
<offset>(-1.25, 0, 0.65)</offset>
<offset>(-2.15, 0, 0.65)</offset>
</dataSouth>
<dataWest>
<rotationOffset>90</rotationOffset>
<offset>(-0.6, 0, 0.15)</offset>
<offset>(-1.6, 0, 0.25)</offset>
</dataWest>
</drawData>
</li>
@@ -1201,7 +1201,7 @@
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<overrideMeshSize>(2, 2)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
@@ -1213,16 +1213,16 @@
</dataNorth>
<dataEast>
<rotationOffset>-90</rotationOffset>
<offset>(0.6, 0, 0.15)</offset>
<offset>(1.6, 0, 0.25)</offset>
</dataEast>
<dataSouth>
<rotationOffset>-90</rotationOffset>
<offset>(1.25, 0, 0.65)</offset>
<offset>(2.05, 0, 0.65)</offset>
</dataSouth>
<dataWest>
<rotationOffset>90</rotationOffset>
<layer>-5</layer>
<offset>(-0.6, 0, 0.15)</offset>
<offset>(-1.6, 0, 0.25)</offset>
</dataWest>
</drawData>
</li>
@@ -1249,6 +1249,97 @@
</li>
</comps>
</ThingDef>
<ThingDef Name="WULA_Mech_Flyer" ParentName="BaseMechanoidWalker">
<defName>WULA_Mech_Flyer</defName>
<label>CRm-51"兵蚁"</label>
<description>乌拉帝国的自律机械部队,它们通常由更高一级的机械作战节点自行制造,可以在靠近敌人后用装备的磁力射线从敌人身上窃取武器。</description>
<tools>
<li>
<label>head</label>
<capacities>
<li>Blunt</li>
</capacities>
<power>8.5</power>
<cooldownTime>2</cooldownTime>
<linkedBodyPartsGroup>HeadAttackTool</linkedBodyPartsGroup>
<ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable>
<chanceFactor>0.2</chanceFactor>
</li>
</tools>
<race>
<body>Mech_Light</body>
<baseHealthScale>0.7</baseHealthScale>
<flightStartChanceOnJobStart>1</flightStartChanceOnJobStart>
<lifeStageAges Inherit="False">
<li>
<def>MechanoidFullyFormed</def>
<minAge>0</minAge>
<soundWounded>Pawn_Mech_Scyther_Wounded</soundWounded>
<soundDeath>Pawn_Mech_Scyther_Death</soundDeath>
<soundCall>Pawn_Mech_Scyther_Call</soundCall>
</li>
</lifeStageAges>
<thinkTreeConstant>WULA_Mech_Flyer_Constant</thinkTreeConstant>
<deathAction Class="DeathActionProperties_Vanish">
<workerClass>DeathActionWorker_Vanish</workerClass>
<filth>Filth_MachineBits</filth>
<filthCountRange>1~2</filthCountRange>
</deathAction>
</race>
<statBases>
<BandwidthCost MayRequire="Ludeon.RimWorld.Biotech">0</BandwidthCost>
<MaxFlightTime>9999</MaxFlightTime>
<FlightCooldown>0</FlightCooldown>
</statBases>
<comps Inherit="False">
<!--加上这个组件的机械体可以更换武器-->
<li Class="WulaFallenEmpire.CompProperties_MechWeapon" />
<li Class="CompProperties_CanBeDormant" />
<li Class="CompProperties_WakeUpDormant">
<wakeUpOnDamage>true</wakeUpOnDamage>
<wakeUpCheckRadius>30</wakeUpCheckRadius>
<wakeUpSound>MechanoidsWakeUp</wakeUpSound>
</li>
<li Class="CompProperties_TurretGun">
<turretDef>WULA_MechFlyerTurretGun</turretDef>
<angleOffset>-90</angleOffset>
<autoAttack>false</autoAttack>
<renderNodeProperties>
<li>
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
<dataWest>
<rotationOffset>180</rotationOffset>
<offset>(0, 0, 0)</offset>
</dataWest>
</drawData>
</li>
</renderNodeProperties>
</li>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>10000</totalPowerTicks>
</li>
<!-- 飞行组件 -->
<li Class="WulaFallenEmpire.CompProperties_PawnFlight">
<!-- 飞行触发条件:仅在征召时飞行 -->
<flightCondition>Drafted</flightCondition>
<!-- 链接到我们刚刚创建的 AnimationDef -->
<flyingAnimationNorth>WULA_Hover_FlyNorth</flyingAnimationNorth>
<flyingAnimationEast>WULA_Hover_FlyEast</flyingAnimationEast>
<flyingAnimationSouth>WULA_Hover_FlySouth</flyingAnimationSouth>
</li>
</comps>
</ThingDef>
<ThingDef Name="Wula_AI_Heavy_Panzer" ParentName="HeavyMechanoid">
<defName>Wula_AI_Heavy_Panzer</defName>

View File

@@ -1,177 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThingDef Name="WULA_Mech_Flyer" ParentName="BaseMechanoidWalker">
<defName>WULA_Mech_Flyer</defName>
<label>CRm-51"兵蚁"</label>
<description>乌拉帝国图书馆所制造的最小型的机械体,它们通常由更高一级的机械作战节点自行制造,拥有飞行能力可以快速接近敌方单位,同时使用装备的磁力射线从敌人身上窃取武器。</description>
<tools>
<li>
<label>head</label>
<capacities>
<li>Blunt</li>
</capacities>
<power>8.5</power>
<cooldownTime>2</cooldownTime>
<linkedBodyPartsGroup>HeadAttackTool</linkedBodyPartsGroup>
<ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable>
<chanceFactor>0.2</chanceFactor>
</li>
</tools>
<race>
<body>Mech_Light</body>
<baseHealthScale>0.72</baseHealthScale>
<detritusLeavings>
<li>
<def>ChunkMechanoidSlag</def>
<texOverrideIndex>11</texOverrideIndex>
<spawnChance>0.1</spawnChance>
</li>
<li>
<def>ChunkMechanoidSlag</def>
<texOverrideIndex>12</texOverrideIndex>
<spawnChance>0.1</spawnChance>
</li>
</detritusLeavings>
<flightStartChanceOnJobStart>0.5</flightStartChanceOnJobStart>
<lifeStageAges Inherit="False">
<li>
<def>MechanoidFullyFormed</def>
<minAge>0</minAge>
<soundWounded>Pawn_Mech_Scyther_Wounded</soundWounded>
<soundDeath>Pawn_Mech_Scyther_Death</soundDeath>
<soundCall>Pawn_Mech_Scyther_Call</soundCall>
</li>
</lifeStageAges>
<thinkTreeConstant>WULA_Mech_Flyer_Constant</thinkTreeConstant>
<deathAction Class="DeathActionProperties_Vanish">
<workerClass>DeathActionWorker_Vanish</workerClass>
<filth>Filth_MachineBits</filth>
<filthCountRange>1~2</filthCountRange>
</deathAction>
</race>
<statBases>
<BandwidthCost MayRequire="Ludeon.RimWorld.Biotech">0</BandwidthCost>
<MaxFlightTime>30</MaxFlightTime>
<FlightCooldown>10</FlightCooldown>
</statBases>
<comps Inherit="False">
<!--加上这个组件的机械体会直接跳过原版指挥范围判定-->
<li Class="WulaFallenEmpire.CompProperties_GlobalMechCommand" />
<!--加上这个组件的机械体可以更换武器-->
<li Class="WulaFallenEmpire.CompProperties_MechWeapon" />
<li Class="CompProperties_CanBeDormant" />
<li Class="CompProperties_WakeUpDormant">
<wakeUpOnDamage>true</wakeUpOnDamage>
<wakeUpCheckRadius>30</wakeUpCheckRadius>
<wakeUpSound>MechanoidsWakeUp</wakeUpSound>
</li>
<li Class="CompProperties_TurretGun">
<turretDef>WULA_MechFlyerTurretGun</turretDef>
<angleOffset>-90</angleOffset>
<autoAttack>false</autoAttack>
<renderNodeProperties>
<li>
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
<dataWest>
<rotationOffset>180</rotationOffset>
<offset>(0, 0, 0)</offset>
</dataWest>
</drawData>
</li>
</renderNodeProperties>
</li>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>10000</totalPowerTicks>
</li>
</comps>
</ThingDef>
<PawnKindDef Name="WULA_Mech_Flyer_PawnKind" ParentName="BaseMechanoidKind">
<defName>WULA_Mech_Flyer</defName>
<label>CRm-51"兵蚁"</label>
<race>WULA_Mech_Flyer</race>
<combatPower>190</combatPower>
<allowInMechClusters>false</allowInMechClusters>
<flyingAnimationFramePathPrefix>Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer_Flying_</flyingAnimationFramePathPrefix>
<flyingAnimationFrameCount>2</flyingAnimationFrameCount>
<flyingAnimationTicksPerFrame>2</flyingAnimationTicksPerFrame>
<!-- <flyingAnimationDrawSize>1.35</flyingAnimationDrawSize> -->
<flyingAnimationInheritColors>false</flyingAnimationInheritColors>
<forceDeathOnDowned>true</forceDeathOnDowned>
<forceNoDeathNotification>true</forceNoDeathNotification>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Wula/Things/WULA_Mech_Flyer/WULA_Mech_Flyer</texPath>
<shaderType>CutoutWithOverlay</shaderType>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>1.5</drawSize>
<shadowData>
<volume>(0.4, 0.8, 0.4)</volume>
</shadowData>
</bodyGraphicData>
</li>
</lifeStages>
<techHediffsChance>1</techHediffsChance>
<techHediffsMoney>9999~9999</techHediffsMoney>
</PawnKindDef>
<PawnKindDef ParentName="WULA_Mech_Flyer_PawnKind">
<defName>WULA_Mech_Flyer_Slow</defName>
</PawnKindDef>
<ThingDef ParentName="WULA_Mech_Flyer">
<defName>WULA_Mech_Flyer_Melta</defName>
<label>CRm-75"红火蚁"</label>
<description>乌拉帝国图书馆所制造的最小型的机械体,它们通常由更高一级的机械作战节点自行制造,拥有飞行能力可以快速接近敌方单位,同时使用装备的热熔喷射器向敌方喷射可以融化装甲的热熔束。</description>
<comps Inherit="False">
<!--加上这个组件的机械体会直接跳过原版指挥范围判定-->
<li Class="WulaFallenEmpire.CompProperties_GlobalMechCommand" />
<!--加上这个组件的机械体可以更换武器-->
<li Class="WulaFallenEmpire.CompProperties_MechWeapon" />
<li Class="CompProperties_CanBeDormant" />
<li Class="CompProperties_WakeUpDormant">
<wakeUpOnDamage>true</wakeUpOnDamage>
<wakeUpCheckRadius>30</wakeUpCheckRadius>
<wakeUpSound>MechanoidsWakeUp</wakeUpSound>
</li>
<li Class="CompProperties_TurretGun">
<turretDef>WULA_MechFlyerTurretGun_Melta</turretDef>
<angleOffset>-90</angleOffset>
<autoAttack>false</autoAttack>
<renderNodeProperties>
<li>
<nodeClass>PawnRenderNode_TurretGun</nodeClass>
<workerClass>PawnRenderNodeWorker_TurretGun</workerClass>
<parentTagDef>Body</parentTagDef>
<overrideMeshSize>(1, 1)</overrideMeshSize>
<baseLayer>20</baseLayer>
<pawnType>Any</pawnType>
<drawData>
<dataWest>
<rotationOffset>180</rotationOffset>
<offset>(0, 0, 0)</offset>
</dataWest>
</drawData>
</li>
</renderNodeProperties>
</li>
<li Class="CompProperties_MechPowerCell">
<totalPowerTicks>10000</totalPowerTicks>
</li>
</comps>
</ThingDef>
<PawnKindDef Name="WULA_Mech_Flyer_Melta_PawnKind" ParentName="WULA_Mech_Flyer_PawnKind">
<defName>WULA_Mech_Flyer_Melta</defName>
<label>CRm-75"红火蚁"</label>
<race>WULA_Mech_Flyer_Melta</race>
</PawnKindDef>
<PawnKindDef ParentName="WULA_Mech_Flyer_Melta_PawnKind">
<defName>WULA_Mech_Flyer_Melta_Slow</defName>
</PawnKindDef>
</Defs>

View File

@@ -335,4 +335,6 @@
<WULA_FlyOverCooldown.CooldownRemaining>冷却:{0}</WULA_FlyOverCooldown.CooldownRemaining>
<WULA_FlyOverCooldown.BombardmentFacilityStatus>武器阵列:{0}</WULA_FlyOverCooldown.BombardmentFacilityStatus>
<WULA_FlyOverCooldown.BombardmentFacilityReady>武器阵列:就绪</WULA_FlyOverCooldown.BombardmentFacilityReady>
<SkyfallerPawnLanded>战争机械已部署</SkyfallerPawnLanded>
</LanguageData>

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -0,0 +1,44 @@
using Verse;
using RimWorld;
namespace WulaFallenEmpire
{
public class CompProperties_AbilityLaunchMultiProjectile : CompProperties_AbilityLaunchProjectile
{
public int numProjectiles = 1;
public CompProperties_AbilityLaunchMultiProjectile()
{
compClass = typeof(CompAbilityEffect_LaunchMultiProjectile);
}
}
public class CompAbilityEffect_LaunchMultiProjectile : CompAbilityEffect
{
public new CompProperties_AbilityLaunchMultiProjectile Props => (CompProperties_AbilityLaunchMultiProjectile)props;
public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
{
base.Apply(target, dest);
for (int i = 0; i < Props.numProjectiles; i++)
{
LaunchProjectile(target);
}
}
private void LaunchProjectile(LocalTargetInfo target)
{
if (Props.projectileDef != null)
{
Pawn pawn = parent.pawn;
Projectile projectile = (Projectile)GenSpawn.Spawn(Props.projectileDef, pawn.Position, pawn.Map);
projectile.Launch(pawn, pawn.DrawPos, target, target, ProjectileHitFlags.IntendedTarget, parent.verb.preventFriendlyFire);
}
}
public override bool AICanTargetNow(LocalTargetInfo target)
{
return target.Pawn != null;
}
}
}

View File

@@ -0,0 +1,42 @@
using HarmonyLib;
using RimWorld;
using Verse;
using Verse.AI;
using System.Collections.Generic;
namespace WulaFallenEmpire
{
// 核心补丁:修复威胁禁用检查
[HarmonyPatch(typeof(Pawn), "ThreatDisabled")]
public static class Patch_Pawn_ThreatDisabled
{
public static void Postfix(Pawn __instance, IAttackTargetSearcher disabledFor, ref bool __result)
{
if (!__result) return;
if (!__instance.IsColonyMech) return;
var comp = __instance.GetComp<CompAutonomousMech>();
if (comp != null && comp.CanFightAutonomously)
{
__result = false;
}
}
}
// 核心补丁:修复机械师需求检查 - 正确的方法在 MechanitorUtility 中
[HarmonyPatch(typeof(MechanitorUtility), "IsColonyMechRequiringMechanitor")]
public static class Patch_MechanitorUtility_IsColonyMechRequiringMechanitor
{
public static void Postfix(Pawn mech, ref bool __result)
{
if (__result && mech.IsColonyMech)
{
var comp = mech.GetComp<CompAutonomousMech>();
if (comp != null && comp.CanFightAutonomously)
{
__result = false;
}
}
}
}
}

View File

@@ -109,6 +109,16 @@ namespace WulaFallenEmpire
return CanBeAutonomous;
}
}
public bool IsInCombatMode
{
get
{
if (MechPawn == null || MechPawn.Dead || MechPawn.Downed)
return false;
// 被征召或处于自主战斗模式
return MechPawn.Drafted || (CanFightAutonomously && MechPawn.mindState?.duty?.def == DutyDefOf.AssaultColony);
}
}
// 在 CompAutonomousMech 类中添加这个新属性
public bool CanFightAutonomously

View File

@@ -0,0 +1,76 @@
using Verse;
using RimWorld;
namespace WulaFallenEmpire
{
public class CompProperties_SkyfallerPawnSpawner : CompProperties
{
public PawnKindDef pawnKind;
public FactionDef faction;
public bool spawnDrafted = false;
public bool spawnHostile = false;
public CompProperties_SkyfallerPawnSpawner()
{
compClass = typeof(CompSkyfallerPawnSpawner);
}
}
public class CompSkyfallerPawnSpawner : ThingComp
{
public CompProperties_SkyfallerPawnSpawner Props => (CompProperties_SkyfallerPawnSpawner)props;
public void SpawnPawn(Map map, IntVec3 position)
{
if (Props.pawnKind == null)
{
Log.Error("CompSkyfallerPawnSpawner: pawnKind is null");
return;
}
// 创建 Pawn
PawnGenerationRequest request = new PawnGenerationRequest(
Props.pawnKind,
faction: GetFaction(),
context: PawnGenerationContext.NonPlayer,
fixedBiologicalAge: 0,
fixedChronologicalAge: 0
);
Pawn pawn = PawnGenerator.GeneratePawn(request);
// 设置阵营关系
if (Props.spawnHostile)
{
pawn.SetFaction(Faction.OfAncientsHostile);
}
// 生成 Pawn
GenSpawn.Spawn(pawn, position, map);
// 如果需要,设置为征召状态
if (Props.spawnDrafted && pawn.drafter != null)
{
pawn.drafter.Drafted = true;
}
// 发送生成消息
Messages.Message("SkyfallerPawnLanded".Translate(pawn.LabelShortCap), pawn, MessageTypeDefOf.NeutralEvent);
}
private Faction GetFaction()
{
if (Props.faction != null)
{
return FactionUtility.DefaultFactionFrom(Props.faction);
}
if (Props.spawnHostile)
{
return Faction.OfAncientsHostile;
}
return Faction.OfAncients;
}
}
}

View File

@@ -0,0 +1,50 @@
using Verse;
using RimWorld;
using System.Collections.Generic;
namespace WulaFallenEmpire
{
public class Skyfaller_PawnSpawner : Skyfaller
{
private CompSkyfallerPawnSpawner pawnSpawnerComp;
public override void PostPostMake()
{
base.PostPostMake();
pawnSpawnerComp = GetComp<CompSkyfallerPawnSpawner>();
}
protected override void Impact()
{
// 在调用基类 Impact 之前保存位置信息
IntVec3 impactPosition = base.Position;
Map impactMap = base.Map;
// 调用基类 Impact 方法(这会处理爆炸、碎片等效果)
base.Impact();
// 生成 Pawn
if (pawnSpawnerComp != null && impactMap != null)
{
pawnSpawnerComp.SpawnPawn(impactMap, impactPosition);
}
}
// 可选:重写 SpawnThings 方法以防止生成原版的内容
protected override void SpawnThings()
{
// 如果我们要生成 Pawn可能不想生成原版的物品
// 但保留原版逻辑以防有其他内容需要生成
base.SpawnThings();
}
public override void ExposeData()
{
base.ExposeData();
if (Scribe.mode == LoadSaveMode.LoadingVars)
{
pawnSpawnerComp = GetComp<CompSkyfallerPawnSpawner>();
}
}
}
}

View File

@@ -71,6 +71,7 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Ability\CompAbilityEffect_LaunchMultiProjectile.cs" />
<Compile Include="Ability\CompAbilityEffect_ResearchPrereq.cs" />
<Compile Include="Ability\WULA_AbilityBombardment\CompAbilityEffect_Bombardment.cs" />
<Compile Include="Ability\WULA_AbilityBombardment\CompProperties_AbilityBombardment.cs" />
@@ -142,6 +143,7 @@
<Compile Include="HarmonyPatches\WULA_AutonomousMech\Patch_FloatMenuOptionProvider_SelectedPawnValid.cs" />
<Compile Include="HarmonyPatches\WULA_AutonomousMech\Patch_IsColonyMechPlayerControlled.cs" />
<Compile Include="HarmonyPatches\WULA_AutonomousMech\Patch_MechanitorUtility_CanDraftMech.cs" />
<Compile Include="HarmonyPatches\WULA_AutonomousMech\Patch_Pawn_ThreatDisabled.cs" />
<Compile Include="HarmonyPatches\WULA_AutonomousMech\Patch_UncontrolledMechDrawPulse.cs" />
<Compile Include="HediffComp\HediffCompProperties_NanoRepair.cs" />
<Compile Include="HediffComp\HediffCompProperties_SwitchableHediff.cs" />
@@ -220,6 +222,8 @@
<Compile Include="BuildingComp\WULA_Shuttle\Dialog_ArmedShuttleTransfer.cs" />
<Compile Include="BuildingComp\WULA_Shuttle\GenStep_WulaPocketSpaceSmall.cs" />
<Compile Include="BuildingComp\WULA_Shuttle\PocketSpaceThingHolder.cs" />
<Compile Include="ThingComp\WULA_SkyfallerPawnSpawner\CompProperties_SkyfallerPawnSpawner.cs" />
<Compile Include="ThingComp\WULA_SkyfallerPawnSpawner\Skyfaller_PawnSpawner.cs" />
<Compile Include="Utils\BezierUtil.cs" />
<Compile Include="Verb\MeleeAttack_Cleave\CompCleave.cs" />
<Compile Include="HarmonyPatches\Caravan_NeedsTracker_TrySatisfyPawnNeeds_Patch.cs" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB