This commit is contained in:
Tourswen
2025-12-08 01:00:31 +08:00
parent f234a66a98
commit 23ccaed38e
24 changed files with 1259 additions and 86 deletions

View File

@@ -15,7 +15,7 @@
<bodyTypeMale>Thin</bodyTypeMale>
<forcedTraitsChance>
<li>
<defName Degree="1">WULA_Trait_Knight</defName>
<defName Degree="1">WULA_Trait_WhitePaper</defName>
<chance>100</chance>
</li>
</forcedTraitsChance>

View File

@@ -161,6 +161,48 @@
</li>
</modExtensions>
</DamageDef>
<DamageDef ParentName="StunBase">
<defName>WULA_WM_Disturber_Turret_Damage</defName>
<label>等离子干扰</label>
<workerClass>WulaFallenEmpire.DamageWorker_ExtraDamage</workerClass>
<externalViolenceForMechanoids>true</externalViolenceForMechanoids>
<deathMessage>{0} 被等离子干扰而亡。</deathMessage>
<harmsHealth>true</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>
<modExtensions>
<li Class="WulaFallenEmpire.DamageDef_ExtraDamageExtension">
<extraLabel>穿透伤害</extraLabel>
<showExtraLog>true</showExtraLog>
<extraDamages>
<li>
<damageDef>WULA_Armour_Piercing_Projectile_4_Damage</damageDef>
<amount>100</amount>
<isPercentage>false</isPercentage>
<armorPenetration>2</armorPenetration>
<!-- <soundDef>EMP_Small</soundDef>
<fleckDef>ElectricArc</fleckDef> -->
<!-- <minTriggerDamage>5</minTriggerDamage> -->
</li>
</extraDamages>
</li>
</modExtensions>
</DamageDef>
<DamageDef ParentName="Wula_Dark_Matter_Beam_DMG">
<defName>Wula_Psi_Damage</defName>
@@ -338,6 +380,87 @@
<buildingDamageFactorPassable>0</buildingDamageFactorPassable>
</DamageDef>
<DamageDef ParentName="Bomb">
<defName>WULA_Disturber_Turret_Bomb</defName>
<label>等离子爆炸</label>
<workerClass>WulaFallenEmpire.DamageWorker_ExtraDamage</workerClass>
<defaultDamage>250</defaultDamage>
<defaultStoppingPower>2.0</defaultStoppingPower>
<defaultArmorPenetration>2</defaultArmorPenetration>
<explosionCellFleck>BlastEMP</explosionCellFleck>
<explosionColorEdge>(0.8, 0.8, 0.8, 0.8)</explosionColorEdge>
<explosionCenterEffecter>WULA_Disturber_Turret_Bomb_Shockwave</explosionCenterEffecter>
<modExtensions>
<li Class="WulaFallenEmpire.DamageDef_ExtraDamageExtension">
<extraLabel>穿透伤害</extraLabel>
<showExtraLog>true</showExtraLog>
<extraDamages>
<li>
<damageDef>EMP</damageDef>
<amount>60</amount>
<isPercentage>false</isPercentage>
<armorPenetration>2</armorPenetration>
<!-- <soundDef>EMP_Small</soundDef>
<fleckDef>ElectricArc</fleckDef> -->
<!-- <minTriggerDamage>5</minTriggerDamage> -->
</li>
</extraDamages>
</li>
</modExtensions>
</DamageDef>
<EffecterDef>
<defName>WULA_Disturber_Turret_Bomb_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_WULA_Disturber_Turret_Bomb_Shockwave</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>
<FleckDef ParentName="FleckBase">
<defName>Fleck_WULA_Disturber_Turret_Bomb_Shockwave</defName>
<altitudeLayer>MoteOverheadLow</altitudeLayer>
<fadeInTime>0.04</fadeInTime>
<fadeOutTime>0.1</fadeOutTime>
<solidTime>0.8</solidTime>
<growthRate>1.5</growthRate>
<drawOffscreen>true</drawOffscreen>
<graphicData>
<graphicClass>Graphic_FleckPulse</graphicClass>
<texPath>Things/Mote/Black</texPath>
<shaderType>MoteLargeDistortionWave</shaderType>
<color>(218,255,200,255)</color>
<shaderParameters>
<_DistortionTex>/Things/Mote/PsychicDistortionCurrents</_DistortionTex>
<_NoiseTex>/Things/Mote/PsycastNoise</_NoiseTex>
<_distortionIntensity>0.066</_distortionIntensity>
<_brightnessMultiplier>1.15</_brightnessMultiplier>
</shaderParameters>
<drawSize>15</drawSize>
</graphicData>
</FleckDef>
<DamageDef ParentName="Bomb">
<defName>WULA_DarkMatterBomb</defName>
<label>暗物质湮灭爆炸</label>

View File

@@ -3,12 +3,14 @@
<FleckDef Name="WULA_GunTail_Plasma" ParentName="FleckBase">
<defName>WULA_GunTail_Plasma</defName>
<altitudeLayer>Projectile</altitudeLayer>
<solidTime>0.05</solidTime>
<fadeOutTime>0.1</fadeOutTime>
<fadeInTime>0.50</fadeInTime>
<solidTime>1</solidTime>
<fadeOutTime>1.2</fadeOutTime>
<growthRate>0.005</growthRate>
<graphicData>
<texPath>Wula/Mote/WULA_GunTail_Plasma</texPath>
<shaderType>MoteGlow</shaderType>
<drawSize>1.25</drawSize>
<drawSize>3.25</drawSize>
<color>(218,255,200,155)</color>
</graphicData>
</FleckDef>
@@ -68,19 +70,6 @@
<fadeOutTime>0.2</fadeOutTime>
</FleckDef>
<FleckDef ParentName="FleckBase">
<defName>ElectricalSpark_WULA_Plasma_Explosive</defName>
<graphicData>
<texPath>Wula/Mote/ElectricalSpark_WULA_Plasma_Explosive</texPath>
<shaderType>MoteGlow</shaderType>
<!-- <color>(0.2, 0.8, 0.3 ,0.8)</color> -->
</graphicData>
<altitudeLayer>MoteOverhead</altitudeLayer>
<fadeInTime>0.04</fadeInTime>
<solidTime>0.08</solidTime>
<fadeOutTime>0.13</fadeOutTime>
</FleckDef>
<FleckDef ParentName="FleckBase_Thrown">
<defName>WULA_Smoke_Tail</defName>
<graphicData>

View File

