1
This commit is contained in:
Binary file not shown.
@@ -343,6 +343,9 @@
|
|||||||
<weaponMoney>99999~99999</weaponMoney>
|
<weaponMoney>99999~99999</weaponMoney>
|
||||||
|
|
||||||
<controlGroupPortraitZoom>0.7</controlGroupPortraitZoom>
|
<controlGroupPortraitZoom>0.7</controlGroupPortraitZoom>
|
||||||
|
<weaponTags>
|
||||||
|
<li>Wula_Mech_Mobile_Factory_Weapon</li>
|
||||||
|
</weaponTags>
|
||||||
|
|
||||||
<abilities>
|
<abilities>
|
||||||
<li>Wula_Mech_Mobile_Factory_Produce</li>
|
<li>Wula_Mech_Mobile_Factory_Produce</li>
|
||||||
|
|||||||
@@ -181,6 +181,38 @@
|
|||||||
</li>
|
</li>
|
||||||
</subSounds>
|
</subSounds>
|
||||||
</SoundDef>
|
</SoundDef>
|
||||||
|
<SoundDef>
|
||||||
|
<defName>Wula_AI_Heavy_Panzer_Turret_Weapon_Shootingsound</defName>
|
||||||
|
<context>MapOnly</context>
|
||||||
|
<maxSimultaneous>2</maxSimultaneous>
|
||||||
|
<subSounds>
|
||||||
|
<li>
|
||||||
|
<grains>
|
||||||
|
<li Class="AudioGrain_Clip">
|
||||||
|
<clipPath>Wula/Wula_AI_Heavy_Panzer_Turret_Weapon_Shootingsound</clipPath>
|
||||||
|
</li>
|
||||||
|
</grains>
|
||||||
|
<volumeRange>45</volumeRange>
|
||||||
|
<pitchRange>0.9~1.1</pitchRange>
|
||||||
|
</li>
|
||||||
|
</subSounds>
|
||||||
|
</SoundDef>
|
||||||
|
<SoundDef>
|
||||||
|
<defName>Wula_AI_Panzer_Destroyer_Turret_Weapon_Shootingsound</defName>
|
||||||
|
<context>MapOnly</context>
|
||||||
|
<maxSimultaneous>1</maxSimultaneous>
|
||||||
|
<subSounds>
|
||||||
|
<li>
|
||||||
|
<grains>
|
||||||
|
<li Class="AudioGrain_Clip">
|
||||||
|
<clipPath>Wula/Wula_AI_Panzer_Destroyer_Turret_Weapon_Shootingsound</clipPath>
|
||||||
|
</li>
|
||||||
|
</grains>
|
||||||
|
<volumeRange>65</volumeRange>
|
||||||
|
<pitchRange>0.9~1.1</pitchRange>
|
||||||
|
</li>
|
||||||
|
</subSounds>
|
||||||
|
</SoundDef>
|
||||||
<SoundDef>
|
<SoundDef>
|
||||||
<defName>WULA_PsiCrusher_Sound</defName>
|
<defName>WULA_PsiCrusher_Sound</defName>
|
||||||
<context>MapOnly</context>
|
<context>MapOnly</context>
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
<!-- 战车 -->
|
<!-- 战车 -->
|
||||||
<ThingDef ParentName="BuildingBase">
|
<ThingDef ParentName="BuildingBase">
|
||||||
<defName>Wula_AI_Heavy_Panzer_Cleanzone</defName>
|
<defName>Wula_AI_Heavy_Panzer_Cleanzone</defName>
|
||||||
<label>HAp-6"战车"</label>
|
<label>HAp-6"巨戟"</label>
|
||||||
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。\n\n战车是乌拉帝国的中型战争机械,以悬浮的方式穿梭于战场之上,使用穿透力强大的战车炮和导弹打击敌方,是乌拉帝国前锋部队的中流砥柱。</description>
|
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。\n\n巨戟是乌拉帝国的中型构装体,以悬浮的方式穿梭于战场之上,使用拥有强大穿透力且射速较快的双联晶化炮打击敌方,是乌拉帝国前锋部队的中流砥柱。</description>
|
||||||
<uiIconPath>Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Incoming</uiIconPath>
|
<uiIconPath>Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Incoming</uiIconPath>
|
||||||
<uiIconScale>1.33</uiIconScale>
|
<uiIconScale>1</uiIconScale>
|
||||||
<uiIconOffset>(0, -0.1)</uiIconOffset>
|
<uiIconOffset>(0, -0.1)</uiIconOffset>
|
||||||
<minifiedDef>MinifiedThing</minifiedDef>
|
<minifiedDef>MinifiedThing</minifiedDef>
|
||||||
<tickerType>Normal</tickerType>
|
<tickerType>Normal</tickerType>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone</texPath>
|
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone</texPath>
|
||||||
<graphicClass>Graphic_Multi</graphicClass>
|
<graphicClass>Graphic_Multi</graphicClass>
|
||||||
<drawSize>(3,3)</drawSize>
|
<drawSize>(4,4)</drawSize>
|
||||||
<damageData>
|
<damageData>
|
||||||
<enabled>false</enabled>
|
<enabled>false</enabled>
|
||||||
</damageData>
|
</damageData>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<Mass>1</Mass>
|
<Mass>1</Mass>
|
||||||
<Flammability>0</Flammability>
|
<Flammability>0</Flammability>
|
||||||
</statBases>
|
</statBases>
|
||||||
<size>(3,3)</size>
|
<size>(4,4)</size>
|
||||||
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
|
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
|
||||||
<resourcesFractionWhenDeconstructed>0</resourcesFractionWhenDeconstructed>
|
<resourcesFractionWhenDeconstructed>0</resourcesFractionWhenDeconstructed>
|
||||||
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
|
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="SkyfallerBase">
|
<ThingDef ParentName="SkyfallerBase">
|
||||||
<defName>Wula_AI_Heavy_Panzer_Incoming</defName>
|
<defName>Wula_AI_Heavy_Panzer_Incoming</defName>
|
||||||
<label>HAp-6"战车"(空投中)</label>
|
<label>HAp-6"巨戟"(空投中)</label>
|
||||||
<size>(1,1)</size>
|
<size>(1,1)</size>
|
||||||
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
|
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
||||||
<pawnKind>Wula_AI_Heavy_Panzer</pawnKind>
|
<pawnKind>Wula_AI_Heavy_Panzer</pawnKind>
|
||||||
<faction>PlayerColony</faction>
|
<faction>PlayerColony</faction>
|
||||||
<spawnDrafted>true</spawnDrafted>
|
<spawnDrafted>false</spawnDrafted>
|
||||||
<spawnHostile>false</spawnHostile>
|
<spawnHostile>false</spawnHostile>
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
@@ -119,10 +119,10 @@
|
|||||||
<!-- 喷火战车 -->
|
<!-- 喷火战车 -->
|
||||||
<ThingDef ParentName="BuildingBase">
|
<ThingDef ParentName="BuildingBase">
|
||||||
<defName>Wula_AI_Rocket_Panzer_Cleanzone</defName>
|
<defName>Wula_AI_Rocket_Panzer_Cleanzone</defName>
|
||||||
<label>HRp-3"喷火战车"</label>
|
<label>HRp-3"炎霖"</label>
|
||||||
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。\n\n喷火战车乌拉帝国的中型战争机械,以悬浮的方式穿梭于战场之上,拥有车体臼炮和两具可以发射大量燃烧火箭弹的转轮导弹巢,但是未像其姊妹型号那样装备护盾。</description>
|
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。\n\n炎霖是乌拉帝国的中型战争机械,以悬浮的方式穿梭于战场之上,可以在远距离上使用火箭弹巢发射漫天的弹幕,用纯粹的火力淹没敌方集群。</description>
|
||||||
<uiIconPath>Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming</uiIconPath>
|
<uiIconPath>Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming</uiIconPath>
|
||||||
<uiIconScale>1.33</uiIconScale>
|
<uiIconScale>1</uiIconScale>
|
||||||
<uiIconOffset>(0, -0.1)</uiIconOffset>
|
<uiIconOffset>(0, -0.1)</uiIconOffset>
|
||||||
<minifiedDef>MinifiedThing</minifiedDef>
|
<minifiedDef>MinifiedThing</minifiedDef>
|
||||||
<tickerType>Normal</tickerType>
|
<tickerType>Normal</tickerType>
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
</ThingDef>
|
</ThingDef>
|
||||||
<ThingDef ParentName="SkyfallerBase">
|
<ThingDef ParentName="SkyfallerBase">
|
||||||
<defName>Wula_AI_Rocket_Panzer_Incoming</defName>
|
<defName>Wula_AI_Rocket_Panzer_Incoming</defName>
|
||||||
<label>HRp-3"喷火战车"(空投中)</label>
|
<label>HRp-3"炎霖"(空投中)</label>
|
||||||
<size>(1,1)</size>
|
<size>(1,1)</size>
|
||||||
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
|
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
@@ -226,7 +226,123 @@
|
|||||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
||||||
<pawnKind>Wula_AI_Rocket_Panzer</pawnKind>
|
<pawnKind>Wula_AI_Rocket_Panzer</pawnKind>
|
||||||
<faction>PlayerColony</faction>
|
<faction>PlayerColony</faction>
|
||||||
<spawnDrafted>true</spawnDrafted>
|
<spawnDrafted>false</spawnDrafted>
|
||||||
|
<spawnHostile>false</spawnHostile>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<!-- 坦克歼击车 -->
|
||||||
|
<ThingDef ParentName="BuildingBase">
|
||||||
|
<defName>Wula_AI_Panzer_Destroyer_Cleanzone</defName>
|
||||||
|
<label>HDp-1"冥波"</label>
|
||||||
|
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。\n\n冥波是乌拉帝国的中型战争机械,以悬浮的方式穿梭于战场之上,拥有一门射速缓慢但射程极远、威力强大的电浆炮,足以威胁那些最厚实的装甲单位。</description>
|
||||||
|
<uiIconPath>Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Panzer_Destroyer_Incoming</uiIconPath>
|
||||||
|
<uiIconScale>1</uiIconScale>
|
||||||
|
<uiIconOffset>(0, -0.1)</uiIconOffset>
|
||||||
|
<minifiedDef>MinifiedThing</minifiedDef>
|
||||||
|
<tickerType>Normal</tickerType>
|
||||||
|
<tradeability>None</tradeability>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<ThingDef>Wula_AI_Panzer_Destroyer</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>
|
||||||
|
<costList Inherit="False">
|
||||||
|
<WULA_Alloy>300</WULA_Alloy>
|
||||||
|
<WULA_Charge_Cube>18</WULA_Charge_Cube>
|
||||||
|
<ComponentSpacer>2</ComponentSpacer>
|
||||||
|
<Uranium>50</Uranium>
|
||||||
|
<WULA_Tex_Voucher>1</WULA_Tex_Voucher>
|
||||||
|
</costList>
|
||||||
|
<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_AI_Heavy_Panzer_Technology</li>
|
||||||
|
</researchPrerequisites>
|
||||||
|
<statBases>
|
||||||
|
<MarketValue>0</MarketValue>
|
||||||
|
<MaxHitPoints>1</MaxHitPoints>
|
||||||
|
<WorkToBuild>0</WorkToBuild>
|
||||||
|
<Mass>1</Mass>
|
||||||
|
<Flammability>0</Flammability>
|
||||||
|
</statBases>
|
||||||
|
<size>(3,3)</size>
|
||||||
|
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
|
||||||
|
<resourcesFractionWhenDeconstructed>0</resourcesFractionWhenDeconstructed>
|
||||||
|
<leaveResourcesWhenKilled>false</leaveResourcesWhenKilled>
|
||||||
|
<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_AI_Panzer_Destroyer_Incoming</skyfallerDef> <!-- 替换为您想要的Skyfaller类型 -->
|
||||||
|
<destroyBuilding>true</destroyBuilding>
|
||||||
|
<delayTicks>1</delayTicks>
|
||||||
|
<allowThinRoof>true</allowThinRoof>
|
||||||
|
<allowThickRoof>false</allowThickRoof>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
<ThingDef ParentName="SkyfallerBase">
|
||||||
|
<defName>Wula_AI_Panzer_Destroyer_Incoming</defName>
|
||||||
|
<label>HDp-1"冥波"(空投中)</label>
|
||||||
|
<size>(1,1)</size>
|
||||||
|
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
<shaderType>CutoutFlying</shaderType>
|
||||||
|
<drawSize>(7,7)</drawSize>
|
||||||
|
</graphicData>
|
||||||
|
<skyfaller>
|
||||||
|
<movementType>Accelerate</movementType>
|
||||||
|
<shadow>Things/Skyfaller/SkyfallerShadowDropPod</shadow>
|
||||||
|
<shadowSize>(7, 7)</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>6</explosionRadius>
|
||||||
|
<explosionDamage>WULA_Mech_Drop</explosionDamage>
|
||||||
|
<explosionDamageFactor>0</explosionDamageFactor>
|
||||||
|
</skyfaller>
|
||||||
|
<comps>
|
||||||
|
<li Class="CompProperties_Effecter">
|
||||||
|
<effecterDef>Smoke_Joint</effecterDef>
|
||||||
|
</li>
|
||||||
|
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
||||||
|
<pawnKind>Wula_AI_Panzer_Destroyer</pawnKind>
|
||||||
|
<faction>PlayerColony</faction>
|
||||||
|
<spawnDrafted>false</spawnDrafted>
|
||||||
<spawnHostile>false</spawnHostile>
|
<spawnHostile>false</spawnHostile>
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
@@ -311,7 +427,7 @@
|
|||||||
<texPath>Wula/Things/WULA_Mobile_Shield/WULA_Mobile_Shield_Incoming</texPath>
|
<texPath>Wula/Things/WULA_Mobile_Shield/WULA_Mobile_Shield_Incoming</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
<shaderType>CutoutFlying</shaderType>
|
<shaderType>CutoutFlying</shaderType>
|
||||||
<drawSize>(5,5)</drawSize>
|
<drawSize>(8,8)</drawSize>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
<skyfaller>
|
<skyfaller>
|
||||||
<movementType>Accelerate</movementType>
|
<movementType>Accelerate</movementType>
|
||||||
@@ -426,7 +542,7 @@
|
|||||||
<texPath>Wula/Things/Wula_Mech_Mobile_Factory/Wula_Mech_Mobile_Factory_Incoming</texPath>
|
<texPath>Wula/Things/Wula_Mech_Mobile_Factory/Wula_Mech_Mobile_Factory_Incoming</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
<shaderType>CutoutFlying</shaderType>
|
<shaderType>CutoutFlying</shaderType>
|
||||||
<drawSize>(9,9)</drawSize>
|
<drawSize>(12,12)</drawSize>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
<skyfaller>
|
<skyfaller>
|
||||||
<movementType>Accelerate</movementType>
|
<movementType>Accelerate</movementType>
|
||||||
@@ -456,7 +572,7 @@
|
|||||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
||||||
<pawnKind>Wula_Mech_Mobile_Factory</pawnKind>
|
<pawnKind>Wula_Mech_Mobile_Factory</pawnKind>
|
||||||
<faction>PlayerColony</faction>
|
<faction>PlayerColony</faction>
|
||||||
<spawnDrafted>true</spawnDrafted>
|
<spawnDrafted>false</spawnDrafted>
|
||||||
<spawnHostile>false</spawnHostile>
|
<spawnHostile>false</spawnHostile>
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
|
|||||||
@@ -281,6 +281,65 @@
|
|||||||
</li>
|
</li>
|
||||||
</modExtensions>
|
</modExtensions>
|
||||||
</ThingDef>
|
</ThingDef>
|
||||||
|
<ThingDef ParentName="BaseHumanMakeableGun">
|
||||||
|
<defName>Wula_Mech_Mobile_Factory_Main_Weapon</defName>
|
||||||
|
<label>目标标定器</label>
|
||||||
|
<description>MFm-2"陆行舰"车体上的测距器,可以确保其炮塔在可以开火的最佳距离,被其瞄准的目标会成为炮塔的优先攻击目标。</description>
|
||||||
|
<tickerType>Normal</tickerType>
|
||||||
|
<techLevel>Spacer</techLevel>
|
||||||
|
<tradeability>None</tradeability>
|
||||||
|
<destroyOnDrop>true</destroyOnDrop>
|
||||||
|
<uiIconPath>Wula/Weapon/WULA_WM_Panzer_Destroyer_Turret</uiIconPath>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
||||||
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
<drawSize>1.35</drawSize>
|
||||||
|
</graphicData>
|
||||||
|
<soundInteract>Interact_Rifle</soundInteract>
|
||||||
|
<recipeMaker Inherit="False" IsNull="True"/>
|
||||||
|
<statBases>
|
||||||
|
<WorkToMake>2500</WorkToMake>
|
||||||
|
<!-- <MarketValue>370</MarketValue> -->
|
||||||
|
<Mass>8</Mass>
|
||||||
|
<AccuracyTouch>1</AccuracyTouch>
|
||||||
|
<AccuracyShort>1</AccuracyShort>
|
||||||
|
<AccuracyMedium>1</AccuracyMedium>
|
||||||
|
<AccuracyLong>1</AccuracyLong>
|
||||||
|
<RangedWeapon_Cooldown>0.1</RangedWeapon_Cooldown>
|
||||||
|
</statBases>
|
||||||
|
<verbs>
|
||||||
|
<li>
|
||||||
|
<verbClass>WulaFallenEmpire.Verb_RangeChecker</verbClass>
|
||||||
|
<hasStandardCommand>true</hasStandardCommand>
|
||||||
|
<defaultProjectile>Bullet_ChargeRifle</defaultProjectile>
|
||||||
|
<minRange>12</minRange>
|
||||||
|
<range>120</range>
|
||||||
|
<warmupTime>0.2</warmupTime>
|
||||||
|
<burstShotCount>1</burstShotCount>
|
||||||
|
<noiseRadius>0</noiseRadius>
|
||||||
|
<requireLineOfSight>false</requireLineOfSight>
|
||||||
|
<!-- <soundCast>RocketswarmLauncher_Fire</soundCast>
|
||||||
|
<soundCastTail>GunTail_Heavy</soundCastTail> -->
|
||||||
|
<targetParams>
|
||||||
|
<canTargetLocations>true</canTargetLocations>
|
||||||
|
</targetParams>
|
||||||
|
</li>
|
||||||
|
</verbs>
|
||||||
|
<costList Inherit="False">
|
||||||
|
<Steel>1</Steel>
|
||||||
|
</costList>
|
||||||
|
<weaponTags Inherit="False">
|
||||||
|
<li>Wula_Mech_Mobile_Factory_Weapon</li>
|
||||||
|
</weaponTags>
|
||||||
|
<thingCategories Inherit="False"/>
|
||||||
|
<comps>
|
||||||
|
<li Class="WulaFallenEmpire.CompProperties_MechOnlyWeapon">
|
||||||
|
<allowedMechRaces>
|
||||||
|
<li>Wula_Mech_Mobile_Factory</li>
|
||||||
|
</allowedMechRaces>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
<ThingDef ParentName="BaseWeaponTurret">
|
<ThingDef ParentName="BaseWeaponTurret">
|
||||||
<defName>WULA_MechFlyerTurretGun</defName>
|
<defName>WULA_MechFlyerTurretGun</defName>
|
||||||
@@ -396,7 +455,7 @@
|
|||||||
<burstShotCount>2</burstShotCount>
|
<burstShotCount>2</burstShotCount>
|
||||||
<ticksBetweenBurstShots>4</ticksBetweenBurstShots>
|
<ticksBetweenBurstShots>4</ticksBetweenBurstShots>
|
||||||
<requireLineOfSight>true</requireLineOfSight>
|
<requireLineOfSight>true</requireLineOfSight>
|
||||||
<soundCast>WULA_MW_Mass_Drivers_Shootingsound</soundCast>
|
<soundCast>Wula_AI_Heavy_Panzer_Turret_Weapon_Shootingsound</soundCast>
|
||||||
<soundCastTail>GunTail_Heavy</soundCastTail>
|
<soundCastTail>GunTail_Heavy</soundCastTail>
|
||||||
<muzzleFlashScale>18</muzzleFlashScale>
|
<muzzleFlashScale>18</muzzleFlashScale>
|
||||||
<canGoWild>false</canGoWild>
|
<canGoWild>false</canGoWild>
|
||||||
@@ -450,7 +509,7 @@
|
|||||||
<techLevel>Spacer</techLevel>
|
<techLevel>Spacer</techLevel>
|
||||||
<tradeability>None</tradeability>
|
<tradeability>None</tradeability>
|
||||||
<destroyOnDrop>true</destroyOnDrop>
|
<destroyOnDrop>true</destroyOnDrop>
|
||||||
<uiIconPath>Wula/Projectile/WULA_Shrapnel</uiIconPath>
|
<uiIconPath>Wula/Weapon/WULA_WM_Panzer_Turret</uiIconPath>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
@@ -598,7 +657,7 @@
|
|||||||
<techLevel>Spacer</techLevel>
|
<techLevel>Spacer</techLevel>
|
||||||
<tradeability>None</tradeability>
|
<tradeability>None</tradeability>
|
||||||
<destroyOnDrop>true</destroyOnDrop>
|
<destroyOnDrop>true</destroyOnDrop>
|
||||||
<uiIconPath>Wula/Projectile/WULA_Shrapnel</uiIconPath>
|
<uiIconPath>Wula/Weapon/WULA_WM_Panzer_Rocket_Turret</uiIconPath>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
@@ -657,7 +716,7 @@
|
|||||||
<destroyOnDrop>true</destroyOnDrop>
|
<destroyOnDrop>true</destroyOnDrop>
|
||||||
<techLevel>Ultra</techLevel>
|
<techLevel>Ultra</techLevel>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>Wula/Weapon/WULA_WM_Panzer_Turret</texPath>
|
<texPath>Wula/Weapon/WULA_WM_Panzer_Destroyer_Turret</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
<drawSize>3</drawSize>
|
<drawSize>3</drawSize>
|
||||||
</graphicData>
|
</graphicData>
|
||||||
@@ -681,7 +740,7 @@
|
|||||||
<burstShotCount>1</burstShotCount>
|
<burstShotCount>1</burstShotCount>
|
||||||
<ticksBetweenBurstShots>8</ticksBetweenBurstShots>
|
<ticksBetweenBurstShots>8</ticksBetweenBurstShots>
|
||||||
<requireLineOfSight>true</requireLineOfSight>
|
<requireLineOfSight>true</requireLineOfSight>
|
||||||
<soundCast>WULA_MW_Mass_Drivers_Shootingsound</soundCast>
|
<soundCast>Wula_AI_Panzer_Destroyer_Turret_Weapon_Shootingsound</soundCast>
|
||||||
<soundCastTail>GunTail_Heavy</soundCastTail>
|
<soundCastTail>GunTail_Heavy</soundCastTail>
|
||||||
<muzzleFlashScale>18</muzzleFlashScale>
|
<muzzleFlashScale>18</muzzleFlashScale>
|
||||||
<canGoWild>false</canGoWild>
|
<canGoWild>false</canGoWild>
|
||||||
@@ -743,7 +802,7 @@
|
|||||||
<techLevel>Spacer</techLevel>
|
<techLevel>Spacer</techLevel>
|
||||||
<tradeability>None</tradeability>
|
<tradeability>None</tradeability>
|
||||||
<destroyOnDrop>true</destroyOnDrop>
|
<destroyOnDrop>true</destroyOnDrop>
|
||||||
<uiIconPath>Wula/Projectile/WULA_Shrapnel</uiIconPath>
|
<uiIconPath>Wula/Weapon/WULA_WM_Panzer_Destroyer_Turret</uiIconPath>
|
||||||
<graphicData>
|
<graphicData>
|
||||||
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>
|
||||||
<graphicClass>Graphic_Single</graphicClass>
|
<graphicClass>Graphic_Single</graphicClass>
|
||||||
|
|||||||
@@ -1490,7 +1490,7 @@
|
|||||||
<repairEffect>ConstructMetal</repairEffect>
|
<repairEffect>ConstructMetal</repairEffect>
|
||||||
</li>
|
</li>
|
||||||
<li Class="WulaFallenEmpire.CompProperties_MechInherentWeapon">
|
<li Class="WulaFallenEmpire.CompProperties_MechInherentWeapon">
|
||||||
<weaponDef>Wula_AI_Heavy_Panzer_Main_Weapon</weaponDef>
|
<weaponDef>Wula_Mech_Mobile_Factory_Main_Weapon</weaponDef>
|
||||||
</li>
|
</li>
|
||||||
<li Class="WulaFallenEmpire.CompProperties_MechDefaultPilot">
|
<li Class="WulaFallenEmpire.CompProperties_MechDefaultPilot">
|
||||||
<enableForNonPlayerFaction>true</enableForNonPlayerFaction>
|
<enableForNonPlayerFaction>true</enableForNonPlayerFaction>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 431 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 951 KiB |
BIN
Content/Textures/Wula/Weapon/WULA_WM_Panzer_Destroyer_Turret.png
Normal file
BIN
Content/Textures/Wula/Weapon/WULA_WM_Panzer_Destroyer_Turret.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
@@ -1,4 +1,3 @@
|
|||||||
// File: Verb_RangeChecker.cs
|
|
||||||
using RimWorld;
|
using RimWorld;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@@ -7,194 +6,60 @@ using Verse;
|
|||||||
namespace WulaFallenEmpire
|
namespace WulaFallenEmpire
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用于距离判断的Verb,不发射任何射弹,不造成伤害,仅用于距离计算和AI判断
|
/// 用于距离判断的Verb,不发射任何射弹,不造成伤害,不产生噪音
|
||||||
|
/// 仅用于距离计算、视线检查和AI判断
|
||||||
/// 当发射成功时,会设置Pawn身上所有Comp_MultiTurretGun的focusTarget为目标
|
/// 当发射成功时,会设置Pawn身上所有Comp_MultiTurretGun的focusTarget为目标
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Verb_RangeChecker : Verb_LaunchProjectile
|
public class Verb_RangeChecker : Verb
|
||||||
{
|
{
|
||||||
|
// 重写瞄准相关方法,使其不产生视觉或声音效果
|
||||||
|
public override void WarmupComplete()
|
||||||
|
{
|
||||||
|
base.WarmupComplete();
|
||||||
|
|
||||||
|
// 不播放射击声音
|
||||||
|
// 不产生射击效果
|
||||||
|
}
|
||||||
|
|
||||||
protected override bool TryCastShot()
|
protected override bool TryCastShot()
|
||||||
{
|
{
|
||||||
|
// 基础检查
|
||||||
if (currentTarget.HasThing && currentTarget.Thing.Map != caster.Map)
|
if (currentTarget.HasThing && currentTarget.Thing.Map != caster.Map)
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ThingDef projectile = Projectile;
|
|
||||||
if (projectile == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ShootLine resultingLine;
|
|
||||||
bool flag = TryFindShootLineFromTo(caster.Position, currentTarget, out resultingLine);
|
|
||||||
if (verbProps.stopBurstWithoutLos && !flag)
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// 检查视线
|
||||||
|
ShootLine shootLine;
|
||||||
|
if (!TryFindShootLineFromTo(caster.Position, currentTarget, out shootLine))
|
||||||
|
{
|
||||||
|
if (verbProps.stopBurstWithoutLos)
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更新设备状态(如果有)
|
||||||
if (base.EquipmentSource != null)
|
if (base.EquipmentSource != null)
|
||||||
{
|
{
|
||||||
base.EquipmentSource.GetComp<CompChangeableProjectile>()?.Notify_ProjectileLaunched();
|
base.EquipmentSource.GetComp<CompChangeableProjectile>()?.Notify_ProjectileLaunched();
|
||||||
base.EquipmentSource.GetComp<CompApparelVerbOwner_Charged>()?.UsedOnce();
|
base.EquipmentSource.GetComp<CompApparelVerbOwner_Charged>()?.UsedOnce();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 记录射击时间
|
||||||
lastShotTick = Find.TickManager.TicksGame;
|
lastShotTick = Find.TickManager.TicksGame;
|
||||||
Thing manningPawn = caster;
|
|
||||||
Thing equipmentSource = base.EquipmentSource;
|
|
||||||
CompMannable compMannable = caster.TryGetComp<CompMannable>();
|
|
||||||
if (compMannable?.ManningPawn != null)
|
|
||||||
{
|
|
||||||
manningPawn = compMannable.ManningPawn;
|
|
||||||
equipmentSource = caster;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector3 drawPos = caster.DrawPos;
|
// 更新炮塔焦点目标
|
||||||
Projectile projectile2 = (Projectile)GenSpawn.Spawn(projectile, resultingLine.Source, caster.Map);
|
UpdateTurretFocusTargets();
|
||||||
if (equipmentSource.TryGetComp(out CompUniqueWeapon comp))
|
|
||||||
{
|
|
||||||
foreach (WeaponTraitDef item in comp.TraitsListForReading)
|
|
||||||
{
|
|
||||||
if (item.damageDefOverride != null)
|
|
||||||
{
|
|
||||||
projectile2.damageDefOverride = item.damageDefOverride;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!item.extraDamages.NullOrEmpty())
|
|
||||||
{
|
|
||||||
Projectile projectile3 = projectile2;
|
|
||||||
if (projectile3.extraDamages == null)
|
|
||||||
{
|
|
||||||
projectile3.extraDamages = new List<ExtraDamage>();
|
|
||||||
}
|
|
||||||
projectile2.extraDamages.AddRange(item.extraDamages);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (verbProps.ForcedMissRadius > 0.5f)
|
// 返回成功,但不实际射击
|
||||||
{
|
|
||||||
float num = verbProps.ForcedMissRadius;
|
|
||||||
if (manningPawn is Pawn pawn)
|
|
||||||
{
|
|
||||||
num *= verbProps.GetForceMissFactorFor(equipmentSource, pawn);
|
|
||||||
}
|
|
||||||
|
|
||||||
float num2 = VerbUtility.CalculateAdjustedForcedMiss(num, currentTarget.Cell - caster.Position);
|
|
||||||
if (num2 > 0.5f)
|
|
||||||
{
|
|
||||||
IntVec3 forcedMissTarget = GetForcedMissTarget(num2);
|
|
||||||
if (forcedMissTarget != currentTarget.Cell)
|
|
||||||
{
|
|
||||||
ProjectileHitFlags projectileHitFlags = ProjectileHitFlags.NonTargetWorld;
|
|
||||||
if (Rand.Chance(0.5f))
|
|
||||||
{
|
|
||||||
projectileHitFlags = ProjectileHitFlags.All;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!canHitNonTargetPawnsNow)
|
|
||||||
{
|
|
||||||
projectileHitFlags &= ~ProjectileHitFlags.NonTargetPawns;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟发射成功,但不实际发射
|
|
||||||
bool shotResult = SimulateShotSuccess(drawPos, forcedMissTarget, currentTarget, projectileHitFlags, preventFriendlyFire, equipmentSource);
|
|
||||||
if (shotResult)
|
|
||||||
{
|
|
||||||
UpdateTurretFocusTargets();
|
|
||||||
}
|
|
||||||
return shotResult;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ShotReport shotReport = ShotReport.HitReportFor(caster, this, currentTarget);
|
|
||||||
Thing randomCoverToMissInto = shotReport.GetRandomCoverToMissInto();
|
|
||||||
ThingDef targetCoverDef = randomCoverToMissInto?.def;
|
|
||||||
|
|
||||||
if (verbProps.canGoWild && !Rand.Chance(shotReport.AimOnTargetChance_IgnoringPosture))
|
|
||||||
{
|
|
||||||
bool flyOverhead = projectile2?.def?.projectile != null && projectile2.def.projectile.flyOverhead;
|
|
||||||
resultingLine.ChangeDestToMissWild(shotReport.AimOnTargetChance_StandardTarget, flyOverhead, caster.Map);
|
|
||||||
ProjectileHitFlags projectileHitFlags2 = ProjectileHitFlags.NonTargetWorld;
|
|
||||||
if (Rand.Chance(0.5f) && canHitNonTargetPawnsNow)
|
|
||||||
{
|
|
||||||
projectileHitFlags2 |= ProjectileHitFlags.NonTargetPawns;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟发射成功,但不实际发射
|
|
||||||
bool shotResult = SimulateShotSuccess(drawPos, resultingLine.Dest, currentTarget, projectileHitFlags2, preventFriendlyFire, equipmentSource, targetCoverDef);
|
|
||||||
if (shotResult)
|
|
||||||
{
|
|
||||||
UpdateTurretFocusTargets();
|
|
||||||
}
|
|
||||||
return shotResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentTarget.Thing != null && currentTarget.Thing.def.CanBenefitFromCover && !Rand.Chance(shotReport.PassCoverChance))
|
|
||||||
{
|
|
||||||
ProjectileHitFlags projectileHitFlags3 = ProjectileHitFlags.NonTargetWorld;
|
|
||||||
if (canHitNonTargetPawnsNow)
|
|
||||||
{
|
|
||||||
projectileHitFlags3 |= ProjectileHitFlags.NonTargetPawns;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟发射成功,但不实际发射
|
|
||||||
bool shotResult = SimulateShotSuccess(drawPos, randomCoverToMissInto, currentTarget, projectileHitFlags3, preventFriendlyFire, equipmentSource, targetCoverDef);
|
|
||||||
if (shotResult)
|
|
||||||
{
|
|
||||||
UpdateTurretFocusTargets();
|
|
||||||
}
|
|
||||||
return shotResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectileHitFlags projectileHitFlags4 = ProjectileHitFlags.IntendedTarget;
|
|
||||||
if (canHitNonTargetPawnsNow)
|
|
||||||
{
|
|
||||||
projectileHitFlags4 |= ProjectileHitFlags.NonTargetPawns;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!currentTarget.HasThing || currentTarget.Thing.def.Fillage == FillCategory.Full)
|
|
||||||
{
|
|
||||||
projectileHitFlags4 |= ProjectileHitFlags.NonTargetWorld;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 模拟发射成功,但不实际发射
|
|
||||||
bool finalShotResult = SimulateFinalShotSuccess(drawPos, resultingLine.Dest, currentTarget, projectileHitFlags4, preventFriendlyFire, equipmentSource, targetCoverDef);
|
|
||||||
if (finalShotResult)
|
|
||||||
{
|
|
||||||
UpdateTurretFocusTargets();
|
|
||||||
}
|
|
||||||
return finalShotResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 模拟射击成功的情况
|
|
||||||
/// </summary>
|
|
||||||
private bool SimulateShotSuccess(Vector3 drawPos, IntVec3 targetCell, LocalTargetInfo target, ProjectileHitFlags hitFlags, bool preventFriendlyFire, Thing equipmentSource, ThingDef targetCoverDef = null)
|
|
||||||
{
|
|
||||||
// 这里不实际发射射弹,只返回成功
|
|
||||||
// 销毁之前创建的射弹对象,因为我们不需要它
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 模拟射击成功的情况(带目标)
|
/// 重写射击效果,确保不产生任何视觉或声音效果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private bool SimulateShotSuccess(Vector3 drawPos, Thing target, LocalTargetInfo originalTarget, ProjectileHitFlags hitFlags, bool preventFriendlyFire, Thing equipmentSource, ThingDef targetCoverDef = null)
|
public override void DrawHighlight(LocalTargetInfo target)
|
||||||
{
|
{
|
||||||
// 这里不实际发射射弹,只返回成功
|
base.DrawHighlight(target);
|
||||||
// 销毁之前创建的射弹对象,因为我们不需要它
|
|
||||||
return true;
|
// 可以绘制距离指示,但不绘制射击预览
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 模拟最终射击成功的情况
|
|
||||||
/// </summary>
|
|
||||||
private bool SimulateFinalShotSuccess(Vector3 drawPos, IntVec3 targetCell, LocalTargetInfo target, ProjectileHitFlags hitFlags, bool preventFriendlyFire, Thing equipmentSource, ThingDef targetCoverDef = null)
|
|
||||||
{
|
|
||||||
// 这里不实际发射射弹,只返回成功
|
|
||||||
// 销毁之前创建的射弹对象,因为我们不需要它
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -209,14 +74,89 @@ namespace WulaFallenEmpire
|
|||||||
|
|
||||||
foreach (var turretComp in turretComps)
|
foreach (var turretComp in turretComps)
|
||||||
{
|
{
|
||||||
// 设置集中火力目标
|
if (turretComp != null)
|
||||||
Comp_MultiTurretGun.focusTarget = currentTarget;
|
{
|
||||||
Comp_MultiTurretGun.lastFocusSetTick = Find.TickManager.TicksGame;
|
// 设置集中火力目标
|
||||||
Comp_MultiTurretGun.lastFocusPawn = pawn;
|
Comp_MultiTurretGun.focusTarget = currentTarget;
|
||||||
|
Comp_MultiTurretGun.lastFocusSetTick = Find.TickManager.TicksGame;
|
||||||
// 强制炮塔立即重新索敌,以便它们能检测到新的集中火力目标
|
Comp_MultiTurretGun.lastFocusPawn = pawn;
|
||||||
turretComp.TryAcquireTarget();
|
|
||||||
|
// 强制炮塔立即重新索敌,以便它们能检测到新的集中火力目标
|
||||||
|
turretComp.TryAcquireTarget();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 记录日志
|
||||||
|
if (Prefs.DevMode)
|
||||||
|
{
|
||||||
|
Log.Message($"[Verb_RangeChecker] {pawn.LabelShort} set focus target to {currentTarget}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写可用性检查,确保只有符合条件的Pawn才能使用
|
||||||
|
/// </summary>
|
||||||
|
public override bool Available()
|
||||||
|
{
|
||||||
|
if (!base.Available())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 额外的检查:确保有炮塔组件
|
||||||
|
if (caster is Pawn pawn)
|
||||||
|
{
|
||||||
|
var turretComps = pawn.GetComps<Comp_MultiTurretGun>();
|
||||||
|
if (turretComps == null )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写验证方法,添加额外的距离检查
|
||||||
|
/// </summary>
|
||||||
|
public override bool CanHitTarget(LocalTargetInfo targ)
|
||||||
|
{
|
||||||
|
if (!base.CanHitTarget(targ))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检查距离
|
||||||
|
float distance = caster.Position.DistanceTo(targ.Cell);
|
||||||
|
if (distance > verbProps.range)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检查最小距离
|
||||||
|
if (distance < verbProps.minRange)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写目标高亮显示
|
||||||
|
/// </summary>
|
||||||
|
public override void OrderForceTarget(LocalTargetInfo target)
|
||||||
|
{
|
||||||
|
if (CanHitTarget(target))
|
||||||
|
{
|
||||||
|
base.OrderForceTarget(target);
|
||||||
|
UpdateTurretFocusTargets();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写,确保不产生任何射击效果
|
||||||
|
/// </summary>
|
||||||
|
public override void Notify_EquipmentLost()
|
||||||
|
{
|
||||||
|
base.Notify_EquipmentLost();
|
||||||
|
|
||||||
|
// 清理焦点目标
|
||||||
|
if (caster is Pawn pawn)
|
||||||
|
{
|
||||||
|
Comp_MultiTurretGun.lastFocusPawn = null;
|
||||||
|
Comp_MultiTurretGun.focusTarget = LocalTargetInfo.Invalid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,8 +170,21 @@ namespace WulaFallenEmpire
|
|||||||
{
|
{
|
||||||
verbClass = typeof(Verb_RangeChecker);
|
verbClass = typeof(Verb_RangeChecker);
|
||||||
|
|
||||||
// 默认设置为不发射射弹
|
// 设置为不发射射弹
|
||||||
defaultProjectile = null;
|
defaultProjectile = null;
|
||||||
|
|
||||||
|
// 设置无噪音
|
||||||
|
soundCast = null;
|
||||||
|
soundCastTail = null;
|
||||||
|
|
||||||
|
// 无视觉效果
|
||||||
|
muzzleFlashScale = 0f;
|
||||||
|
|
||||||
|
// 无预热时间
|
||||||
|
warmupTime = 0f;
|
||||||
|
|
||||||
|
// 无冷却时间
|
||||||
|
defaultCooldownTime = 0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user