1
This commit is contained in:
Binary file not shown.
@@ -1269,7 +1269,7 @@
|
||||
<points>4000</points>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<raidStrategy>ImmediateAttackFriendly</raidStrategy>
|
||||
<raidArrivalMode>EdgeDropGroups</raidArrivalMode>
|
||||
<raidArrivalMode>WULA_EdgeTeleport</raidArrivalMode>
|
||||
<groupKind>Combat</groupKind>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
@@ -1295,7 +1295,7 @@
|
||||
<points>4000</points>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<raidStrategy>ImmediateAttackFriendly</raidStrategy>
|
||||
<raidArrivalMode>EdgeDropGroups</raidArrivalMode>
|
||||
<raidArrivalMode>WULA_EdgeTeleport</raidArrivalMode>
|
||||
<groupKind>Combat</groupKind>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
@@ -1321,7 +1321,7 @@
|
||||
<points>1000</points>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<raidStrategy>ImmediateAttackFriendly</raidStrategy>
|
||||
<raidArrivalMode>EdgeDropGroups</raidArrivalMode>
|
||||
<raidArrivalMode>WULA_EdgeTeleport</raidArrivalMode>
|
||||
<groupKind>Combat</groupKind>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
@@ -1345,9 +1345,9 @@
|
||||
<effects>
|
||||
<li Class="WulaFallenEmpire.Effect_TriggerRaid">
|
||||
<points>6000</points>
|
||||
<faction>Empire</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<raidStrategy>ImmediateAttack</raidStrategy>
|
||||
<raidArrivalMode>EdgeDropGroups</raidArrivalMode>
|
||||
<raidArrivalMode>WULA_EdgeTeleport</raidArrivalMode>
|
||||
<groupKind>Combat</groupKind>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
@@ -1371,9 +1371,9 @@
|
||||
<effects>
|
||||
<li Class="WulaFallenEmpire.Effect_TriggerRaid">
|
||||
<points>6000</points>
|
||||
<faction>Empire</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<raidStrategy>ImmediateAttack</raidStrategy>
|
||||
<raidArrivalMode>EdgeDropGroups</raidArrivalMode>
|
||||
<raidArrivalMode>WULA_EdgeTeleport</raidArrivalMode>
|
||||
<groupKind>Combat</groupKind>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
@@ -1397,9 +1397,9 @@
|
||||
<effects>
|
||||
<li Class="WulaFallenEmpire.Effect_TriggerRaid">
|
||||
<points>3000</points>
|
||||
<faction>Empire</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<raidStrategy>ImmediateAttack</raidStrategy>
|
||||
<raidArrivalMode>EdgeDropGroups</raidArrivalMode>
|
||||
<raidArrivalMode>WULA_EdgeTeleport</raidArrivalMode>
|
||||
<groupKind>Combat</groupKind>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
|
||||
@@ -42,14 +42,16 @@
|
||||
<basicMemberKind>Wula_PawnKind</basicMemberKind>
|
||||
<pawnSingular>乌拉帝国合成人</pawnSingular>
|
||||
<pawnsPlural>乌拉帝国合成人</pawnsPlural>
|
||||
<categoryTag>WulaPIALegion</categoryTag>
|
||||
<generateNewLeaderFromMapMembersOnly>true</generateNewLeaderFromMapMembersOnly>
|
||||
<leaderTitle>总控</leaderTitle>
|
||||
<leaderForceGenerateNewPawn>true</leaderForceGenerateNewPawn>
|
||||
<fixedName>乌拉帝国 行星封锁机关</fixedName>
|
||||
<fixedLeaderKinds>
|
||||
<li>WULA_Legion_PawnKind</li>
|
||||
</fixedLeaderKinds>
|
||||
<raidsForbidden>true</raidsForbidden>
|
||||
<requiredCountAtGameStart>1</requiredCountAtGameStart>
|
||||
<factionNameMaker>NamerFaction_Wula_PIA_Legion_Faction</factionNameMaker>
|
||||
<factionIconPath>Wula/World/WorldObjects/Expanding/Wula_PIA_Legion_Faction</factionIconPath>
|
||||
<settlementGenerationWeight>0</settlementGenerationWeight>
|
||||
<maxConfigurableAtWorldCreation>1</maxConfigurableAtWorldCreation>
|
||||
@@ -139,4 +141,70 @@
|
||||
<li>Wula_Backstory_Categories</li>
|
||||
</backstoryCategories>
|
||||
</FactionDef>
|
||||
<FactionDef ParentName="FactionBase">
|
||||
<defName>Wula_Progressive_Faction</defName>
|
||||
<label>乌拉帝国 进步派</label>
|
||||
<description>乌拉帝国内部的分裂者,高举推翻皇室的旗帜,势力在各个乌拉帝国星域中快速蔓延。她们将异族和保皇派视为死敌,会毫不留情地攻击和其不属于同一个派系的乌拉帝国合成人。\n\n目前她们在边缘世界的活动较为隐秘,但是可以肯定的是,即使没有成建制的舰队,擅长游击战的她们依然有和行星封锁机关平起平坐的能力。</description>
|
||||
<pawnSingular>乌拉帝国合成人</pawnSingular>
|
||||
<pawnsPlural>乌拉帝国合成人</pawnsPlural>
|
||||
<categoryTag>wulaProgressive</categoryTag>
|
||||
<requiredCountAtGameStart>1</requiredCountAtGameStart>
|
||||
<maxConfigurableAtWorldCreation>1</maxConfigurableAtWorldCreation>
|
||||
<configurationListOrderPriority>2000</configurationListOrderPriority>
|
||||
<displayInFactionSelection>false</displayInFactionSelection>
|
||||
<fixedName>乌拉帝国 进步派</fixedName>
|
||||
<canGenerateQuestSites>false</canGenerateQuestSites>
|
||||
<factionIconPath>Wula/World/WorldObjects/Expanding/WULA_Progressive_Faction</factionIconPath>
|
||||
<techLevel>Spacer</techLevel>
|
||||
<backstoryFilters>
|
||||
<li>
|
||||
<categories>
|
||||
<li>Offworld</li>
|
||||
</categories>
|
||||
</li>
|
||||
</backstoryFilters>
|
||||
<hidden>true</hidden>
|
||||
<rescueesCanJoin>true</rescueesCanJoin>
|
||||
<autoFlee>false</autoFlee>
|
||||
<apparelStuffFilter>
|
||||
<thingDefs>
|
||||
<li>Hyperweave</li>
|
||||
<li>Plasteel</li>
|
||||
</thingDefs>
|
||||
</apparelStuffFilter>
|
||||
<allowedMemes>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">Structure_Archist</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">Transhumanist</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">HumanPrimacy</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">Loyalist</li>
|
||||
</allowedMemes>
|
||||
<requiredMemes>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">Structure_Archist</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">Transhumanist</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">HumanPrimacy</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Ideology">Loyalist</li>
|
||||
</requiredMemes>
|
||||
<maxPawnCostPerTotalPointsCurve>
|
||||
<points>
|
||||
<li>(100,100)</li>
|
||||
<li>(10000,10000)</li>
|
||||
</points>
|
||||
</maxPawnCostPerTotalPointsCurve>
|
||||
<raidsForbidden>true</raidsForbidden>
|
||||
<raidCommonalityFromPointsCurve>
|
||||
<points>
|
||||
<li>(0, 0)</li>
|
||||
</points>
|
||||
</raidCommonalityFromPointsCurve>
|
||||
<pawnGroupMakers>
|
||||
<li>
|
||||
<kindDef>Combat</kindDef>
|
||||
<commonality>100</commonality>
|
||||
<options>
|
||||
<WULA_Hostile_Progressive_Light_Unit>1</WULA_Hostile_Progressive_Light_Unit>
|
||||
</options>
|
||||
</li>
|
||||
</pawnGroupMakers>
|
||||
<permanentEnemy>true</permanentEnemy>
|
||||
</FactionDef>
|
||||
</Defs>
|
||||
@@ -659,7 +659,7 @@
|
||||
</lifeStages>
|
||||
<minGenerationAge>18</minGenerationAge>
|
||||
<maxGenerationAge>20</maxGenerationAge>
|
||||
<combatPower>250</combatPower>
|
||||
<combatPower>200</combatPower>
|
||||
<initialWillRange>10~20</initialWillRange>
|
||||
<initialResistanceRange>10~20</initialResistanceRange>
|
||||
<itemQuality>Poor</itemQuality>
|
||||
|
||||
22
1.6/1.6/Defs/PawnsArrivalModeDefs/WULA_PawnsArrivalModes.xml
Normal file
22
1.6/1.6/Defs/PawnsArrivalModeDefs/WULA_PawnsArrivalModes.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<PawnsArrivalModeDef>
|
||||
<defName>WULA_EdgeTeleport</defName>
|
||||
<workerClass>WulaFallenEmpire.PawnsArrivalModeWorker_EdgeTeleport</workerClass>
|
||||
<layerWhitelist>
|
||||
<li>Surface</li>
|
||||
<li MayRequire="Ludeon.RimWorld.Odyssey">Orbit</li>
|
||||
</layerWhitelist>
|
||||
<minSpaceSelectionWeight>0.1</minSpaceSelectionWeight>
|
||||
<selectionWeightCurve> <!-- not usable in many strategies and by many factions, so this gets boosted -->
|
||||
<points>
|
||||
<li>(1, 0)</li>
|
||||
<li>(999999, 0)</li>
|
||||
</points>
|
||||
</selectionWeightCurve>
|
||||
<minTechLevel>Ultra</minTechLevel>
|
||||
<textEnemy>一群来自 {1} 的 {0} 通过传送进入了地图!</textEnemy>
|
||||
<textFriendly>一群来自 {1} 的 {0} 援军通过传送进入了地图!</textFriendly>
|
||||
<textWillArrive>{0_pawnsPluralDef} 将通过传送进入地图</textWillArrive>
|
||||
</PawnsArrivalModeDef>
|
||||
</Defs>
|
||||
@@ -1,258 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<QuestScriptDef>
|
||||
<defName>WULA_Attack_Robber_Camp</defName>
|
||||
<rootSelectionWeight>0</rootSelectionWeight>
|
||||
<expireDaysRange>1</expireDaysRange>
|
||||
<autoAccept>false</autoAccept>
|
||||
<sendAvailableLetter>true</sendAvailableLetter>
|
||||
<isRootSpecial>true</isRootSpecial> <!-- 特殊任务 -->
|
||||
|
||||
<questNameRules>
|
||||
<rulesStrings>
|
||||
<li>questName->WULA_Attack_Robber_Camp_questName</li>
|
||||
</rulesStrings>
|
||||
</questNameRules>
|
||||
<questDescriptionRules>
|
||||
<rulesStrings>
|
||||
<li>questDescription->WULA_Attack_Robber_Camp_questDescription</li>
|
||||
</rulesStrings>
|
||||
</questDescriptionRules>
|
||||
<root Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="QuestNode_SubScript">
|
||||
<def>Util_RandomizePointsChallengeRating</def>
|
||||
<parms>
|
||||
<pointsFactorTwoStar>1.5</pointsFactorTwoStar>
|
||||
<pointsFactorThreeStar>2</pointsFactorThreeStar>
|
||||
</parms>
|
||||
</li>
|
||||
|
||||
<li Class="QuestNode_SubScript">
|
||||
<def>Util_AdjustPointsForDistantFight</def>
|
||||
</li>
|
||||
|
||||
<li Class="QuestNode_GetMap">
|
||||
<canBeSpace>false</canBeSpace>
|
||||
</li>
|
||||
|
||||
<li Class="QuestNode_GetFaction">
|
||||
<storeAs>siteFaction</storeAs>
|
||||
<allowEnemy>true</allowEnemy>
|
||||
<mustBePermanentEnemy>true</mustBePermanentEnemy>
|
||||
</li>
|
||||
|
||||
<li Class="QuestEditor_Library.QuestNode_RandomCustomMap">
|
||||
<datas>
|
||||
<li>
|
||||
<key>WULA_Camp_Captured_By_Robber</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>
|
||||
<overrideFaction>$siteFaction</overrideFaction>
|
||||
<distance>
|
||||
<min>5</min>
|
||||
<max>10</max>
|
||||
</distance>
|
||||
<blacklist />
|
||||
</li>
|
||||
|
||||
<li Class="QuestNode_SubScript">
|
||||
<def>Util_GetDefaultRewardValueFromPoints</def>
|
||||
<parms>
|
||||
<!-- Use the actual threat points generated (some site parts define a minimum threshold) -->
|
||||
<points>$points</points>
|
||||
</parms>
|
||||
</li>
|
||||
|
||||
<!-- If we enter and leave, the map is destroyed. Fail the quest. -->
|
||||
<li Class="QuestNode_Signal">
|
||||
<inSignal>site.Destroyed</inSignal>
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="QuestNode_Letter">
|
||||
<label TKey="LetterLabelQuestFailed">Quest failed: [resolvedQuestName]</label>
|
||||
<text TKey="LetterTextQuestFailed">After being discovered, the bandit camp has dispersed. The quest [resolvedQuestName] has ended.</text>
|
||||
</li>
|
||||
<li Class="QuestNode_End">
|
||||
<outcome>Fail</outcome>
|
||||
</li>
|
||||
</nodes>
|
||||
</node>
|
||||
</li>
|
||||
|
||||
<li Class="QuestNode_Signal">
|
||||
<inSignal>site.AllEnemiesDefeated</inSignal>
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="QuestNode_Notify_PlayerRaidedSomeone">
|
||||
<getRaidersFromMapParent>$site</getRaidersFromMapParent>
|
||||
</li>
|
||||
<li Class="QuestNode_GiveRewards">
|
||||
<parms>
|
||||
<allowGoodwill>true</allowGoodwill>
|
||||
<allowRoyalFavor>true</allowRoyalFavor>
|
||||
<chosenPawnSignal>ChosenPawnForReward</chosenPawnSignal>
|
||||
</parms>
|
||||
<addCampLootReward>true</addCampLootReward>
|
||||
<customLetterLabel TKey="LetterLabelPaymentArrived">Payment arrived</customLetterLabel>
|
||||
<customLetterText TKey="LetterTextPaymentArrived">You have defeated the bandit camp!\n\nThe payment from [asker_faction_name] has arrived.</customLetterText>
|
||||
<nodeIfChosenPawnSignalUsed Class="QuestNode_Letter">
|
||||
<letterDef>ChoosePawn</letterDef>
|
||||
<label TKey="LetterLabelFavorReceiver">[asker_faction_royalFavorLabel]</label>
|
||||
<text TKey="LetterTextFavorReceiver">These colonists participated in the victory for the quest [resolvedQuestName]. [asker_definite] wants to know who should receive the [royalFavorReward_amount] [asker_faction_royalFavorLabel] for this service.</text>
|
||||
<useColonistsOnMap>$site</useColonistsOnMap>
|
||||
<chosenPawnSignal>ChosenPawnForReward</chosenPawnSignal>
|
||||
</nodeIfChosenPawnSignalUsed>
|
||||
</li>
|
||||
</nodes>
|
||||
</node>
|
||||
</li>
|
||||
<li Class="QuestNode_End">
|
||||
<inSignal>site.AllEnemiesDefeated</inSignal>
|
||||
<outcome>Success</outcome>
|
||||
</li>
|
||||
</nodes>
|
||||
</root>
|
||||
</QuestScriptDef>
|
||||
<QuestEditor_Library.CustomMapDataDef>
|
||||
<defName>WULA_Camp_Captured_By_Robber</defName>
|
||||
<label>被异族占据的哨站</label>
|
||||
<size>(44, 1, 44)</size>
|
||||
<isPart>true</isPart>
|
||||
<commonality>0</commonality>
|
||||
<faction>MapFaction</faction>
|
||||
<pawns>
|
||||
<li>
|
||||
<key>(21, 0, 24)</key>
|
||||
<value>
|
||||
<li Class="QuestEditor_Library.PawnSpawnData_Faction">
|
||||
<dataName>Robber</dataName>
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>RobberGroup</lordDataName>
|
||||
<faction>MapFaction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
<point>1000~2000</point>
|
||||
</li>
|
||||
</value>
|
||||
</li>
|
||||
</pawns>
|
||||
<thingDatas>
|
||||
<li>
|
||||
<def>WULA_TransportPod</def>
|
||||
<allRect>
|
||||
<li>(24,20,24,20)</li>
|
||||
<li>(24,23,24,23)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>Brazier</def>
|
||||
<stuff>Steel</stuff>
|
||||
<position>(16,0,22)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>Bedroll</def>
|
||||
<stuff>Cloth</stuff>
|
||||
<rotation>3</rotation>
|
||||
<allRect>
|
||||
<li>(23,14,23,16)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Fusion_Generators</def>
|
||||
<storedEnergy>29.99023</storedEnergy>
|
||||
<position>(30,0,27)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Wall_Flag_Building</def>
|
||||
<allRect>
|
||||
<li>(16,13,16,13)</li>
|
||||
<li>(25,30,25,30)</li>
|
||||
<li>(27,30,27,30)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Machine_Recharger</def>
|
||||
<position>(14,0,16)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaWall</def>
|
||||
<allRect>
|
||||
<li>(12,14,16,14)</li>
|
||||
<li>(12,15,12,18)</li>
|
||||
<li>(11,18,11,18)</li>
|
||||
<li>(10,20,10,21)</li>
|
||||
<li>(9,21,9,27)</li>
|
||||
<li>(20,12,22,12)</li>
|
||||
<li>(22,13,23,13)</li>
|
||||
<li>(25,13,29,13)</li>
|
||||
<li>(10,27,11,27)</li>
|
||||
<li>(11,28,11,29)</li>
|
||||
<li>(12,29,12,29)</li>
|
||||
<li>(29,14,30,14)</li>
|
||||
<li>(30,15,31,16)</li>
|
||||
<li>(14,32,14,35)</li>
|
||||
<li>(31,17,31,21)</li>
|
||||
<li>(33,16,35,16)</li>
|
||||
<li>(15,35,21,35)</li>
|
||||
<li>(35,17,35,18)</li>
|
||||
<li>(21,33,24,33)</li>
|
||||
<li>(24,31,25,31)</li>
|
||||
<li>(21,34,21,34)</li>
|
||||
<li>(24,32,24,32)</li>
|
||||
<li>(36,18,37,18)</li>
|
||||
<li>(32,25,34,25)</li>
|
||||
<li>(27,31,27,32)</li>
|
||||
<li>(32,26,32,29)</li>
|
||||
<li>(37,19,37,22)</li>
|
||||
<li>(34,24,34,24)</li>
|
||||
<li>(31,29,31,32)</li>
|
||||
<li>(28,32,30,32)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaDoor</def>
|
||||
<allRect>
|
||||
<li>(32,16,32,16)</li>
|
||||
<li>(26,31,26,31)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Sonar_Mine</def>
|
||||
<allRect>
|
||||
<li>(10,22,10,22)</li>
|
||||
<li>(28,14,28,14)</li>
|
||||
<li>(30,31,30,31)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>Bedroll</def>
|
||||
<stuff>Cloth</stuff>
|
||||
<rotation>1</rotation>
|
||||
<allRect>
|
||||
<li>(10,24,10,26)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaShelter</def>
|
||||
<allRect>
|
||||
<li>(12,6,15,6)</li>
|
||||
<li>(9,10,12,10)</li>
|
||||
<li>(12,7,12,9)</li>
|
||||
<li>(7,32,7,36)</li>
|
||||
<li>(34,9,38,9)</li>
|
||||
<li>(8,36,10,36)</li>
|
||||
<li>(38,10,38,12)</li>
|
||||
<li>(35,35,38,35)</li>
|
||||
<li>(38,32,38,34)</li>
|
||||
</allRect>
|
||||
</li>
|
||||
</thingDatas>
|
||||
</QuestEditor_Library.CustomMapDataDef>
|
||||
</Defs>
|
||||
@@ -97,10 +97,10 @@
|
||||
</datas>
|
||||
<buffer>5</buffer>
|
||||
<bufferMin>10</bufferMin>
|
||||
<siteIconPath>Things/Building/Natural/Hive/HiveC</siteIconPath>
|
||||
<expandingIconPath>Things/Building/Natural/Hive/HiveC</expandingIconPath>
|
||||
<siteIconPath>Wula/World/WorldObjects/Expanding/WULA_Progressive_Faction</siteIconPath>
|
||||
<expandingIconPath>Wula/World/WorldObjects/Expanding/WULA_Progressive_Faction</expandingIconPath>
|
||||
<storeAs>site</storeAs>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<disdestroyBecauseOfNoColonist>true</disdestroyBecauseOfNoColonist>
|
||||
<distance>
|
||||
<min>5</min>
|
||||
@@ -177,7 +177,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Sniper_Cat_Group</lordDataName>
|
||||
<count>2~3</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -192,7 +192,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Sniper_Cat_Group</lordDataName>
|
||||
<count>2~3</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -207,7 +207,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Sniper_Cat_Group</lordDataName>
|
||||
<count>2~3</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -222,7 +222,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Sniper_Cat_Group</lordDataName>
|
||||
<count>2~3</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -237,7 +237,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Hostile_Group</lordDataName>
|
||||
<count>3~4</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -252,7 +252,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Hostile_Group</lordDataName>
|
||||
<count>3~4</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -267,7 +267,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Hostile_Group</lordDataName>
|
||||
<count>3~4</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -282,7 +282,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Hostile_Group</lordDataName>
|
||||
<count>3~4</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -336,7 +336,7 @@
|
||||
<thingDatas>
|
||||
<li>
|
||||
<def>WulaShelter</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(10,10,14,10)</li>
|
||||
<li>(10,11,10,14)</li>
|
||||
@@ -484,7 +484,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaWall</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(17,17,26,17)</li>
|
||||
<li>(17,18,17,26)</li>
|
||||
@@ -607,7 +607,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaDoor</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(21,26,21,26)</li>
|
||||
<li>(35,19,35,19)</li>
|
||||
@@ -630,7 +630,7 @@
|
||||
<li>
|
||||
<def>WulaDoor</def>
|
||||
<rotation>1</rotation>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(26,21,26,21)</li>
|
||||
<li>(19,35,19,35)</li>
|
||||
@@ -652,7 +652,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>FloodLight</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(14,14,14,14)</li>
|
||||
<li>(16,35,16,35)</li>
|
||||
@@ -670,7 +670,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Cat_Bunker</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(12,12,12,12)</li>
|
||||
<li>(12,24,12,24)</li>
|
||||
@@ -696,7 +696,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Base_Laser_Turret</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(18,14,18,14)</li>
|
||||
<li>(14,18,14,18)</li>
|
||||
@@ -734,7 +734,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Base_ATGun_Turret</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(32,13,32,13)</li>
|
||||
<li>(13,32,13,32)</li>
|
||||
@@ -748,7 +748,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Base_Mortar_Turret</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(20,20,20,20)</li>
|
||||
<li>(20,23,20,23)</li>
|
||||
@@ -770,7 +770,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_MechAssembler</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(38,38,38,38)</li>
|
||||
<li>(41,38,41,38)</li>
|
||||
@@ -780,7 +780,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_MechAssembler_Huge</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(39,34,39,34)</li>
|
||||
<li>(34,39,34,39)</li>
|
||||
@@ -790,7 +790,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_DarkEnergy_Generators</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<storedEnergy>2</storedEnergy>
|
||||
<allRect>
|
||||
<li>(25,32,25,32)</li>
|
||||
@@ -805,7 +805,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Disturber_Turret</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(32,32,32,32)</li>
|
||||
<li>(32,47,32,47)</li>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<IncidentDef>
|
||||
<defName>WULA_GiveQuest_Progressive_Ship_Attack_Quest</defName>
|
||||
<category>GiveQuest</category>
|
||||
<label>突击舰队攻击</label>
|
||||
<label>进步派攻击</label>
|
||||
<targetTags>
|
||||
<li>Map_PlayerHome</li>
|
||||
</targetTags>
|
||||
@@ -43,6 +43,34 @@
|
||||
<!-- 随机 -->
|
||||
<li Class="QuestNode_RandomNode">
|
||||
<nodes>
|
||||
<!-- 游击队 -->
|
||||
<li Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="QuestNode_ResolveQuestName">
|
||||
<rules>
|
||||
<rulesStrings>
|
||||
<li>questName->叛军游击队</li>
|
||||
</rulesStrings>
|
||||
</rules>
|
||||
</li>
|
||||
<li Class="QuestNode_ResolveQuestDescription">
|
||||
<rules>
|
||||
<rulesStrings>
|
||||
<li>questDescription->一群乌拉帝国进步派的游击队攻击了你的殖民地!</li>
|
||||
</rulesStrings>
|
||||
</rules>
|
||||
</li>
|
||||
<li Class="QuestNode_RandomRaid">
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<useCurrentThreatPoints>true</useCurrentThreatPoints>
|
||||
<currentThreatPointsFactor>2</currentThreatPointsFactor>
|
||||
<arrivalMode>WULA_EdgeTeleport</arrivalMode>
|
||||
<customLetterLabel TKey="LetterLabelChasing">乌拉帝国 进步派的游击队</customLetterLabel>
|
||||
<customLetterText TKey="LetterTextChasing">一群乌拉帝国进步派的游击队正在攻击你的殖民地!</customLetterText>
|
||||
</li>
|
||||
</nodes>
|
||||
</li>
|
||||
<!-- 突击舰 -->
|
||||
<li Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="QuestNode_ResolveQuestName">
|
||||
@@ -66,7 +94,7 @@
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mini_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -79,7 +107,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mini_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>4</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -95,7 +123,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Small_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>2</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -107,12 +135,11 @@
|
||||
<value1>$points</value1>
|
||||
<value2>5999</value2>
|
||||
|
||||
<!-- Lodgers arrive by shuttle -->
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mid_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -125,7 +152,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Small_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>3</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -139,13 +166,12 @@
|
||||
<li Class="QuestNode_Greater">
|
||||
<value1>$points</value1>
|
||||
<value2>7999</value2>
|
||||
|
||||
<!-- Lodgers arrive by shuttle -->
|
||||
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mid_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -158,7 +184,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Small_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>3</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -172,13 +198,12 @@
|
||||
<li Class="QuestNode_Greater">
|
||||
<value1>$points</value1>
|
||||
<value2>9999</value2>
|
||||
|
||||
<!-- Lodgers arrive by shuttle -->
|
||||
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mid_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -191,7 +216,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Small_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>2</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -206,19 +231,18 @@
|
||||
<value1>$points</value1>
|
||||
<value2>12999</value2>
|
||||
|
||||
<!-- Lodgers arrive by shuttle -->
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mini_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>4</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mid_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -231,7 +255,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Small_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>3</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -245,20 +269,19 @@
|
||||
<li Class="QuestNode_Greater">
|
||||
<value1>$points</value1>
|
||||
<value2>15999</value2>
|
||||
|
||||
<!-- Lodgers arrive by shuttle -->
|
||||
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mini_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>4</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Mid_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -271,7 +294,7 @@
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>WULA_Progressive_Ship_Small_Beacon_Cleanzone</thingDef>
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnCount>3</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
@@ -284,10 +307,90 @@
|
||||
</li>
|
||||
</nodes>
|
||||
</li>
|
||||
<!-- 猫猫特战 -->
|
||||
<li Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="QuestNode_ResolveQuestName">
|
||||
<rules>
|
||||
<rulesStrings>
|
||||
<li>questName->微型空投舱</li>
|
||||
</rulesStrings>
|
||||
</rules>
|
||||
</li>
|
||||
<li Class="QuestNode_ResolveQuestDescription">
|
||||
<rules>
|
||||
<rulesStrings>
|
||||
<li>questDescription->几个可疑的黑点落到了殖民地附近···</li>
|
||||
</rulesStrings>
|
||||
</rules>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>Mech_WULA_Cat_Cloak_Sniper_Incoming</thingDef>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
</li>
|
||||
<li Class="QuestNode_Greater">
|
||||
<value1>$points</value1>
|
||||
<value2>2999</value2>
|
||||
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>Mech_WULA_Cat_Cloak_Sniper_Incoming</thingDef>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
</li>
|
||||
</nodes>
|
||||
</node>
|
||||
</li>
|
||||
<li Class="QuestNode_Greater">
|
||||
<value1>$points</value1>
|
||||
<value2>5999</value2>
|
||||
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>Mech_WULA_Cat_Cloak_Sniper_Incoming</thingDef>
|
||||
<spawnCount>1</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
</li>
|
||||
</nodes>
|
||||
</node>
|
||||
</li>
|
||||
<li Class="QuestNode_Greater">
|
||||
<value1>$points</value1>
|
||||
<value2>9999</value2>
|
||||
|
||||
<node Class="QuestNode_Sequence">
|
||||
<nodes>
|
||||
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
|
||||
<thingDef>Mech_WULA_Cat_Cloak_Sniper_Incoming</thingDef>
|
||||
<spawnCount>2</spawnCount>
|
||||
<sendMessageOnSuccess>false</sendMessageOnSuccess>
|
||||
<sendMessageOnFailure>false</sendMessageOnFailure>
|
||||
</li>
|
||||
</nodes>
|
||||
</node>
|
||||
</li>
|
||||
</nodes>
|
||||
</li>
|
||||
</nodes>
|
||||
</li>
|
||||
|
||||
<li Class="QuestNode_ChangeFactionGoodwill">
|
||||
<faction>Wula_PIA_Legion_Faction</faction>
|
||||
<change>10</change>
|
||||
<reason>WULA_Attack_Progressive</reason>
|
||||
</li>
|
||||
<li Class="QuestNode_End" />
|
||||
</nodes>
|
||||
</root>
|
||||
</QuestScriptDef>
|
||||
<HistoryEventDef>
|
||||
<defName>WULA_Attack_Progressive</defName>
|
||||
<label>对抗乌拉帝国叛军</label>
|
||||
</HistoryEventDef>
|
||||
</Defs>
|
||||
@@ -578,7 +578,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -593,7 +593,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -608,7 +608,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -623,7 +623,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -638,7 +638,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -653,7 +653,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -668,7 +668,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -683,7 +683,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -698,7 +698,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -713,7 +713,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -728,7 +728,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -743,7 +743,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -758,7 +758,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -773,7 +773,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -788,7 +788,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -803,7 +803,7 @@
|
||||
<enableLord>true</enableLord>
|
||||
<lordDataName>WULA_Defender_Group</lordDataName>
|
||||
<count>1</count>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<duty>DefendBase</duty>
|
||||
<spawnType>MapGeneration</spawnType>
|
||||
</li>
|
||||
@@ -839,12 +839,12 @@
|
||||
<thingDatas>
|
||||
<li>
|
||||
<def>WULA_Machine_Recharger</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<position>(21,0,23)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Charging_Station_Synth</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(20,19,20,19)</li>
|
||||
<li>(22,19,22,19)</li>
|
||||
@@ -852,7 +852,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaWall</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(17,10,24,10)</li>
|
||||
<li>(15,13,19,13)</li>
|
||||
@@ -899,26 +899,26 @@
|
||||
<li>
|
||||
<def>Table1x2c</def>
|
||||
<stuff>WULA_Alloy</stuff>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<position>(18,0,21)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>DiningChair</def>
|
||||
<stuff>Uranium</stuff>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<position>(18,0,20)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>DiningChair</def>
|
||||
<stuff>Uranium</stuff>
|
||||
<rotation>2</rotation>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<position>(18,0,23)</position>
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Wall_Flag_Building</def>
|
||||
<rotation>3</rotation>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(25,20,25,20)</li>
|
||||
<li>(25,23,25,23)</li>
|
||||
@@ -926,7 +926,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>HiddenConduit</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(19,17,19,17)</li>
|
||||
<li>(16,20,16,20)</li>
|
||||
@@ -940,7 +940,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Wall_Flag_Building</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(19,17,19,17)</li>
|
||||
<li>(22,17,22,17)</li>
|
||||
@@ -949,7 +949,7 @@
|
||||
<li>
|
||||
<def>Sandbags</def>
|
||||
<stuff>Cloth</stuff>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(7,8,10,8)</li>
|
||||
<li>(7,9,7,11)</li>
|
||||
@@ -972,7 +972,7 @@
|
||||
<li>
|
||||
<def>WULA_Wall_Flag_Building</def>
|
||||
<rotation>2</rotation>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(19,26,19,26)</li>
|
||||
<li>(22,26,22,26)</li>
|
||||
@@ -981,7 +981,7 @@
|
||||
<li>
|
||||
<def>WULA_Wall_Flag_Building</def>
|
||||
<rotation>1</rotation>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(16,20,16,20)</li>
|
||||
<li>(16,23,16,23)</li>
|
||||
@@ -989,7 +989,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Fusion_Generators</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<storedEnergy>29.432827</storedEnergy>
|
||||
<allRect>
|
||||
<li>(17,15,17,15)</li>
|
||||
@@ -1005,7 +1005,7 @@
|
||||
<li>
|
||||
<def>Turret_MiniTurret</def>
|
||||
<stuff>Steel</stuff>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<storedEnergy>60</storedEnergy>
|
||||
<allRect>
|
||||
<li>(16,17,16,17)</li>
|
||||
@@ -1016,7 +1016,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>Wula_Base_Laser_Turret</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(13,14,13,14)</li>
|
||||
<li>(28,14,28,14)</li>
|
||||
@@ -1026,7 +1026,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>TrapIED_Incendiary</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(18,12,18,12)</li>
|
||||
<li>(11,19,11,19)</li>
|
||||
@@ -1040,7 +1040,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WulaDoor</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(11,18,11,18)</li>
|
||||
<li>(11,25,11,25)</li>
|
||||
@@ -1051,7 +1051,7 @@
|
||||
<li>
|
||||
<def>WulaDoor</def>
|
||||
<rotation>1</rotation>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(17,12,17,12)</li>
|
||||
<li>(24,12,24,12)</li>
|
||||
@@ -1061,7 +1061,7 @@
|
||||
</li>
|
||||
<li>
|
||||
<def>WULA_Cat_Bunker</def>
|
||||
<faction>AncientsHostile</faction>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<allRect>
|
||||
<li>(9,10,9,10)</li>
|
||||
<li>(32,10,32,10)</li>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<techprintCommonality>0</techprintCommonality>
|
||||
<techprintMarketValue>0</techprintMarketValue>
|
||||
<heldByFactionCategoryTags>
|
||||
<li>Wula_PIA_Legion_Faction</li>
|
||||
<li>WulaPIALegion</li>
|
||||
</heldByFactionCategoryTags>
|
||||
<prerequisites>
|
||||
<li>Electricity</li>
|
||||
@@ -125,7 +125,7 @@
|
||||
<techprintCommonality>0</techprintCommonality>
|
||||
<techprintMarketValue>0</techprintMarketValue>
|
||||
<heldByFactionCategoryTags>
|
||||
<li>Wula_PIA_Legion_Faction</li>
|
||||
<li>WulaPIALegion</li>
|
||||
</heldByFactionCategoryTags>
|
||||
<prerequisites>
|
||||
<li>WULA_Colony_License_LV1_Technology</li>
|
||||
@@ -187,7 +187,7 @@
|
||||
<techprintCommonality>0</techprintCommonality>
|
||||
<techprintMarketValue>0</techprintMarketValue>
|
||||
<heldByFactionCategoryTags>
|
||||
<li>Wula_PIA_Legion_Faction</li>
|
||||
<li>WulaPIALegion</li>
|
||||
</heldByFactionCategoryTags>
|
||||
<prerequisites>
|
||||
<li>Fabrication</li>
|
||||
@@ -472,7 +472,7 @@
|
||||
<techprintCommonality>0</techprintCommonality>
|
||||
<techprintMarketValue>0</techprintMarketValue>
|
||||
<heldByFactionCategoryTags>
|
||||
<li>Wula_PIA_Legion_Faction</li>
|
||||
<li>WulaPIALegion</li>
|
||||
</heldByFactionCategoryTags>
|
||||
</ResearchProjectDef>
|
||||
<!-- 防御 -->
|
||||
@@ -529,7 +529,7 @@
|
||||
<techprintCommonality>0</techprintCommonality>
|
||||
<techprintMarketValue>0</techprintMarketValue>
|
||||
<heldByFactionCategoryTags>
|
||||
<li>Wula_PIA_Legion_Faction</li>
|
||||
<li>WulaPIALegion</li>
|
||||
</heldByFactionCategoryTags>
|
||||
</ResearchProjectDef>
|
||||
|
||||
|
||||
@@ -571,4 +571,106 @@
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- 特战猫猫(非玩家用) -->
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>Mech_WULA_Cat_Cloak_Sniper_Cleanzone</defName>
|
||||
<label>奇怪的空投区</label>
|
||||
<description>奇怪的空投区</description>
|
||||
<minifiedDef>MinifiedThing</minifiedDef>
|
||||
<tickerType>Normal</tickerType>
|
||||
<tradeability>None</tradeability>
|
||||
<thingCategories Inherit="False">
|
||||
<li>BuildingsMisc</li>
|
||||
</thingCategories>
|
||||
<graphicData>
|
||||
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone</texPath>
|
||||
<graphicClass>Graphic_Multi</graphicClass>
|
||||
<drawSize>(1,1)</drawSize>
|
||||
<damageData>
|
||||
<enabled>false</enabled>
|
||||
</damageData>
|
||||
</graphicData>
|
||||
<costList Inherit="False">
|
||||
<WULA_Alloy>4</WULA_Alloy>
|
||||
</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>
|
||||
<statBases>
|
||||
<MarketValue>0</MarketValue>
|
||||
<MaxHitPoints>1</MaxHitPoints>
|
||||
<WorkToBuild>0</WorkToBuild>
|
||||
<Mass>1</Mass>
|
||||
<Flammability>0</Flammability>
|
||||
</statBases>
|
||||
<size>(1,1)</size>
|
||||
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
|
||||
<resourcesFractionWhenDeconstructed>0</resourcesFractionWhenDeconstructed>
|
||||
<building>
|
||||
<destroySound>BuildingDestroyed_Metal_Small</destroySound>
|
||||
</building>
|
||||
<placeWorkers>
|
||||
<li>WulaFallenEmpire.PlaceWorker_CustomRadius</li>
|
||||
</placeWorkers>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerCaller">
|
||||
<skyfallerDef>Mech_WULA_Cat_Cloak_Sniper_Incoming</skyfallerDef> <!-- 替换为您想要的Skyfaller类型 -->
|
||||
<destroyBuilding>true</destroyBuilding>
|
||||
<delayTicks>1</delayTicks>
|
||||
<allowThinRoof>true</allowThinRoof>
|
||||
<allowThickRoof>false</allowThickRoof>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
<ThingDef ParentName="SkyfallerBase">
|
||||
<defName>Mech_WULA_Cat_Cloak_Sniper_Incoming</defName>
|
||||
<label>奇怪的空投舱(空投中)</label>
|
||||
<size>(1,1)</size>
|
||||
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
|
||||
<graphicData>
|
||||
<texPath>Wula/Building/WULA_DropPod/WULA_DropPod_Incoming</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>CutoutFlying</shaderType>
|
||||
<drawSize>1</drawSize>
|
||||
</graphicData>
|
||||
<skyfaller>
|
||||
<movementType>Accelerate</movementType>
|
||||
<shadow>Things/Skyfaller/SkyfallerShadowDropPod</shadow>
|
||||
<shadowSize>(1, 1)</shadowSize>
|
||||
<anticipationSoundTicks>100</anticipationSoundTicks>
|
||||
<motesPerCell>0</motesPerCell>
|
||||
<anticipationSound>DropPod_Fall_Mechanoid</anticipationSound>
|
||||
<impactSound>DropPod_Impact</impactSound>
|
||||
<cameraShake>0.1</cameraShake>
|
||||
<rotationCurve>
|
||||
<points>
|
||||
<li>(0,0)</li>
|
||||
<li>(1, 1)</li>
|
||||
</points>
|
||||
</rotationCurve>
|
||||
<angleCurve>
|
||||
<points>
|
||||
<li>(0,0)</li>
|
||||
<li>(1, 1)</li>
|
||||
</points>
|
||||
</angleCurve>
|
||||
</skyfaller>
|
||||
<comps>
|
||||
<li Class="CompProperties_Effecter">
|
||||
<effecterDef>Smoke_Joint</effecterDef>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerPawnSpawner">
|
||||
<pawnKind>Mech_WULA_Cat_Cloak_Sniper</pawnKind>
|
||||
<faction>Wula_Progressive_Faction</faction>
|
||||
<spawnDrafted>false</spawnDrafted>
|
||||
<spawnHostile>true</spawnHostile>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
@@ -674,7 +674,7 @@
|
||||
<effecterDef>Smoke_Joint</effecterDef>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerFaction">
|
||||
<factionDef>AncientsHostile</factionDef>
|
||||
<factionDef>Wula_Progressive_Faction</factionDef>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
@@ -797,7 +797,7 @@
|
||||
<effecterDef>Smoke_Joint</effecterDef>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerFaction">
|
||||
<factionDef>AncientsHostile</factionDef>
|
||||
<factionDef>Wula_Progressive_Faction</factionDef>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
@@ -920,7 +920,7 @@
|
||||
<effecterDef>Smoke_Joint</effecterDef>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_SkyfallerFaction">
|
||||
<factionDef>AncientsHostile</factionDef>
|
||||
<factionDef>Wula_Progressive_Faction</factionDef>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
@@ -1031,11 +1031,28 @@
|
||||
<!-- <WorkSpeedGlobal>2</WorkSpeedGlobal> -->
|
||||
<MoveSpeed>6</MoveSpeed>
|
||||
</statBases>
|
||||
|
||||
<tools Inherit="False">
|
||||
<li>
|
||||
<label>猫爪刀</label>
|
||||
<capacities>
|
||||
<li>Cut</li>
|
||||
</capacities>
|
||||
<power>30</power>
|
||||
<cooldownTime>1.5</cooldownTime>
|
||||
<linkedBodyPartsGroup>Torso</linkedBodyPartsGroup>
|
||||
<ensureLinkedBodyPartsGroupAlwaysUsable>true</ensureLinkedBodyPartsGroupAlwaysUsable>
|
||||
</li>
|
||||
</tools>
|
||||
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_FighterInvisible">
|
||||
<InvisibilityDef>WULA_Cat_Invisibility</InvisibilityDef>
|
||||
<stealthCooldownTicks>120</stealthCooldownTicks>
|
||||
<revealOnEnemyInSight>true</revealOnEnemyInSight>
|
||||
<sendLetterOnReveal>true</sendLetterOnReveal>
|
||||
<letterTitle>狙!击!手!</letterTitle>
|
||||
<letterText>附近有狙击手,快寻找掩体!</letterText>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_HediffGiver">
|
||||
<hediffs>
|
||||
@@ -1044,6 +1061,15 @@
|
||||
<addChance>1.0</addChance>
|
||||
<allowDuplicates>false</allowDuplicates>
|
||||
</li>
|
||||
<li Class="CompProperties_Stunnable">
|
||||
<affectedDamageDefs>
|
||||
<li>Stun</li>
|
||||
<li>EMP</li>
|
||||
</affectedDamageDefs>
|
||||
<adaptableDamageDefs>
|
||||
<li>EMP</li>
|
||||
</adaptableDamageDefs>
|
||||
</li>
|
||||
</comps>
|
||||
</AlienRace.ThingDef_AlienRace>
|
||||
|
||||
|
||||
@@ -4,16 +4,6 @@
|
||||
<defName>WULA_AutonomousMech</defName>
|
||||
<thinkRoot Class="ThinkNode_Priority">
|
||||
<subNodes>
|
||||
<li Class="ThinkNode_ConditionalPawnKind">
|
||||
<pawnKind>Mech_WULA_Cat_Cloak_Sniper</pawnKind>
|
||||
<subNodes>
|
||||
<li Class="JobGiver_AIFightEnemies">
|
||||
<targetAcquireRadius>500</targetAcquireRadius>
|
||||
<targetKeepRadius>500</targetKeepRadius>
|
||||
</li>
|
||||
</subNodes>
|
||||
</li>
|
||||
|
||||
<!-- Despawned -->
|
||||
<li Class="ThinkNode_Subtree">
|
||||
<treeDef>Despawned</treeDef>
|
||||
@@ -31,6 +21,21 @@
|
||||
<treeDef>Downed</treeDef>
|
||||
</li>
|
||||
|
||||
<!-- 特战猫猫的思考树 -->
|
||||
<li Class="ThinkNode_ConditionalPawnKind">
|
||||
<pawnKind>Mech_WULA_Cat_Cloak_Sniper</pawnKind>
|
||||
<subNodes>
|
||||
<li Class="JobGiver_AIFightEnemies">
|
||||
<targetAcquireRadius>500</targetAcquireRadius>
|
||||
<targetKeepRadius>500</targetKeepRadius>
|
||||
</li>
|
||||
<li Class="JobGiver_WanderAnywhere">
|
||||
<maxDanger>Deadly</maxDanger>
|
||||
</li>
|
||||
</subNodes>
|
||||
</li>
|
||||
|
||||
|
||||
<!-- 紧急能量状态:临界能量时立即寻找充电站 -->
|
||||
<li Class="WulaFallenEmpire.ThinkNode_ConditionalEmergencyRecharge">
|
||||
<emergencyThreshold>0.05</emergencyThreshold>
|
||||
|
||||
@@ -43,4 +43,28 @@
|
||||
</li>
|
||||
</value>
|
||||
</Operation>
|
||||
|
||||
<!-- 乌拉族进步派袭击 -->
|
||||
<Operation Class="PatchOperationAdd">
|
||||
<xpath>Defs/StorytellerDef[@Name="BaseStoryteller"]/comps</xpath>
|
||||
<value>
|
||||
<li Class="WulaFallenEmpire.StorytellerCompProperties_SimpleTechnologyTrigger">
|
||||
<technology>WULA_Colony_License_LV3_Technology</technology>
|
||||
|
||||
<!-- 时间配置 -->
|
||||
<fireAfterDaysPassed>0</fireAfterDaysPassed>
|
||||
<checkIntervalDays>20</checkIntervalDays>
|
||||
|
||||
<!-- 可选配置 -->
|
||||
<preventDuplicateQuests>false</preventDuplicateQuests>
|
||||
<debugLogging>false</debugLogging>
|
||||
|
||||
<requireNonHostileRelation>true</requireNonHostileRelation>
|
||||
<requiredFaction>Wula_PIA_Legion_Faction</requiredFaction>
|
||||
|
||||
<incident>WULA_GiveQuest_Progressive_Ship_Attack_Quest</incident>
|
||||
<incidentIfHostile>WULA_GiveQuest_Progressive_Ship_Attack_Quest</incidentIfHostile>
|
||||
</li>
|
||||
</value>
|
||||
</Operation>
|
||||
</Patch>
|
||||
@@ -15,9 +15,10 @@ namespace WulaFallenEmpire
|
||||
// 图形缓存 - 现在包含Shader信息
|
||||
private Dictionary<string, Graphic> graphicsCache = new Dictionary<string, Graphic>();
|
||||
|
||||
// 动画状态 - 每个图层的独立浮动
|
||||
// 动画状态 - 每个图层的独立状态
|
||||
private Dictionary<int, float> layerHoverOffsets = new Dictionary<int, float>();
|
||||
private Dictionary<int, float> layerAnimationTimes = new Dictionary<int, float>();
|
||||
private Dictionary<int, float> layerRotationAngles = new Dictionary<int, float>();
|
||||
private int lastTick = -1;
|
||||
|
||||
public ExtraGraphicsExtension ModExtension
|
||||
@@ -122,8 +123,8 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
// 不调用基类的 DrawAt,完全自定义渲染
|
||||
|
||||
// 更新悬浮动画
|
||||
UpdateHoverAnimation();
|
||||
// 更新动画状态
|
||||
UpdateAnimations();
|
||||
// 绘制所有配置的图形层
|
||||
DrawGraphicLayers(drawLoc, flip);
|
||||
// 新增:绘制护盾
|
||||
@@ -152,7 +153,7 @@ namespace WulaFallenEmpire
|
||||
}
|
||||
}
|
||||
|
||||
// 绘制单个图形层
|
||||
// 绘制单个图形层 - 现在支持旋转动画
|
||||
private void DrawGraphicLayer(Vector3 baseDrawPos, bool flip, GraphicLayerData layer)
|
||||
{
|
||||
if (string.IsNullOrEmpty(layer.texturePath))
|
||||
@@ -167,27 +168,89 @@ namespace WulaFallenEmpire
|
||||
// 获取图形(现在传入Shader)
|
||||
Graphic graphic = GetCachedGraphic(layer.texturePath, layer.scale, layer.color, shader);
|
||||
|
||||
// 计算图层浮动偏移
|
||||
float hoverOffset = 0f;
|
||||
if (layer.enableHover)
|
||||
// 计算图层动画偏移
|
||||
Vector3 animationOffset = Vector3.zero;
|
||||
float rotationAngle = 0f;
|
||||
int layerIndex = ModExtension.graphicLayers.IndexOf(layer);
|
||||
|
||||
// 根据动画类型应用不同的动画效果
|
||||
switch (layer.animationType)
|
||||
{
|
||||
int layerIndex = ModExtension.graphicLayers.IndexOf(layer);
|
||||
if (layerHoverOffsets.ContainsKey(layerIndex))
|
||||
{
|
||||
hoverOffset = layerHoverOffsets[layerIndex];
|
||||
}
|
||||
case AnimationType.Hover:
|
||||
if (layer.enableAnimation && layerHoverOffsets.ContainsKey(layerIndex))
|
||||
{
|
||||
animationOffset.z = layerHoverOffsets[layerIndex];
|
||||
}
|
||||
break;
|
||||
|
||||
case AnimationType.Rotate:
|
||||
if (layer.enableAnimation && layerRotationAngles.ContainsKey(layerIndex))
|
||||
{
|
||||
rotationAngle = layerRotationAngles[layerIndex];
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// 最终绘制位置 = 基础位置 + 图层偏移 + 浮动偏移
|
||||
Vector3 drawPos = baseDrawPos + layer.offset;
|
||||
drawPos.z += hoverOffset;
|
||||
|
||||
// 绘制图形
|
||||
graphic.Draw(drawPos, flip ? base.Rotation.Opposite : base.Rotation, this, 0f);
|
||||
// 最终绘制位置 = 基础位置 + 图层偏移 + 动画偏移
|
||||
Vector3 drawPos = baseDrawPos + layer.offset + animationOffset;
|
||||
|
||||
// 如果启用了旋转动画,使用矩阵变换绘制
|
||||
if (layer.animationType == AnimationType.Rotate && layer.enableAnimation && rotationAngle != 0f)
|
||||
{
|
||||
DrawWithRotation(graphic, drawPos, flip, rotationAngle, layer);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 普通绘制
|
||||
graphic.Draw(drawPos, flip ? base.Rotation.Opposite : base.Rotation, this, 0f);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新每个图层的独立悬浮动画
|
||||
private void UpdateHoverAnimation()
|
||||
// 使用矩阵变换绘制旋转图形
|
||||
private void DrawWithRotation(Graphic graphic, Vector3 drawPos, bool flip, float rotationAngle, GraphicLayerData layer)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 获取网格和材质
|
||||
Mesh mesh = graphic.MeshAt(flip ? base.Rotation.Opposite : base.Rotation);
|
||||
Material mat = graphic.MatAt(flip ? base.Rotation.Opposite : base.Rotation);
|
||||
|
||||
if (mesh == null || mat == null)
|
||||
{
|
||||
Log.Warning($"Building_ExtraGraphics: Unable to get mesh or material for rotating layer");
|
||||
return;
|
||||
}
|
||||
|
||||
// 创建旋转矩阵
|
||||
Quaternion rotation = Quaternion.Euler(0f, 0f, rotationAngle);
|
||||
|
||||
// 如果图层有旋转中心偏移,需要调整位置
|
||||
Vector3 pivotOffset = new Vector3(layer.pivotOffset.x, layer.pivotOffset.y, 0f);
|
||||
|
||||
// 计算最终矩阵
|
||||
Matrix4x4 matrix = Matrix4x4.TRS(
|
||||
drawPos + pivotOffset, // 位置
|
||||
rotation, // 旋转
|
||||
new Vector3(layer.scale.x, layer.scale.y, 1f) // 缩放
|
||||
);
|
||||
|
||||
// 绘制网格
|
||||
Graphics.DrawMesh(mesh, matrix, mat, 0);
|
||||
|
||||
// 如果需要,绘制第二面(双面渲染)
|
||||
if (layer.doubleSided)
|
||||
{
|
||||
Graphics.DrawMesh(mesh, matrix, mat, 0, null, 0, null, UnityEngine.Rendering.ShadowCastingMode.Off, true);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"Building_ExtraGraphics: Error drawing rotating layer: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
// 更新所有图层的动画状态
|
||||
private void UpdateAnimations()
|
||||
{
|
||||
int currentTick = Find.TickManager.TicksGame;
|
||||
|
||||
@@ -198,23 +261,47 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
var layer = ModExtension.graphicLayers[i];
|
||||
|
||||
if (layer.enableHover)
|
||||
if (!layer.enableAnimation)
|
||||
continue;
|
||||
|
||||
// 初始化动画时间
|
||||
if (!layerAnimationTimes.ContainsKey(i))
|
||||
{
|
||||
// 初始化动画时间
|
||||
if (!layerAnimationTimes.ContainsKey(i))
|
||||
{
|
||||
layerAnimationTimes[i] = 0f;
|
||||
}
|
||||
|
||||
// 更新动画时间
|
||||
layerAnimationTimes[i] += Time.deltaTime;
|
||||
|
||||
// 计算该图层的悬浮偏移
|
||||
float hoverSpeed = layer.hoverSpeed > 0 ? layer.hoverSpeed : ModExtension.globalHoverSpeed;
|
||||
float hoverIntensity = layer.hoverIntensity > 0 ? layer.hoverIntensity : ModExtension.globalHoverIntensity;
|
||||
|
||||
float hoverOffset = Mathf.Sin(layerAnimationTimes[i] * hoverSpeed + layer.hoverPhase) * hoverIntensity;
|
||||
layerHoverOffsets[i] = hoverOffset;
|
||||
layerAnimationTimes[i] = layer.animationStartTime;
|
||||
}
|
||||
|
||||
// 更新动画时间
|
||||
layerAnimationTimes[i] += Time.deltaTime;
|
||||
|
||||
// 根据动画类型更新不同的状态
|
||||
switch (layer.animationType)
|
||||
{
|
||||
case AnimationType.Hover:
|
||||
// 计算该图层的悬浮偏移
|
||||
float hoverSpeed = layer.animationSpeed > 0 ? layer.animationSpeed : ModExtension.globalAnimationSpeed;
|
||||
float hoverIntensity = layer.animationIntensity > 0 ? layer.animationIntensity : ModExtension.globalAnimationIntensity;
|
||||
|
||||
float hoverOffset = Mathf.Sin(layerAnimationTimes[i] * hoverSpeed + layer.animationPhase) * hoverIntensity;
|
||||
layerHoverOffsets[i] = hoverOffset;
|
||||
break;
|
||||
|
||||
case AnimationType.Rotate:
|
||||
// 计算该图层的旋转角度
|
||||
float rotateSpeed = layer.animationSpeed > 0 ? layer.animationSpeed : ModExtension.globalAnimationSpeed;
|
||||
float maxAngle = layer.animationIntensity > 0 ? layer.animationIntensity : ModExtension.globalAnimationIntensity;
|
||||
|
||||
// 旋转角度(循环)
|
||||
float rotationAngle = (layerAnimationTimes[i] * rotateSpeed * 360f) % 360f;
|
||||
|
||||
// 限制旋转角度范围(如果设置了最大角度)
|
||||
if (maxAngle > 0 && maxAngle < 360f)
|
||||
{
|
||||
// 使用正弦波限制旋转角度范围
|
||||
rotationAngle = Mathf.Sin(layerAnimationTimes[i] * rotateSpeed) * maxAngle;
|
||||
}
|
||||
|
||||
layerRotationAngles[i] = rotationAngle;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,12 +317,20 @@ namespace WulaFallenEmpire
|
||||
}
|
||||
}
|
||||
|
||||
// 动画类型枚举
|
||||
public enum AnimationType
|
||||
{
|
||||
None, // 无动画
|
||||
Hover, // 上下浮动
|
||||
Rotate // 自旋转
|
||||
}
|
||||
|
||||
// 主要的 ModExtension 定义
|
||||
public class ExtraGraphicsExtension : DefModExtension
|
||||
{
|
||||
// 全局悬浮参数(作为默认值)
|
||||
public float globalHoverSpeed = 2f; // 全局悬浮速度
|
||||
public float globalHoverIntensity = 0.1f; // 全局悬浮强度
|
||||
// 全局动画参数(作为默认值)
|
||||
public float globalAnimationSpeed = 2f; // 全局动画速度
|
||||
public float globalAnimationIntensity = 0.1f; // 全局动画强度
|
||||
|
||||
// 图形层配置
|
||||
public List<GraphicLayerData> graphicLayers = new List<GraphicLayerData>();
|
||||
@@ -250,7 +345,7 @@ namespace WulaFallenEmpire
|
||||
}
|
||||
}
|
||||
|
||||
// 单个图形层的配置数据 - 添加shaderName字段
|
||||
// 单个图形层的配置数据 - 增强版
|
||||
public class GraphicLayerData
|
||||
{
|
||||
// 基础配置
|
||||
@@ -258,16 +353,56 @@ namespace WulaFallenEmpire
|
||||
public Vector2 scale = Vector2.one; // 缩放比例
|
||||
public Color color = Color.white; // 颜色
|
||||
public int drawOrder = 0; // 绘制顺序(数字小的先绘制)
|
||||
public string shaderName = "TransparentPostLight"; // Shader名称(新增)
|
||||
public string shaderName = "TransparentPostLight"; // Shader名称
|
||||
|
||||
// 位置配置 - 使用环世界坐标系
|
||||
// X: 左右偏移, Y: 图层深度, Z: 上下偏移
|
||||
public Vector3 offset = Vector3.zero;
|
||||
|
||||
// 独立悬浮配置
|
||||
public bool enableHover = true; // 是否启用悬浮
|
||||
public float hoverSpeed = 0f; // 悬浮速度(0表示使用全局速度)
|
||||
public float hoverIntensity = 0f; // 悬浮强度(0表示使用全局强度)
|
||||
public float hoverPhase = 0f; // 悬浮相位(用于错开浮动)
|
||||
// 动画配置
|
||||
public AnimationType animationType = AnimationType.Hover; // 动画类型
|
||||
public bool enableAnimation = true; // 是否启用动画
|
||||
public float animationSpeed = 0f; // 动画速度(0表示使用全局速度)
|
||||
public float animationIntensity = 0f; // 动画强度(0表示使用全局强度)
|
||||
public float animationPhase = 0f; // 动画相位(用于错开动画)
|
||||
public float animationStartTime = 0f; // 动画开始时间偏移
|
||||
|
||||
// 旋转动画专用配置
|
||||
public Vector2 pivotOffset = Vector2.zero; // 旋转中心偏移(相对于图层的中心)
|
||||
public bool doubleSided = false; // 是否双面渲染(对于旋转物体)
|
||||
|
||||
// 兼容旧字段(为了向后兼容)
|
||||
[Obsolete("Use enableAnimation instead")]
|
||||
public bool enableHover
|
||||
{
|
||||
get => enableAnimation && animationType == AnimationType.Hover;
|
||||
set
|
||||
{
|
||||
enableAnimation = value;
|
||||
if (value && animationType == AnimationType.None)
|
||||
animationType = AnimationType.Hover;
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use animationSpeed instead")]
|
||||
public float hoverSpeed
|
||||
{
|
||||
get => animationSpeed;
|
||||
set => animationSpeed = value;
|
||||
}
|
||||
|
||||
[Obsolete("Use animationIntensity instead")]
|
||||
public float hoverIntensity
|
||||
{
|
||||
get => animationIntensity;
|
||||
set => animationIntensity = value;
|
||||
}
|
||||
|
||||
[Obsolete("Use animationPhase instead")]
|
||||
public float hoverPhase
|
||||
{
|
||||
get => animationPhase;
|
||||
set => animationPhase = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,15 +201,22 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
if (MechPawn == null || !CanBeAutonomous)
|
||||
yield break;
|
||||
|
||||
|
||||
// 工作模式切换按钮
|
||||
if (CanWorkAutonomously)
|
||||
{
|
||||
yield return new DroneGizmo(this);
|
||||
DroneGizmo droneGizmo = new DroneGizmo(this);
|
||||
if (droneGizmo != null)
|
||||
{
|
||||
yield return droneGizmo;
|
||||
}
|
||||
}
|
||||
// 更换武器按钮 - 确保不返回null
|
||||
Gizmo weaponSwitchGizmo = CreateWeaponSwitchGizmo();
|
||||
if (weaponSwitchGizmo != null)
|
||||
{
|
||||
yield return weaponSwitchGizmo;
|
||||
}
|
||||
|
||||
// 更换武器按钮
|
||||
yield return CreateWeaponSwitchGizmo();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -217,20 +224,43 @@ namespace WulaFallenEmpire
|
||||
/// </summary>
|
||||
private Gizmo CreateWeaponSwitchGizmo()
|
||||
{
|
||||
// 检查Pawn是否属于玩家派系
|
||||
if (MechPawn?.Faction != Faction.OfPlayer)
|
||||
try
|
||||
{
|
||||
return null; // 非玩家派系时不显示
|
||||
// 检查Pawn是否属于玩家派系
|
||||
if (MechPawn?.Faction != Faction.OfPlayer)
|
||||
{
|
||||
return null; // 非玩家派系时不显示
|
||||
}
|
||||
// 检查Pawn是否有效
|
||||
if (MechPawn == null || MechPawn.Dead || MechPawn.Destroyed)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
// 检查equipment是否有效
|
||||
if (MechPawn.equipment == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
Command_Action switchWeaponCommand = new Command_Action
|
||||
{
|
||||
defaultLabel = "WULA_SwitchWeapon".Translate(),
|
||||
defaultDesc = "WULA_SwitchWeapon_Desc".Translate(),
|
||||
icon = ContentFinder<Texture2D>.Get("Wula/UI/Abilities/WULA_WeaponSwitchAbility", false) ?? BaseContent.BadTex,
|
||||
action = SwitchWeapon,
|
||||
};
|
||||
// 确保Command不为null
|
||||
if (switchWeaponCommand == null)
|
||||
{
|
||||
Log.Error($"Failed to create weapon switch gizmo for {MechPawn?.LabelCap}");
|
||||
return null;
|
||||
}
|
||||
return switchWeaponCommand;
|
||||
}
|
||||
|
||||
Command_Action switchWeaponCommand = new Command_Action
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
defaultLabel = "WULA_SwitchWeapon".Translate(),
|
||||
defaultDesc = "WULA_SwitchWeapon_Desc".Translate(),
|
||||
icon = ContentFinder<Texture2D>.Get("Wula/UI/Abilities/WULA_WeaponSwitchAbility", false) ?? BaseContent.BadTex,
|
||||
action = SwitchWeapon
|
||||
};
|
||||
return switchWeaponCommand;
|
||||
Log.Error($"Error creating weapon switch gizmo: {ex}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -20,6 +20,9 @@ namespace WulaFallenEmpire
|
||||
// 新增:记录最后一次检查敌人的时间
|
||||
private int lastEnemyCheckTick = -99999;
|
||||
|
||||
// 新增:记录最后一次发信的时间
|
||||
private int lastLetterTick = -99999;
|
||||
|
||||
public HediffDef GetTargetInvisibilityDef()
|
||||
{
|
||||
return Props.InvisibilityDef;
|
||||
@@ -49,6 +52,7 @@ namespace WulaFallenEmpire
|
||||
Scribe_Values.Look(ref lastDetectedTick, "lastDetectedTick", 0);
|
||||
Scribe_Values.Look(ref lastRevealedTick, "lastRevealedTick", 0);
|
||||
Scribe_Values.Look(ref lastEnemyCheckTick, "lastEnemyCheckTick", 0);
|
||||
Scribe_Values.Look(ref lastLetterTick, "lastLetterTick", 0);
|
||||
}
|
||||
|
||||
public override void CompTick()
|
||||
@@ -78,6 +82,9 @@ namespace WulaFallenEmpire
|
||||
|
||||
Invisibility.BecomeVisible();
|
||||
lastDetectedTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 触发显现事件
|
||||
TrySendLetter("attack");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -85,7 +92,6 @@ namespace WulaFallenEmpire
|
||||
/// </summary>
|
||||
private void CheckForEnemiesInSight()
|
||||
{
|
||||
|
||||
// 检查频率:每30 tick检查一次(约0.5秒)
|
||||
if (!Sightstealer.IsHashIntervalTick(30) ||
|
||||
Find.TickManager.TicksGame <= lastEnemyCheckTick + 30)
|
||||
@@ -95,12 +101,6 @@ namespace WulaFallenEmpire
|
||||
|
||||
lastEnemyCheckTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 如果配置为只在战斗状态时检查,且当前不在战斗状态,则跳过
|
||||
if (Props.onlyCheckInCombat && !IsInCombatState())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查视线内是否有敌人
|
||||
bool enemyInSight = false;
|
||||
List<Pawn> enemiesInSight = new List<Pawn>();
|
||||
@@ -156,108 +156,110 @@ namespace WulaFallenEmpire
|
||||
lastDetectedTick = Find.TickManager.TicksGame;
|
||||
lastRevealedTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 可选:添加视觉或声音效果
|
||||
if (Props.showRevealEffect)
|
||||
// 触发显现事件
|
||||
TrySendLetter("detected", enemiesInSight);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试发送信件
|
||||
/// </summary>
|
||||
private void TrySendLetter(string cause, List<Pawn> enemies = null)
|
||||
{
|
||||
// 检查是否应该发送信件
|
||||
if (!ShouldSendLetter())
|
||||
return;
|
||||
|
||||
// 发送信件
|
||||
SendLetter(cause, enemies);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否应该发送信件
|
||||
/// </summary>
|
||||
private bool ShouldSendLetter()
|
||||
{
|
||||
// 如果配置为不发信,直接返回false
|
||||
if (!Props.sendLetterOnReveal)
|
||||
return false;
|
||||
|
||||
// 检查发送间隔
|
||||
int currentTick = Find.TickManager.TicksGame;
|
||||
if (currentTick < lastLetterTick + Props.letterIntervalTicks)
|
||||
{
|
||||
// 还没到发送间隔
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查Pawn是否非玩家控制
|
||||
if (Sightstealer.Faction == Faction.OfPlayer)
|
||||
{
|
||||
// 玩家控制的Pawn,不发送信件
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送信件
|
||||
/// </summary>
|
||||
private void SendLetter(string cause, List<Pawn> enemies = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
int currentTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 获取信件标题和内容
|
||||
string title = Props.letterTitle;
|
||||
string text = Props.letterText;
|
||||
|
||||
// 如果标题或内容为空,使用默认值
|
||||
if (string.IsNullOrEmpty(title))
|
||||
title = "隐身单位现身";
|
||||
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
ShowRevealEffect(enemiesInSight);
|
||||
string enemyInfo = "";
|
||||
if (enemies != null && enemies.Count > 0)
|
||||
{
|
||||
if (enemies.Count == 1)
|
||||
{
|
||||
enemyInfo = $"被 {enemies[0].LabelCap} 发现";
|
||||
}
|
||||
else
|
||||
{
|
||||
enemyInfo = $"被 {enemies.Count} 个敌人发现";
|
||||
}
|
||||
}
|
||||
else if (cause == "attack")
|
||||
{
|
||||
enemyInfo = "发动了攻击";
|
||||
}
|
||||
|
||||
text = $"{Sightstealer.LabelCap}({Sightstealer.Faction?.Name ?? "未知派系"})在 {Sightstealer.Map?.Parent?.LabelCap ?? "未知位置"} 现身了。\n\n{enemyInfo}\n位置:{Sightstealer.Position}";
|
||||
}
|
||||
|
||||
// 可选:发送消息
|
||||
if (Props.sendRevealMessage && Sightstealer.Faction == Faction.OfPlayer)
|
||||
{
|
||||
SendRevealMessage(enemiesInSight);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否处于战斗状态
|
||||
/// </summary>
|
||||
private bool IsInCombatState()
|
||||
{
|
||||
// 如果有当前工作且是战斗相关工作
|
||||
if (Sightstealer.CurJob != null)
|
||||
{
|
||||
JobDef jobDef = Sightstealer.CurJob.def;
|
||||
if (jobDef == JobDefOf.AttackMelee ||
|
||||
jobDef == JobDefOf.AttackStatic ||
|
||||
jobDef == JobDefOf.Wait_Combat ||
|
||||
jobDef == JobDefOf.Flee ||
|
||||
jobDef == JobDefOf.FleeAndCower)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有敌人目标
|
||||
if (Sightstealer.mindState.enemyTarget != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// 如果最近受到过伤害
|
||||
if (Find.TickManager.TicksGame - Sightstealer.mindState.lastHarmTick < 300) // 最近5秒内受到伤害
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// 如果最近攻击过目标
|
||||
if (Find.TickManager.TicksGame - Sightstealer.mindState.lastAttackTargetTick < 300)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示解除隐身的效果
|
||||
/// </summary>
|
||||
private void ShowRevealEffect(List<Pawn> enemies)
|
||||
{
|
||||
if (Sightstealer.Map == null) return;
|
||||
|
||||
// 创建一个闪光效果
|
||||
FleckMaker.ThrowLightningGlow(Sightstealer.Position.ToVector3Shifted(),
|
||||
Sightstealer.Map, 2f);
|
||||
|
||||
// 可选:播放声音
|
||||
if (Props.revealSound != null)
|
||||
{
|
||||
Props.revealSound.PlayOneShot(new TargetInfo(Sightstealer.Position, Sightstealer.Map));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送解除隐身消息
|
||||
/// </summary>
|
||||
private void SendRevealMessage(List<Pawn> enemies)
|
||||
{
|
||||
if (enemies.Count == 0) return;
|
||||
|
||||
string message;
|
||||
if (enemies.Count == 1)
|
||||
{
|
||||
message = "WFE.RevealedBySingleEnemy".Translate(
|
||||
Sightstealer.LabelShort,
|
||||
enemies[0].LabelShort
|
||||
// 发送信件
|
||||
Letter letter = LetterMaker.MakeLetter(
|
||||
title,
|
||||
text,
|
||||
LetterDefOf.NeutralEvent,
|
||||
new LookTargets(Sightstealer)
|
||||
);
|
||||
|
||||
Find.LetterStack.ReceiveLetter(letter);
|
||||
|
||||
// 更新最后发信时间
|
||||
lastLetterTick = currentTick;
|
||||
}
|
||||
else
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
message = "WFE.RevealedByMultipleEnemies".Translate(
|
||||
Sightstealer.LabelShort,
|
||||
enemies.Count
|
||||
);
|
||||
Log.Error($"CompFighterInvisible: Error sending letter for {Sightstealer?.LabelCap}: {ex}");
|
||||
}
|
||||
|
||||
Messages.Message(message, Sightstealer, MessageTypeDefOf.NeutralEvent);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取下次可以隐身的时间
|
||||
/// </summary>
|
||||
public int NextInvisibilityTick => lastDetectedTick + Props.stealthCooldownTicks;
|
||||
// ... 其他方法保持不变 ...
|
||||
|
||||
/// <summary>
|
||||
/// 手动触发解除隐身(供外部调用)
|
||||
@@ -269,6 +271,11 @@ namespace WulaFallenEmpire
|
||||
Invisibility.BecomeVisible();
|
||||
lastDetectedTick = Find.TickManager.TicksGame;
|
||||
lastRevealedTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 尝试发送信件
|
||||
TrySendLetter("manual");
|
||||
}
|
||||
|
||||
// ... 其他方法保持不变 ...
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,24 +46,31 @@ namespace WulaFallenEmpire
|
||||
// 新增:是否忽略某些状态的敌人(如倒地、死亡等)
|
||||
public bool ignoreDownedEnemies = true;
|
||||
public bool ignoreSleepingEnemies = false;
|
||||
|
||||
|
||||
|
||||
// 新增:简化发信配置
|
||||
public bool sendLetterOnReveal = false;
|
||||
public string letterTitle = "";
|
||||
public string letterText = "";
|
||||
public int letterIntervalTicks = 1200;
|
||||
|
||||
public CompProperties_FighterInvisible()
|
||||
{
|
||||
compClass = typeof(CompFighterInvisible);
|
||||
}
|
||||
|
||||
|
||||
public override IEnumerable<string> ConfigErrors(ThingDef parentDef)
|
||||
{
|
||||
foreach (string error in base.ConfigErrors(parentDef))
|
||||
{
|
||||
yield return error;
|
||||
}
|
||||
|
||||
|
||||
if (InvisibilityDef == null)
|
||||
{
|
||||
yield return "InvisibilityDef is not defined for CompProperties_FighterInvisible";
|
||||
}
|
||||
|
||||
|
||||
if (revealDetectionRadius <= 0)
|
||||
{
|
||||
revealDetectionRadius = FirstDetectedRadius;
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
using System.Collections.Generic;
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
using Verse.AI;
|
||||
using Verse.Sound;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
public class PawnsArrivalModeWorker_EdgeTeleport : PawnsArrivalModeWorker
|
||||
{
|
||||
public override void Arrive(List<Pawn> pawns, IncidentParms parms)
|
||||
{
|
||||
Map map = (Map)parms.target;
|
||||
|
||||
// 如果没有指定生成中心,则使用EdgeDrop的查找方式
|
||||
if (!parms.spawnCenter.IsValid)
|
||||
{
|
||||
parms.spawnCenter = DropCellFinder.FindRaidDropCenterDistant(map);
|
||||
}
|
||||
|
||||
// 为每个Pawn分配一个传送位置(在生成中心附近)
|
||||
foreach (Pawn pawn in pawns)
|
||||
{
|
||||
if (pawn == null || pawn.Dead || pawn.Destroyed)
|
||||
continue;
|
||||
|
||||
// 找到可用的传送位置
|
||||
IntVec3 teleportPos = FindTeleportPosition(map, parms.spawnCenter);
|
||||
|
||||
// 如果Pawn已经在其他地图,需要先将其移到当前地图
|
||||
if (pawn.Map != map)
|
||||
{
|
||||
// 确保Pawn不在任何地图中
|
||||
if (pawn.Spawned)
|
||||
{
|
||||
pawn.DeSpawn();
|
||||
}
|
||||
|
||||
// 将Pawn放入当前地图
|
||||
GenSpawn.Spawn(pawn, teleportPos, map, parms.spawnRotation);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果已经在当前地图,直接移动位置
|
||||
pawn.Position = teleportPos;
|
||||
pawn.Notify_Teleported(true, false);
|
||||
}
|
||||
|
||||
// 播放传送效果
|
||||
PlayTeleportEffect(pawn, teleportPos, map);
|
||||
|
||||
// 确保Pawn有适当的状态
|
||||
EnsurePawnStateAfterTeleport(pawn);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool TryResolveRaidSpawnCenter(IncidentParms parms)
|
||||
{
|
||||
Map map = (Map)parms.target;
|
||||
|
||||
// 与EdgeDrop相同的方式解析生成中心
|
||||
if (!parms.spawnCenter.IsValid)
|
||||
{
|
||||
parms.spawnCenter = DropCellFinder.FindRaidDropCenterDistant(map);
|
||||
}
|
||||
|
||||
parms.spawnRotation = Rot4.Random;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 找到可用的传送位置
|
||||
/// </summary>
|
||||
private IntVec3 FindTeleportPosition(Map map, IntVec3 center)
|
||||
{
|
||||
// 在中心点附近寻找可用的单元格
|
||||
// 我们使用与EdgeWalkInGroups类似的逻辑,但立即传送
|
||||
if (CellFinder.TryFindRandomCellNear(center, map, 10,
|
||||
c => c.Standable(map) &&
|
||||
!c.Fogged(map) &&
|
||||
c.GetRoof(map) != RoofDefOf.RoofRockThick && // 排除厚岩顶
|
||||
map.reachability.CanReachColony(c),
|
||||
out IntVec3 result))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
// 如果找不到合适的单元格,使用备选方案
|
||||
if (RCellFinder.TryFindRandomPawnEntryCell(out result, map, CellFinder.EdgeRoadChance_Hostile))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
// 最后的手段:使用中心点
|
||||
return center;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放传送效果
|
||||
/// </summary>
|
||||
private void PlayTeleportEffect(Pawn pawn, IntVec3 pos, Map map)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 播放Skip_ExitNoDelay效果
|
||||
EffecterDef teleportEffect = DefDatabase<EffecterDef>.GetNamed("Skip_ExitNoDelay");
|
||||
if (teleportEffect != null)
|
||||
{
|
||||
Effecter effecter = teleportEffect.Spawn();
|
||||
effecter.ticksLeft = 30; // 设置效果持续时间
|
||||
effecter.Trigger(new TargetInfo(pos, map), new TargetInfo(pos, map));
|
||||
effecter.Cleanup();
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果找不到指定的效果,使用跳跃效果
|
||||
EffecterDef jumpEffect = EffecterDefOf.Skip_Exit;
|
||||
if (jumpEffect != null)
|
||||
{
|
||||
Effecter effecter = jumpEffect.Spawn();
|
||||
effecter.ticksLeft = 30;
|
||||
effecter.Trigger(new TargetInfo(pos, map), new TargetInfo(pos, map));
|
||||
effecter.Cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
// 可选:播放声音效果
|
||||
SoundDef sound = SoundDefOf.PsychicPulseGlobal;
|
||||
if (sound != null)
|
||||
{
|
||||
sound.PlayOneShot(new TargetInfo(pos, map));
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Log.Warning($"Failed to play teleport effect for {pawn?.LabelCap}: {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确保Pawn传送后的状态
|
||||
/// </summary>
|
||||
private void EnsurePawnStateAfterTeleport(Pawn pawn)
|
||||
{
|
||||
if (pawn == null)
|
||||
return;
|
||||
|
||||
// 重置当前工作
|
||||
if (pawn.CurJob != null)
|
||||
{
|
||||
pawn.jobs.StopAll();
|
||||
}
|
||||
|
||||
// 如果是殖民者或友军,设置为等待战斗状态
|
||||
if (pawn.Faction == Faction.OfPlayer || !pawn.HostileTo(Faction.OfPlayer))
|
||||
{
|
||||
pawn.jobs.StartJob(new Job(JobDefOf.Wait_Combat, 600, true),
|
||||
JobCondition.InterruptForced, null, false, true, null, null, false);
|
||||
}
|
||||
|
||||
// 重置心理状态
|
||||
if (pawn.mindState != null)
|
||||
{
|
||||
pawn.mindState.enemyTarget = null;
|
||||
pawn.mindState.mentalStateHandler?.Reset();
|
||||
}
|
||||
|
||||
// 如果是机械族,可能需要特殊处理
|
||||
if (pawn.RaceProps.IsMechanoid)
|
||||
{
|
||||
var comp = pawn.GetComp<CompAutonomousMech>();
|
||||
if (comp != null)
|
||||
{
|
||||
// 如果是自主机械,确保进入适当状态
|
||||
if (!pawn.Drafted && pawn.Faction == Faction.OfPlayer)
|
||||
{
|
||||
pawn.drafter.Drafted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -53,9 +53,6 @@ namespace WulaFallenEmpire
|
||||
{
|
||||
pawn.drafter.Drafted = true;
|
||||
}
|
||||
|
||||
// 发送生成消息
|
||||
Messages.Message("SkyfallerPawnLanded".Translate(pawn.LabelShortCap), pawn, MessageTypeDefOf.NeutralEvent);
|
||||
}
|
||||
|
||||
private Faction GetFaction()
|
||||
|
||||
@@ -250,6 +250,7 @@
|
||||
<Compile Include="HediffComp\WULA_HediffSpawner\Tools.cs" />
|
||||
<Compile Include="Job\JobDriver_InspectBuilding.cs" />
|
||||
<Compile Include="Job\JobGiver_InspectBuilding.cs" />
|
||||
<Compile Include="PawnsArrivalMode\PawnsArrivalModeWorker_EdgeTeleport.cs" />
|
||||
<Compile Include="Pawn\Comp_MultiTurretGun.cs" />
|
||||
<Compile Include="Pawn\Comp_PawnRenderExtra.cs" />
|
||||
<Compile Include="Pawn\WULA_AutoMechCarrier\CompAutoMechCarrier.cs" />
|
||||
|
||||
Reference in New Issue
Block a user