@@ -0,0 +1,664 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef>
<defName>WULA_Boss_Super_Fortress</defName>
<rootSelectionWeight>0</rootSelectionWeight>
<autoAccept>true</autoAccept>
<sendAvailableLetter>false</sendAvailableLetter>
<defaultChallengeRating>4</defaultChallengeRating> <!-- 挑战等级(星级) -->
<isRootSpecial>true</isRootSpecial> <!-- 特殊任务 -->
<questNameRules>
<rulesStrings>
<li>questName->WULA_Boss_Sky_Lock_questName</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->WULA_Boss_Sky_Lock_questDescription</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_GetMap"/>
<!-- 产生超链接 -->
<li Class="WulaFallenEmpire.QuestNode_Hyperlinks">
<thingDefs>
<li>Wula_Psi_Titan</li>
<li>Wula_AI_Rocket_Panzer</li>
<li>Wula_AI_Heavy_Panzer</li>
<li>WULA_Sky_Lock</li>
</thingDefs>
<factionDefs>
<li>Wula_PIA_Legion_Faction</li>
</factionDefs>
</li>
<li Class="QuestEditor_Library.QuestNode_RandomCustomMap">
<datas>
<li>
<key>WULA_Super_Fortress_Map</key>
<value>1</value>
</li>
</datas>
<buffer>5</buffer>
<bufferMin>10</bufferMin>
<siteIconPath>Things/Building/Natural/Hive/HiveC</siteIconPath>
<expandingIconPath>Things/Building/Natural/Hive/HiveC</expandingIconPath>
<storeAs>site</storeAs>
<faction>AncientsHostile</faction>
<disdestroyBecauseOfNoColonist>true</disdestroyBecauseOfNoColonist>
<distance>
<min>5</min>
<max>10</max>
</distance>
<blacklist />
</li>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelShuttleDestroyed">灵能泰坦抵达</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextShuttleDestroyed">在一艘巡洋舰向失控运输舰狠狠撞击后,碎裂的运输舰如流星般坠入边缘世界地表。不过灵能泰坦随后便在地表上被目击——地点已经标记出来了。</text>
</li>
<!-- 灵能泰坦被击毁··· -->
<li Class="QuestNode_Signal">
<inSignal>PsiTitan.0.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelShuttleDestroyed">灵能泰坦已停机</label>
<letterDef>PositiveEvent</letterDef>
<text TKey="LetterTextShuttleDestroyed">灵能泰坦在殖民者的攻击下已经停止运转,其灵能回路核心已经暴露并掉落。\n\n记得回收灵能回路核心这是建造新的灵能泰坦所需的材料。</text>
</li>
<li Class="QuestNode_ChangeFactionGoodwill">
<faction>Wula_PIA_Legion_Faction</faction>
<change>25</change>
<reason>WULA_Killed_Psititan</reason>
</li>
<li Class="WulaFallenEmpire.QuestNode_EventLetter">
<inSignal>PsiTitan.0.Destroyed</inSignal>
<eventDefName>WULA_Boss_Sky_Lock_UI_2</eventDefName>
</li>
<li Class="QuestNode_End">
<outcome>Success</outcome>
<sendStandardLetter>true</sendStandardLetter>
</li>
</nodes>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
<HistoryEventDef>
<defName>WULA_Killed_Psititan</defName>
<label>协助处理失控灵能泰坦</label>
</HistoryEventDef>
<QuestEditor_Library.CustomMapDataDef>
<defName>WULA_Super_Fortress_Map</defName>
<label>巨型乌拉帝国要塞</label>
<fogged>true</fogged>
<size>(80, 1, 80)</size>
<isPart>true</isPart>
<commonality>0</commonality>
<roofRects>
<li>
<key>RoofRockThick</key>
<value>
<li>(19,26,60,28)</li>
<li>(26,19,53,25)</li>
<li>(19,29,28,53)</li>
<li>(34,17,45,18)</li>
<li>(17,34,18,45)</li>
<li>(29,36,62,43)</li>
<li>(36,29,43,35)</li>
<li>(36,44,43,62)</li>
<li>(51,29,60,35)</li>
<li>(29,51,35,60)</li>
<li>(26,54,28,60)</li>
<li>(51,44,62,45)</li>
<li>(44,51,60,53)</li>
<li>(51,46,60,50)</li>
<li>(44,54,53,60)</li>
<li>(61,34,62,35)</li>
<li>(34,61,35,62)</li>
<li>(44,61,45,62)</li>
</value>
</li>
</roofRects>
<terrainsRect>
<li>
<key>WulaFloor</key>
<value>
<li>(17,17,26,26)</li>
<li>(19,27,60,60)</li>
<li>(27,19,62,26)</li>
<li>(17,34,18,45)</li>
<li>(34,17,45,18)</li>
<li>(17,53,18,62)</li>
<li>(53,17,62,18)</li>
<li>(19,61,26,62)</li>
<li>(61,34,62,45)</li>
<li>(34,61,45,62)</li>
<li>(53,61,62,62)</li>
<li>(61,53,62,60)</li>
</value>
</li>
</terrainsRect>
<thingDatas>
<li>
<def>WulaShelter</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(10,10,14,10)</li>
<li>(10,11,10,14)</li>
<li>(11,14,12,14)</li>
<li>(14,11,14,12)</li>
<li>(12,15,12,22)</li>
<li>(15,12,22,12)</li>
<li>(16,13,16,14)</li>
<li>(13,16,14,16)</li>
<li>(20,13,20,14)</li>
<li>(13,20,14,20)</li>
<li>(10,22,11,22)</li>
<li>(22,10,26,10)</li>
<li>(22,11,22,11)</li>
<li>(10,23,10,26)</li>
<li>(26,11,26,12)</li>
<li>(11,26,12,26)</li>
<li>(15,26,16,26)</li>
<li>(26,15,29,15)</li>
<li>(26,16,26,16)</li>
<li>(15,27,15,29)</li>
<li>(11,30,13,30)</li>
<li>(30,11,34,11)</li>
<li>(30,12,30,13)</li>
<li>(11,31,11,34)</li>
<li>(31,15,34,15)</li>
<li>(15,31,15,34)</li>
<li>(12,34,12,38)</li>
<li>(34,12,38,12)</li>
<li>(16,34,16,34)</li>
<li>(34,16,34,16)</li>
<li>(38,13,38,15)</li>
<li>(13,38,15,38)</li>
<li>(12,41,15,41)</li>
<li>(41,12,45,12)</li>
<li>(41,13,41,15)</li>
<li>(36,24,38,24)</li>
<li>(24,36,24,38)</li>
<li>(12,42,12,45)</li>
<li>(45,11,49,11)</li>
<li>(11,45,11,49)</li>
<li>(45,15,48,15)</li>
<li>(15,45,16,45)</li>
<li>(41,24,43,24)</li>
<li>(24,41,24,43)</li>
<li>(45,16,45,16)</li>
<li>(15,46,15,48)</li>
<li>(49,12,49,13)</li>
<li>(12,49,13,49)</li>
<li>(50,15,53,15)</li>
<li>(15,50,15,53)</li>
<li>(53,10,57,10)</li>
<li>(10,53,12,53)</li>
<li>(53,11,53,12)</li>
<li>(10,54,10,57)</li>
<li>(53,16,53,16)</li>
<li>(16,53,16,53)</li>
<li>(11,57,12,57)</li>
<li>(57,11,57,12)</li>
<li>(12,58,12,65)</li>
<li>(58,12,65,12)</li>
<li>(13,59,14,59)</li>
<li>(59,13,59,14)</li>
<li>(13,63,14,63)</li>
<li>(63,13,63,14)</li>
<li>(36,55,38,55)</li>
<li>(55,36,55,38)</li>
<li>(10,65,11,65)</li>
<li>(65,10,69,10)</li>
<li>(65,11,65,11)</li>
<li>(10,66,10,69)</li>
<li>(16,65,16,67)</li>
<li>(65,16,67,16)</li>
<li>(65,20,67,20)</li>
<li>(20,65,20,67)</li>
<li>(63,26,64,26)</li>
<li>(26,63,26,64)</li>
<li>(14,67,15,67)</li>
<li>(67,14,69,14)</li>
<li>(41,55,43,55)</li>
<li>(55,41,55,43)</li>
<li>(67,15,67,15)</li>
<li>(67,17,67,19)</li>
<li>(17,67,19,67)</li>
<li>(14,68,14,69)</li>
<li>(64,27,64,29)</li>
<li>(27,64,29,64)</li>
<li>(69,11,69,13)</li>
<li>(11,69,13,69)</li>
<li>(21,67,22,67)</li>
<li>(67,21,67,22)</li>
<li>(31,64,34,64)</li>
<li>(64,31,64,34)</li>
<li>(22,68,22,69)</li>
<li>(68,22,69,22)</li>
<li>(63,34,63,34)</li>
<li>(34,63,34,63)</li>
<li>(26,67,26,69)</li>
<li>(67,26,69,26)</li>
<li>(30,66,30,68)</li>
<li>(66,30,68,30)</li>
<li>(23,69,25,69)</li>
<li>(69,23,69,25)</li>
<li>(64,38,67,38)</li>
<li>(38,64,38,67)</li>
<li>(68,31,68,34)</li>
<li>(31,68,34,68)</li>
<li>(67,34,67,37)</li>
<li>(34,67,37,67)</li>
<li>(64,41,67,41)</li>
<li>(41,64,41,67)</li>
<li>(45,63,45,64)</li>
<li>(63,45,64,45)</li>
<li>(64,46,64,48)</li>
<li>(46,64,48,64)</li>
<li>(42,67,45,67)</li>
<li>(67,42,67,45)</li>
<li>(50,64,53,64)</li>
<li>(64,50,64,53)</li>
<li>(45,68,49,68)</li>
<li>(68,45,68,49)</li>
<li>(66,49,67,49)</li>
<li>(49,66,49,67)</li>
<li>(63,53,63,53)</li>
<li>(53,63,53,63)</li>
<li>(67,53,69,53)</li>
<li>(53,67,53,69)</li>
<li>(69,54,69,57)</li>
<li>(54,69,57,69)</li>
<li>(59,65,59,67)</li>
<li>(65,59,67,59)</li>
<li>(67,57,68,57)</li>
<li>(57,67,58,67)</li>
<li>(67,58,67,58)</li>
<li>(57,68,57,68)</li>
<li>(60,67,65,67)</li>
<li>(67,60,67,65)</li>
<li>(63,65,63,66)</li>
<li>(65,63,66,63)</li>
<li>(65,68,65,69)</li>
<li>(68,65,69,65)</li>
<li>(66,69,69,69)</li>
<li>(69,66,69,68)</li>
</allRect>
</li>
<li>
<def>WulaWall</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(17,17,26,17)</li>
<li>(17,18,17,26)</li>
<li>(18,26,20,26)</li>
<li>(26,18,26,20)</li>
<li>(19,27,19,34)</li>
<li>(27,19,34,19)</li>
<li>(26,22,26,26)</li>
<li>(22,26,25,26)</li>
<li>(29,22,36,22)</li>
<li>(22,29,28,29)</li>
<li>(29,23,29,28)</li>
<li>(22,30,22,36)</li>
<li>(17,34,18,34)</li>
<li>(34,17,38,17)</li>
<li>(34,18,34,18)</li>
<li>(28,27,28,28)</li>
<li>(27,28,27,28)</li>
<li>(17,35,17,38)</li>
<li>(36,19,38,19)</li>
<li>(19,36,21,36)</li>
<li>(28,30,28,36)</li>
<li>(30,28,36,28)</li>
<li>(36,20,36,21)</li>
<li>(19,37,19,38)</li>
<li>(35,23,35,27)</li>
<li>(23,35,27,35)</li>
<li>(41,17,45,17)</li>
<li>(17,41,17,45)</li>
<li>(41,19,43,19)</li>
<li>(19,41,19,43)</li>
<li>(36,29,36,36)</li>
<li>(29,36,35,36)</li>
<li>(20,43,22,43)</li>
<li>(43,20,43,22)</li>
<li>(18,45,19,45)</li>
<li>(45,18,45,19)</li>
<li>(22,44,28,44)</li>
<li>(44,22,50,22)</li>
<li>(44,23,44,28)</li>
<li>(32,38,32,41)</li>
<li>(38,32,41,32)</li>
<li>(19,46,19,53)</li>
<li>(46,19,53,19)</li>
<li>(22,45,22,50)</li>
<li>(28,43,36,43)</li>
<li>(43,28,43,36)</li>
<li>(28,45,28,52)</li>
<li>(45,28,52,28)</li>
<li>(23,50,27,50)</li>
<li>(50,23,50,27)</li>
<li>(53,17,62,17)</li>
<li>(17,53,18,53)</li>
<li>(53,18,53,18)</li>
<li>(17,54,17,62)</li>
<li>(53,20,53,20)</li>
<li>(20,53,20,53)</li>
<li>(36,44,36,51)</li>
<li>(44,36,51,36)</li>
<li>(22,53,26,53)</li>
<li>(53,22,53,26)</li>
<li>(51,27,51,27)</li>
<li>(27,51,27,51)</li>
<li>(29,51,35,51)</li>
<li>(51,29,57,29)</li>
<li>(51,30,51,35)</li>
<li>(29,52,29,57)</li>
<li>(54,26,57,26)</li>
<li>(26,54,26,57)</li>
<li>(47,38,47,41)</li>
<li>(38,47,41,47)</li>
<li>(43,43,51,43)</li>
<li>(43,44,43,51)</li>
<li>(35,52,35,57)</li>
<li>(52,35,57,35)</li>
<li>(57,30,57,34)</li>
<li>(30,57,34,57)</li>
<li>(59,26,62,26)</li>
<li>(26,59,26,62)</li>
<li>(62,18,62,25)</li>
<li>(18,62,25,62)</li>
<li>(60,27,60,34)</li>
<li>(27,60,34,60)</li>
<li>(51,44,57,44)</li>
<li>(44,51,52,51)</li>
<li>(36,57,36,60)</li>
<li>(57,36,60,36)</li>
<li>(51,45,51,50)</li>
<li>(44,52,44,57)</li>
<li>(34,61,34,62)</li>
<li>(61,34,62,34)</li>
<li>(37,60,38,60)</li>
<li>(60,37,60,38)</li>
<li>(35,62,38,62)</li>
<li>(62,35,62,38)</li>
<li>(57,43,60,43)</li>
<li>(43,57,43,60)</li>
<li>(50,52,51,52)</li>
<li>(52,50,57,50)</li>
<li>(57,45,57,49)</li>
<li>(45,57,50,57)</li>
<li>(60,41,60,42)</li>
<li>(41,60,42,60)</li>
<li>(50,53,50,56)</li>
<li>(62,41,62,45)</li>
<li>(41,62,45,62)</li>
<li>(53,53,57,53)</li>
<li>(45,60,53,60)</li>
<li>(60,45,61,45)</li>
<li>(60,46,60,53)</li>
<li>(53,54,53,57)</li>
<li>(45,61,45,61)</li>
<li>(53,59,53,59)</li>
<li>(59,53,59,53)</li>
<li>(61,53,62,53)</li>
<li>(53,61,53,62)</li>
<li>(62,54,62,62)</li>
<li>(54,62,61,62)</li>
</allRect>
</li>
<li>
<def>WulaDoor</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(21,26,21,26)</li>
<li>(35,19,35,19)</li>
<li>(39,17,40,17)</li>
<li>(39,19,40,19)</li>
<li>(44,19,44,19)</li>
<li>(37,32,37,32)</li>
<li>(42,32,42,32)</li>
<li>(21,53,21,53)</li>
<li>(37,47,37,47)</li>
<li>(42,47,42,47)</li>
<li>(58,26,58,26)</li>
<li>(35,60,35,60)</li>
<li>(39,60,40,60)</li>
<li>(39,62,40,62)</li>
<li>(44,60,44,60)</li>
<li>(58,53,58,53)</li>
</allRect>
</li>
<li>
<def>WulaDoor</def>
<rotation>1</rotation>
<faction>AncientsHostile</faction>
<allRect>
<li>(26,21,26,21)</li>
<li>(19,35,19,35)</li>
<li>(17,39,17,40)</li>
<li>(19,39,19,40)</li>
<li>(19,44,19,44)</li>
<li>(32,37,32,37)</li>
<li>(32,42,32,42)</li>
<li>(53,21,53,21)</li>
<li>(47,37,47,37)</li>
<li>(47,42,47,42)</li>
<li>(26,58,26,58)</li>
<li>(60,35,60,35)</li>
<li>(60,39,60,40)</li>
<li>(62,39,62,40)</li>
<li>(60,44,60,44)</li>
<li>(53,58,53,58)</li>
</allRect>
</li>
<li>
<def>FloodLight</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(14,14,14,14)</li>
<li>(16,35,16,35)</li>
<li>(35,16,35,16)</li>
<li>(16,44,16,44)</li>
<li>(44,16,44,16)</li>
<li>(65,14,65,14)</li>
<li>(14,65,14,65)</li>
<li>(35,63,35,63)</li>
<li>(63,35,63,35)</li>
<li>(44,63,44,63)</li>
<li>(63,44,63,44)</li>
<li>(65,65,65,65)</li>
</allRect>
</li>
<li>
<def>WULA_Cat_Bunker</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(12,12,12,12)</li>
<li>(12,24,12,24)</li>
<li>(24,12,24,12)</li>
<li>(36,14,36,14)</li>
<li>(14,36,14,36)</li>
<li>(14,43,14,43)</li>
<li>(43,14,43,14)</li>
<li>(12,55,12,55)</li>
<li>(55,12,55,12)</li>
<li>(12,67,12,67)</li>
<li>(67,12,67,12)</li>
<li>(67,24,67,24)</li>
<li>(24,67,24,67)</li>
<li>(36,65,36,65)</li>
<li>(65,36,65,36)</li>
<li>(65,43,65,43)</li>
<li>(43,65,43,65)</li>
<li>(67,55,67,55)</li>
<li>(55,67,55,67)</li>
<li>(67,67,67,67)</li>
</allRect>
</li>
<li>
<def>Wula_Base_Laser_Turret</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(18,14,18,14)</li>
<li>(14,18,14,18)</li>
<li>(28,17,28,17)</li>
<li>(17,28,17,28)</li>
<li>(17,32,17,32)</li>
<li>(32,17,32,17)</li>
<li>(26,37,26,37)</li>
<li>(37,26,37,26)</li>
<li>(26,42,26,42)</li>
<li>(42,26,42,26)</li>
<li>(17,47,17,47)</li>
<li>(47,17,47,17)</li>
<li>(17,51,17,51)</li>
<li>(51,17,51,17)</li>
<li>(61,14,61,14)</li>
<li>(14,61,14,61)</li>
<li>(53,37,53,37)</li>
<li>(37,53,37,53)</li>
<li>(18,65,18,65)</li>
<li>(65,18,65,18)</li>
<li>(42,53,42,53)</li>
<li>(53,42,53,42)</li>
<li>(62,28,62,28)</li>
<li>(28,62,28,62)</li>
<li>(62,32,62,32)</li>
<li>(32,62,32,62)</li>
<li>(62,47,62,47)</li>
<li>(47,62,47,62)</li>
<li>(62,51,62,51)</li>
<li>(51,62,51,62)</li>
<li>(65,61,65,61)</li>
<li>(61,65,61,65)</li>
</allRect>
</li>
<li>
<def>Wula_Base_ATGun_Turret</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(32,13,32,13)</li>
<li>(13,32,13,32)</li>
<li>(47,13,47,13)</li>
<li>(13,47,13,47)</li>
<li>(32,66,32,66)</li>
<li>(66,32,66,32)</li>
<li>(47,66,47,66)</li>
<li>(66,47,66,47)</li>
</allRect>
</li>
<li>
<def>Wula_Base_Mortar_Turret</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(20,20,20,20)</li>
<li>(20,23,20,23)</li>
<li>(23,20,23,20)</li>
<li>(23,23,23,23)</li>
<li>(56,20,56,20)</li>
<li>(20,56,20,56)</li>
<li>(56,23,56,23)</li>
<li>(23,56,23,56)</li>
<li>(59,20,59,20)</li>
<li>(20,59,20,59)</li>
<li>(59,23,59,23)</li>
<li>(23,59,23,59)</li>
<li>(56,56,56,56)</li>
<li>(59,56,59,56)</li>
<li>(56,59,56,59)</li>
<li>(59,59,59,59)</li>
</allRect>
</li>
<li>
<def>WULA_MechAssembler</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(38,38,38,38)</li>
<li>(41,38,41,38)</li>
<li>(38,41,38,41)</li>
<li>(41,41,41,41)</li>
</allRect>
</li>
<li>
<def>WULA_MechAssembler_Huge</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(39,34,39,34)</li>
<li>(34,39,34,39)</li>
<li>(44,39,44,39)</li>
<li>(39,44,39,44)</li>
</allRect>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98768</storedEnergy>
<position>(54,0,32)</position>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98768663</storedEnergy>
<position>(32,0,25)</position>
</li>
<li>
<def>Wula_Disturber_Turret</def>
<faction>AncientsHostile</faction>
<allRect>
<li>(32,32,32,32)</li>
<li>(32,47,32,47)</li>
<li>(47,32,47,32)</li>
<li>(47,47,47,47)</li>
</allRect>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98771334</storedEnergy>
<position>(32,0,54)</position>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98772669</storedEnergy>
<position>(25,0,47)</position>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98775172</storedEnergy>
<position>(47,0,25)</position>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98775339</storedEnergy>
<position>(47,0,54)</position>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98776674</storedEnergy>
<position>(25,0,32)</position>
</li>
<li>
<def>Wula_DarkEnergy_Generators</def>
<faction>AncientsHostile</faction>
<storedEnergy>1.98778009</storedEnergy>
<position>(54,0,47)</position>
</li>
</thingDatas>
</QuestEditor_Library.CustomMapDataDef>
</Defs>

View File

@@ -518,6 +518,17 @@
<li>WULA_Synth_Armor_2_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>Wula_Disturber_Turret_Technology</defName>
<researchViewX>11.00</researchViewX>
<researchViewY>0.90</researchViewY>
<label>中型舰炮许可</label>
<description>允许殖民地申请空投四联装舰炮,以毁灭性的等离子风暴连射毁灭一切帝国之敌。</description>
<baseCost>4500</baseCost>
<prerequisites>
<li>WULA_Turret_Base_Mortar_Technology</li>
</prerequisites>
</ResearchProjectDef>
<!-- 植物 -->
<ResearchProjectDef ParentName="WULAtechBase">

View File

@@ -128,6 +128,22 @@
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>Wula_Disturber_Turret_Weapon_Explosive</defName>
<context>MapOnly</context>
<maxSimultaneous>99</maxSimultaneous>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Wula/Wula_Disturber_Turret_Weapon_Explosive</clipPath>
</li>
</grains>
<volumeRange>95</volumeRange>
<pitchRange>0.9~1.1</pitchRange>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>WULA_RW_Beam_Shootingsound</defName>
<sustain>true</sustain>
@@ -149,6 +165,22 @@
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>Wula_Disturber_Turret_Weapon_Shootingsound</defName>
<context>MapOnly</context>
<maxSimultaneous>1</maxSimultaneous>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Wula/Wula_Disturber_Turret_Weapon_Shootingsound</clipPath>
</li>
</grains>
<volumeRange>65</volumeRange>
<pitchRange>0.9~1.1</pitchRange>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>WULA_PsiCrusher_Sound</defName>
<context>MapOnly</context>

View File

@@ -662,7 +662,7 @@
<graphicData>
<texPath>Wula/Building/WULA_Turret_Component</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>(3,3)</drawSize>
<drawSize>(7,7)</drawSize>
<!-- <drawOffset>(0,0,-0.16)</drawOffset> -->
<damageData>
<rect>(0.3,0.3,1.4,1.4)</rect>
@@ -751,7 +751,7 @@
<!-- 特殊组件,会在非玩家派系的时候眩晕该炮塔 -->
<li Class="WulaFallenEmpire.CompProperties_DelayedDamageIfNotPlayer">
<damageDef>EMP</damageDef>
<damageAmount>50</damageAmount>
<damageAmount>25</damageAmount>
<armorPenetration>2</armorPenetration>
<destroyIfKilled>true</destroyIfKilled>
</li>
@@ -963,7 +963,7 @@
<graphicData>
<texPath>Wula/Building/WULA_Turret_Component</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>(3,3)</drawSize>
<drawSize>(7,7)</drawSize>
<!-- <drawOffset>(0,0,-0.16)</drawOffset> -->
<damageData>
<rect>(0.3,0.3,1.4,1.4)</rect>
@@ -1052,7 +1052,7 @@
<!-- 特殊组件,会在非玩家派系的时候眩晕该炮塔 -->
<li Class="WulaFallenEmpire.CompProperties_DelayedDamageIfNotPlayer">
<damageDef>EMP</damageDef>
<damageAmount>50</damageAmount>
<damageAmount>25</damageAmount>
<armorPenetration>2</armorPenetration>
<destroyIfKilled>true</destroyIfKilled>
</li>
@@ -1266,7 +1266,7 @@
<graphicData>
<texPath>Wula/Building/WULA_Turret_Component</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>(3,3)</drawSize>
<drawSize>(7,7)</drawSize>
<!-- <drawOffset>(0,0,-0.16)</drawOffset> -->
<damageData>
<rect>(0.3,0.3,1.4,1.4)</rect>
@@ -1348,7 +1348,7 @@
<!-- 特殊组件,会在非玩家派系的时候眩晕该炮塔 -->
<li Class="WulaFallenEmpire.CompProperties_DelayedDamageIfNotPlayer">
<damageDef>EMP</damageDef>
<damageAmount>500</damageAmount>
<damageAmount>300</damageAmount>
<armorPenetration>2</armorPenetration>
<destroyIfKilled>true</destroyIfKilled>
</li>
@@ -1443,6 +1443,312 @@
</modExtensions>
</ThingDef>
<!-- 重型干扰塔 -->
<ThingDef ParentName="BuildingBase">
<defName>Wula_Disturber_Turret_Cleanzone</defName>
<label>HBt-1"磁石"舰炮</label>
<description>清理出一块场地并准备好资源,使得乌拉帝国可以向此处投放建筑。\n\nHBt-1"磁石"是一种需要通电才能运转的重型防御炮塔以联装的方式装载了四门威力巨大的离子风暴炮其射弹携带了强大的EMP效果和杀伤效果可以在远距离上撕碎一切冲击阵地的敌军。</description>
<uiIconPath>Wula/Building/Wula_Disturber_Turret</uiIconPath>
<minifiedDef>MinifiedThing</minifiedDef>
<tickerType>Normal</tickerType>
<tradeability>None</tradeability>
<descriptionHyperlinks>
<ThingDef>Wula_Disturber_Turret</ThingDef>
<ThingDef>Wula_Disturber_Turret_Weapon</ThingDef>
</descriptionHyperlinks>
<thingCategories Inherit="False">
<li>BuildingsMisc</li>
</thingCategories>
<graphicData>
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone_Plus</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>(5,5)</drawSize>
<damageData>
<enabled>false</enabled>
</damageData>
</graphicData>
<altitudeLayer>Building</altitudeLayer>
<passability>PassThroughOnly</passability>
<pathCost>40</pathCost>
<castEdgeShadows>false</castEdgeShadows>
<fillPercent>0.5</fillPercent>
<canOverlapZones>false</canOverlapZones>
<hasInteractionCell>false</hasInteractionCell>
<rotatable>false</rotatable>
<researchPrerequisites Inherit="False">
<li>Wula_Disturber_Turret_Technology</li>
</researchPrerequisites>
<statBases>
<MarketValue>0</MarketValue>
<MaxHitPoints>1</MaxHitPoints>
<WorkToBuild>0</WorkToBuild>
<Mass>1</Mass>
<Flammability>0</Flammability>
</statBases>
<size>(5,5)</size>
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
<resourcesFractionWhenDeconstructed>0</resourcesFractionWhenDeconstructed>
<costList Inherit="False">
<WULA_Alloy>400</WULA_Alloy>
<WULA_Dark_Matter_Item>20</WULA_Dark_Matter_Item>
<WULA_Neutronium>50</WULA_Neutronium>
<WULA_Tex_Voucher>3</WULA_Tex_Voucher>
</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_Disturber_Turret_Incoming</skyfallerDef> <!-- 迫击炮塔空投类型 -->
<destroyBuilding>true</destroyBuilding>
<delayTicks>1</delayTicks>
<allowThinRoof>true</allowThinRoof>
<allowThickRoof>false</allowThickRoof>
</li>
<li Class="WulaFallenEmpire.CompProperties_BuildingSpawner">
<buildingToSpawn>Wula_Disturber_Turret</buildingToSpawn>
<destroyBuilding>false</destroyBuilding>
<spawnEffecter>WULA_Psi_Skip_Entry</spawnEffecter>
<spawnSound>VoidStructure_Emerge</spawnSound>
<inheritFaction>true</inheritFaction>
<requiredResearch>WULA_Building_Teleporter_Technology</requiredResearch>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="SkyfallerBase">
<defName>Wula_Disturber_Turret_Incoming</defName>
<label>RTt-8"深渊"迫击炮塔(空投中)</label>
<size>(5,5)</size>
<graphicData>
<texPath>Wula/Building/Wula_Disturber_Turret_Incoming</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutFlying</shaderType>
<drawSize>(9,9)</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>Wula_Disturber_Turret</spawnThing>
</skyfaller>
<comps>
<li Class="CompProperties_Effecter">
<effecterDef>Smoke_Joint</effecterDef>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>Wula_Disturber_Turret</defName>
<label>HBt-1"磁石"舰炮</label>
<description>HBt-1"磁石"是一种需要通电才能运转的重型防御炮塔以联装的方式装载了四门威力巨大的离子风暴炮其射弹携带了强大的EMP效果和杀伤效果可以在远距离上撕碎一切冲击阵地的敌军。</description>
<thingClass>WulaFallenEmpire.Building_TurretGunHasSpeed</thingClass>
<drawerType>MapMeshAndRealTime</drawerType>
<modExtensions>
<li Class="WulaFallenEmpire.ModExt_HasSpeedTurret">
<speed>0.05</speed> <!-- 旋转速度 (度/Tick)。迫击炮旋转较慢。 -->
</li>
</modExtensions>
<graphicData>
<texPath>Wula/Building/WULA_Turret_Component</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>(12,12)</drawSize>
<!-- <drawOffset>(0,0,-0.16)</drawOffset> -->
<damageData>
<rect>(0.3,0.3,1.4,1.4)</rect>
</damageData>
<shadowData>
<volume>(0.5,0.35,0.75)</volume>
<offset>(0,0,-0.05)</offset>
</shadowData>
</graphicData>
<receivesSignals>true</receivesSignals>
<uiIconPath>Wula/Building/Wula_Disturber_Turret</uiIconPath>
<uiIconScale>1.0</uiIconScale>
<altitudeLayer>Building</altitudeLayer>
<stealable>false</stealable>
<rotatable>false</rotatable>
<size>(5,5)</size>
<statBases>
<MaxHitPoints>3000</MaxHitPoints>
<Flammability>0</Flammability>
<WorkToBuild>3200</WorkToBuild>
<Mass>250</Mass>
<Beauty>0</Beauty>
<ShootingAccuracyTurret>0.80</ShootingAccuracyTurret>
</statBases>
<costList Inherit="False">
<WULA_Alloy>400</WULA_Alloy>
<WULA_Dark_Matter_Item>20</WULA_Dark_Matter_Item>
<WULA_Neutronium>50</WULA_Neutronium>
<WULA_Tex_Voucher>3</WULA_Tex_Voucher>
</costList>
<tickerType>Normal</tickerType>
<passability>Impassable</passability>
<blockWind>true</blockWind>
<fillPercent>1</fillPercent>
<blockLight>false</blockLight>
<hasTooltip>true</hasTooltip>
<building>
<combatPower>1000</combatPower>
<turretGunDef>Wula_Disturber_Turret_Weapon</turretGunDef>
<turretBurstCooldownTime>12</turretBurstCooldownTime>
<turretTopOffset>(0, 0)</turretTopOffset>
<turretTopDrawSize>10.0</turretTopDrawSize>
<claimable>false</claimable>
</building>
<placeWorkers>
<li>PlaceWorker_TurretTop</li>
<li>PlaceWorker_ShowTurretRadius</li>
</placeWorkers>
<comps>
<li Class="CompProperties_CanBeDormant" />
<li Class="CompProperties_Initiatable" />
<li Class="CompProperties_WakeUpDormant">
<wakeUpSound>MechanoidsWakeUp</wakeUpSound>
</li>
<li Class="CompProperties_Stunnable">
<affectedDamageDefs>
<li>Stun</li>
<li>EMP</li>
</affectedDamageDefs>
<adaptableDamageDefs>
<li>EMP</li>
</adaptableDamageDefs>
</li>
<li Class="CompProperties_AmbientSound">
<sound>MechTurretBig_Call</sound>
</li>
<li Class="WulaFallenEmpire.CompProperties_FactionSetter">
<!-- <factionDef>Mechanoid</factionDef> 不写默认玩家派系-->
<usePlayerFactionIfNull>true</usePlayerFactionIfNull>
<overrideExistingFaction>false</overrideExistingFaction>
</li>
<li Class="CompProperties_Power">
<compClass>CompPowerTrader</compClass>
<basePowerConsumption>300</basePowerConsumption> <!-- 电力消耗较低 -->
</li>
<li Class="CompProperties_Glower">
<glowRadius>6</glowRadius>
<glowColor>(252,240,120,0)</glowColor> <!-- 黄色光晕 -->
</li>
<li Class="WulaFallenEmpire.CompProperties_ForceTargetable" />
<!-- 特殊组件,会在非玩家派系的时候眩晕该炮塔 -->
<li Class="WulaFallenEmpire.CompProperties_DelayedDamageIfNotPlayer">
<damageDef>EMP</damageDef>
<damageAmount>600</damageAmount>
<armorPenetration>2</armorPenetration>
<destroyIfKilled>true</destroyIfKilled>
</li>
<li Class="WulaFallenEmpire.CompProperties_PathCostUpdater">
<adaptiveExpansion>true</adaptiveExpansion>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="BaseWeaponTurret">
<defName>Wula_Disturber_Turret_Weapon</defName>
<label>HBt-1"磁石"</label>
<description>中型舰炮,毁灭能力超群。</description>
<tradeability>None</tradeability>
<destroyOnDrop>true</destroyOnDrop>
<techLevel>Ultra</techLevel>
<graphicData>
<texPath>Wula/Building/Wula_Disturber_Turret_Weapon</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>5</drawSize>
</graphicData>
<uiIconScale>0.33</uiIconScale>
<statBases>
<Mass>150</Mass>
<AccuracyTouch>0.3</AccuracyTouch>
<AccuracyShort>0.5</AccuracyShort>
<AccuracyMedium>0.4</AccuracyMedium>
<AccuracyLong>0.3</AccuracyLong>
</statBases>
<verbs>
<li>
<verbClass>Verb_Shoot</verbClass>
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
<defaultProjectile>Bullet_WULA_WM_Disturber_Turret</defaultProjectile>
<ai_AvoidFriendlyFireRadius>5</ai_AvoidFriendlyFireRadius>
<minRange>18</minRange>
<range>300</range>
<requireLineOfSight>false</requireLineOfSight>
<warmupTime>4</warmupTime>
<isMortar>true</isMortar>
<defaultCooldownTime>5</defaultCooldownTime>
<burstShotCount>4</burstShotCount>
<forcedMissRadius>12</forcedMissRadius>
<forcedMissRadiusClassicMortars>13</forcedMissRadiusClassicMortars>
<soundCast>Wula_Disturber_Turret_Weapon_Shootingsound</soundCast>
<soundCastTail>GunTail_Heavy</soundCastTail>
<muzzleFlashScale>18</muzzleFlashScale>
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
</li>
</verbs>
</ThingDef>
<ThingDef ParentName="BaseBullet">
<defName>Bullet_WULA_WM_Disturber_Turret</defName>
<label>磁石等离子炮弹</label>
<thingClass>WulaFallenEmpire.Projectile_NorthArcTrail</thingClass>
<tickerType>Normal</tickerType>
<neverMultiSelect>True</neverMultiSelect>
<graphicData>
<texPath>Wula/Projectile/WULA_Energy_2_Shell</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>MoteGlow</shaderType>
<drawSize>(2.5,3)</drawSize>
<color>(218,255,200,255)</color>
</graphicData>
<projectile>
<damageDef>WULA_Disturber_Turret_Bomb</damageDef>
<damageAmountBase>250</damageAmountBase>
<speed>40</speed>
<armorPenetrationBase>2</armorPenetrationBase>
<explosionRadius>8.0</explosionRadius>
<soundHitThickRoof>Artillery_HitThickRoof</soundHitThickRoof>
<soundExplode>Wula_Disturber_Turret_Weapon_Explosive</soundExplode>
<soundImpactAnticipate>MortarRound_PreImpact</soundImpactAnticipate>
<soundAmbient>MortarRound_Ambient</soundAmbient>
<stoppingPower>5</stoppingPower>
<flyOverhead>true</flyOverhead>
<preExplosionSpawnSingleThingDef>Filth_BlastMark</preExplosionSpawnSingleThingDef>
</projectile>
<modExtensions>
<li Class="WulaFallenEmpire.NorthArcModExtension">
<northOffsetDistance>4</northOffsetDistance>
<curveSteepness>1.0</curveSteepness>
<useArcTrajectory>true</useArcTrajectory>
</li>
<li Class="WulaFallenEmpire.TrackingBulletDef">
<tailFleckDef>WULA_GunTail_Plasma</tailFleckDef>
<fleckMakeFleckTickMax>3</fleckMakeFleckTickMax>
<fleckDelayTicks>1</fleckDelayTicks>
<fleckMakeFleckNum>1~2</fleckMakeFleckNum>
<fleckScale>0.5~1.0</fleckScale>
<fleckSpeed>0.1~0.3</fleckSpeed>
<fleckAngle>-30~30</fleckAngle>
</li>
</modExtensions>
</ThingDef>
<!-- 旗帜 -->
<ThingDef ParentName="BuildingBase">
<defName>WULA_Wall_Flag_Building</defName>

View File

@@ -173,7 +173,7 @@
<defName>Bullet_Wula_MR_Mobile_Factory_Turret</defName>
<label>陨磷钢针弹</label>
<graphicData>
<texPath>Wula/Projectile/WULA_Bullet_ChargeLanceShot_Red</texPath>
<texPath>Wula/Projectile/WULA_Bullet_Needle_AT</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>MoteGlow</shaderType>
<drawSize>2.5</drawSize>
@@ -406,7 +406,7 @@
<defName>Bullet_Wula_AI_Heavy_Panzer_Turret_Weapon</defName>
<label>青金石钢针弹</label>
<graphicData>
<texPath>Wula/Projectile/WULA_Bullet_ChargeLanceShot_Red</texPath>
<texPath>Wula/Projectile/WULA_Bullet_Needle_AT</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>MoteGlow</shaderType>
<drawSize>2.5</drawSize>

View File

@@ -871,7 +871,7 @@
</li>
</modExtensions>
<graphicData>
<texPath>Wula/Projectile/WULA_Bullet_ChargeLanceShot_Red</texPath>
<texPath>Wula/Projectile/WULA_Bullet_Needle_AT</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>TransparentPostLight</shaderType>
<drawSize>1.4</drawSize>
@@ -1127,7 +1127,7 @@
</li>
</modExtensions>
<graphicData>
<texPath>Wula/Projectile/WULA_Bullet_ChargeLanceShot_Red</texPath>
<texPath>Wula/Projectile/WULA_Bullet_Needle_AT</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>TransparentPostLight</shaderType>
<drawSize>1</drawSize>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -16,6 +16,9 @@ namespace WulaFallenEmpire
// 存储的炮塔列表
private List<TurretInstance> turrets = new List<TurretInstance>();
// 标记是否已加载数据
private bool dataLoaded = false;
// 获取当前机械族存储数量
private int StoredMechanoidCount
{
@@ -34,13 +37,26 @@ namespace WulaFallenEmpire
public override void Initialize(CompProperties props)
{
base.Initialize(props);
UpdateTurrets();
// 只有在没有加载过数据时才初始化新炮塔
if (!dataLoaded)
{
UpdateTurrets();
}
}
public override void CompTick()
{
base.CompTick();
// 确保数据已加载
if (!dataLoaded)
{
dataLoaded = true;
InitializeTurretsAfterLoad();
return;
}
// 更新炮塔数量
if (Find.TickManager.TicksGame % 60 == 0)
{
@@ -57,6 +73,29 @@ namespace WulaFallenEmpire
}
}
// 加载后初始化炮塔
private void InitializeTurretsAfterLoad()
{
if (turrets == null)
{
turrets = new List<TurretInstance>();
}
// 重新建立 parent 引用
for (int i = 0; i < turrets.Count; i++)
{
if (turrets[i] != null)
{
turrets[i].SetParent(this);
turrets[i].SetIndex(i);
turrets[i].PostLoadInit();
}
}
// 根据当前机械族数量调整炮塔数量
UpdateTurrets();
}
private void UpdateTurrets()
{
int currentCount = Mathf.Min(StoredMechanoidCount, Props.maxTurrets);
@@ -70,7 +109,16 @@ namespace WulaFallenEmpire
// 移除多余的炮塔
while (turrets.Count > currentCount)
{
turrets.RemoveAt(turrets.Count - 1);
// 注意:只移除未激活的炮塔
int lastIndex = turrets.Count - 1;
if (lastIndex >= StoredMechanoidCount)
{
turrets.RemoveAt(lastIndex);
}
else
{
break;
}
}
}
@@ -92,35 +140,13 @@ namespace WulaFallenEmpire
{
base.PostExposeData();
// 在保存和加载时重新建立 parent 引用
if (Scribe.mode == LoadSaveMode.Saving)
{
Scribe_Collections.Look(ref turrets, "turrets", LookMode.Deep);
}
else if (Scribe.mode == LoadSaveMode.LoadingVars)
{
Scribe_Collections.Look(ref turrets, "turrets", LookMode.Deep);
}
Scribe_Values.Look(ref dataLoaded, "dataLoaded", false);
Scribe_Collections.Look(ref turrets, "turrets", LookMode.Deep);
if (Scribe.mode == LoadSaveMode.PostLoadInit)
{
if (turrets == null)
{
turrets = new List<TurretInstance>();
}
else
{
// 重新建立 parent 引用
for (int i = 0; i < turrets.Count; i++)
{
if (turrets[i] != null)
{
turrets[i].SetParent(this);
turrets[i].SetIndex(i);
}
}
}
UpdateTurrets();
// 标记需要重新初始化
dataLoaded = false;
}
}
@@ -138,6 +164,9 @@ namespace WulaFallenEmpire
public float curRotation;
public Material turretMat;
// 标记是否已初始化
private bool initialized = false;
// 安全访问器
public CompStorageTurret Parent => _parent;
public int Index => _index;
@@ -172,28 +201,19 @@ namespace WulaFallenEmpire
return false;
if (AttackVerb == null)
{
// 尝试重新初始化
if (!initialized)
{
PostLoadInit();
}
return false;
if (TurretDestroyed)
return false;
}
return true;
}
}
public bool TurretDestroyed
{
get
{
var verbProps = AttackVerb?.verbProps;
if (verbProps == null)
return false;
// 这里可以添加建筑炮塔的破坏检查逻辑
return false;
}
}
// 无参构造函数用于序列化
public TurretInstance() { }
@@ -201,7 +221,7 @@ namespace WulaFallenEmpire
{
SetParent(parent);
SetIndex(index);
MakeGun();
Initialize();
}
public void SetParent(CompStorageTurret parent)
@@ -214,13 +234,35 @@ namespace WulaFallenEmpire
_index = index;
}
private void Initialize()
{
if (initialized) return;
MakeGun();
UpdateGunVerbs();
initialized = true;
}
// 加载后初始化
public void PostLoadInit()
{
if (initialized) return;
if (gun == null)
{
MakeGun();
}
UpdateGunVerbs();
initialized = true;
}
private void MakeGun()
{
if (_parent == null || _parent.Props == null || _parent.Props.turretDef == null)
return;
gun = ThingMaker.MakeThing(_parent.Props.turretDef, null);
UpdateGunVerbs();
}
private void UpdateGunVerbs()
@@ -230,9 +272,17 @@ namespace WulaFallenEmpire
var compEq = gun.TryGetComp<CompEquippable>();
if (compEq == null) return;
// 确保 parent 不为 null
if (_parent == null || _parent.parent == null)
{
Log.Warning("[StorageTurret] Parent is null when updating gun verbs");
return;
}
foreach (var verb in compEq.AllVerbs)
{
verb.caster = _parent?.parent;
// 关键修复:设置正确的 caster
verb.caster = _parent.parent;
verb.castCompleteCallback = () =>
{
burstCooldownTicksLeft = AttackVerb?.verbProps?.defaultCooldownTime.SecondsToTicks() ?? 0;
@@ -242,7 +292,14 @@ namespace WulaFallenEmpire
public void TurretTick()
{
if (!CanShoot) return;
if (!CanShoot || AttackVerb == null) return;
// 确保动词已正确初始化
if (AttackVerb.caster == null)
{
UpdateGunVerbs();
return;
}
// 更新炮塔旋转
if (currentTarget.IsValid)
@@ -342,18 +399,9 @@ namespace WulaFallenEmpire
Scribe_TargetInfo.Look(ref currentTarget, "currentTarget");
Scribe_Deep.Look(ref gun, "gun");
Scribe_Values.Look(ref curRotation, "curRotation", 0f);
Scribe_Values.Look(ref initialized, "initialized", false);
if (Scribe.mode == LoadSaveMode.PostLoadInit)
{
if (gun == null)
{
MakeGun();
}
else
{
UpdateGunVerbs();
}
}
// 注意:不序列化 _parent 和 _index它们在加载后重新设置
}
}
}