开始摸索CQF

This commit is contained in:
2025-11-28 12:00:42 +08:00
parent 3d14169b0d
commit fb578cfb99
11 changed files with 556 additions and 4 deletions

View File

@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<QuestEditor_Library.DialogTreeDef>
<defName>WULA_PIA_Legion_Escort_Traitor_DialogMain</defName>
<title>与断爪卫队的叛徒对话</title>
<requireNonHostile>true</requireNonHostile>
<dialogReportKey>与{Interviewee_nameDef}对话</dialogReportKey>
<curIndex>2</curIndex>
<idleNodes />
<nodeMoulds>
<li>
<key>0</key>
<value>
<text>对话内容1</text>
<index>0</index>
<subNodeIndexs>
<li>1</li>
</subNodeIndexs>
<options>
<li>
<text>对话选项1-1</text>
<hideWhenDisabled>false</hideWhenDisabled>
<results>
<li>
<resultName>Normal</resultName>
<actions />
<nextIndex>1</nextIndex>
</li>
</results>
</li>
</options>
</value>
</li>
<li>
<key>1</key>
<value>
<text>对话内容2</text>
<index>1</index>
<parentIndex>0</parentIndex>
<subNodeIndexs />
<options>
<li>
<text>对话选项2-1</text>
<hideWhenDisabled>false</hideWhenDisabled>
<results>
<li>
<resultName>Undefined</resultName>
<actions>
<li Class="QuestEditor_Library.CQFAction_RemoveDialogManager">
<targetsText>
<li>Interviewee</li>
</targetsText>
</li>
<li Class="QuestEditor_Library.CQFAction_Faction">
<targetsText>
<li>Interviewee</li>
</targetsText>
<faction>PlayerColony</faction>
</li>
<li Class="QuestEditor_Library.CQFAction_SentSignal">
<signal>FinallyHostile</signal>
</li>
</actions>
</li>
</results>
</li>
<li>
<text>对话选项2-2</text>
<hideWhenDisabled>false</hideWhenDisabled>
<results>
<li>
<resultName>Undefined</resultName>
<actions>
<li Class="QuestEditor_Library.CQFAction_RemoveDialogManager">
<targetsText>
<li>Interviewee</li>
</targetsText>
</li>
<li Class="QuestEditor_Library.CQFAction_Faction">
<targetsText>
<li>Interviewee</li>
</targetsText>
<faction>Insect</faction>
</li>
<li Class="QuestEditor_Library.CQFAction_SentSignal">
<signal>FinallyHostile</signal>
</li>
</actions>
</li>
</results>
</li>
</options>
</value>
</li>
</nodeMoulds>
</QuestEditor_Library.DialogTreeDef>
</Defs>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<QuestEditor_Library.DialogManagerDef>
<defName>WULA_PIA_Legion_Escort_Traitor_DialogManager</defName>
<trees>
<li>
<tree>WULA_PIA_Legion_Escort_Traitor_DialogMain</tree>
<conditions />
</li>
</trees>
</QuestEditor_Library.DialogManagerDef>
</Defs>

View File

@@ -0,0 +1,274 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<QuestEditor_Library.CustomMapDataDef>
<defName>Wula_PIA_Legion_Escort_Traitor_Map</defName>
<label>失联的前哨站</label>
<size>(64, 1, 64)</size>
<isPart>true</isPart>
<commonality>0</commonality>
<pawns>
<li>
<key>(32, 0, 31)</key>
<value>
<li>
<dataName>Traitor</dataName>
<kind>Wula_PIA_Legion_Escort_Traitor</kind>
<enableLord>true</enableLord>
<count>1</count>
<faction>Wula_PIA_Legion_Faction</faction>
<dialogManager>WULA_PIA_Legion_Escort_Traitor_DialogManager</dialogManager>
<duty>QE_Duty_Waiter</duty>
<spawnType>MapGeneration</spawnType>
</li>
</value>
</li>
</pawns>
<terrainsRect>
<li>
<key>WulaFloor</key>
<value>
<li>(23,25,50,35)</li>
<li>(28,23,42,24)</li>
<li>(32,20,34,22)</li>
<li>(31,22,31,22)</li>
<li>(35,21,37,22)</li>
<li>(39,18,41,22)</li>
<li>(38,22,38,22)</li>
<li>(43,24,45,24)</li>
<li>(34,36,48,36)</li>
<li>(34,37,47,37)</li>
<li>(34,38,46,38)</li>
<li>(35,39,46,40)</li>
<li>(37,41,46,43)</li>
<li>(37,44,44,46)</li>
</value>
</li>
</terrainsRect>
<thingDatas>
<li>
<def>WULA_GlobalStorageSenderPod</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(40,42,40,42)</li>
<li>(42,42,42,42)</li>
</allRect>
</li>
<li>
<def>WULA_OrbitalTradeBeacon</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(40,27,40,27)</li>
<li>(41,43,41,43)</li>
</allRect>
</li>
<li>
<def>WulaWall</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(22,23,24,24)</li>
<li>(22,25,22,25)</li>
<li>(27,20,32,20)</li>
<li>(19,28,22,28)</li>
<li>(26,22,27,23)</li>
<li>(27,21,28,21)</li>
<li>(25,24,26,24)</li>
<li>(19,29,19,32)</li>
<li>(22,27,22,27)</li>
<li>(34,16,39,17)</li>
<li>(21,33,22,35)</li>
<li>(37,18,38,21)</li>
<li>(22,36,23,37)</li>
<li>(29,31,29,36)</li>
<li>(37,22,37,25)</li>
<li>(24,37,24,38)</li>
<li>(30,33,30,36)</li>
<li>(25,38,27,38)</li>
<li>(41,20,42,21)</li>
<li>(42,22,48,22)</li>
<li>(31,36,33,36)</li>
<li>(43,23,48,23)</li>
<li>(33,37,33,38)</li>
<li>(48,24,48,28)</li>
<li>(46,28,47,28)</li>
<li>(35,41,36,47)</li>
<li>(51,26,52,31)</li>
<li>(37,47,45,47)</li>
<li>(51,33,52,37)</li>
<li>(47,41,48,43)</li>
<li>(45,44,47,44)</li>
<li>(45,45,46,46)</li>
</allRect>
</li>
<li>
<def>Filth_RubbleBuilding</def>
<allRect>
<li>(20,26,22,26)</li>
<li>(29,18,29,18)</li>
<li>(32,19,32,19)</li>
<li>(33,18,33,18)</li>
<li>(20,32,20,33)</li>
<li>(39,18,40,18)</li>
<li>(40,19,40,19)</li>
<li>(29,37,31,37)</li>
<li>(28,38,28,38)</li>
<li>(42,28,42,28)</li>
<li>(36,36,36,36)</li>
<li>(35,38,35,38)</li>
<li>(34,40,34,40)</li>
<li>(38,37,38,37)</li>
<li>(50,24,50,24)</li>
<li>(33,45,33,45)</li>
<li>(41,38,41,38)</li>
<li>(51,25,51,25)</li>
<li>(52,24,52,24)</li>
<li>(50,35,50,35)</li>
<li>(49,40,50,40)</li>
<li>(50,39,52,39)</li>
</allRect>
</li>
<li>
<def>Filth_Trash</def>
<allRect>
<li>(29,25,29,25)</li>
<li>(25,29,25,29)</li>
<li>(35,23,36,23)</li>
<li>(42,29,42,29)</li>
<li>(45,32,45,32)</li>
</allRect>
</li>
<li>
<def>Filth_Slime</def>
<allRect>
<li>(18,15,18,15)</li>
<li>(21,24,21,24)</li>
<li>(31,12,31,12)</li>
<li>(28,26,28,26)</li>
<li>(15,36,15,36)</li>
<li>(32,24,32,24)</li>
<li>(41,13,41,13)</li>
<li>(40,24,40,24)</li>
<li>(22,42,22,42)</li>
<li>(31,41,31,41)</li>
<li>(45,27,45,27)</li>
<li>(54,13,54,13)</li>
<li>(30,47,30,47)</li>
<li>(47,32,47,32)</li>
<li>(44,38,44,38)</li>
<li>(52,41,52,41)</li>
<li>(45,50,45,50)</li>
</allRect>
</li>
<li>
<def>Corpse_WulaSpecies</def>
<rotation>2</rotation>
<allRect>
<li>(18,15,18,15)</li>
<li>(21,24,21,24)</li>
<li>(31,12,31,12)</li>
<li>(28,26,28,26)</li>
<li>(15,36,15,36)</li>
<li>(32,24,32,24)</li>
<li>(41,13,41,13)</li>
<li>(40,24,40,24)</li>
<li>(22,42,22,42)</li>
<li>(31,41,31,41)</li>
<li>(45,27,45,27)</li>
<li>(54,13,54,13)</li>
<li>(30,47,30,47)</li>
<li>(47,32,47,32)</li>
<li>(44,38,44,38)</li>
<li>(52,41,52,41)</li>
<li>(45,50,45,50)</li>
</allRect>
</li>
<li>
<def>WULA_Wall_Flag_Building</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(34,15,34,15)</li>
<li>(39,15,39,15)</li>
</allRect>
</li>
<li>
<def>Wula_Base_Laser_Turret</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(18,21,18,21)</li>
<li>(19,47,19,47)</li>
<li>(50,18,50,18)</li>
<li>(50,49,50,49)</li>
</allRect>
</li>
<li>
<def>Corpse_Wula_AI_Heavy_Panzer</def>
<rotation>2</rotation>
<position>(42,0,30)</position>
</li>
<li>
<def>WULA_Holographic_Flag_Building</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(24,17,24,17)</li>
<li>(45,17,45,17)</li>
<li>(25,43,25,43)</li>
<li>(52,45,52,45)</li>
</allRect>
</li>
<li>
<def>WulaDoor</def>
<faction>Wula_PIA_Legion_Faction</faction>
<position>(40,0,20)</position>
</li>
<li>
<def>Stool</def>
<stuff>WULA_Alloy</stuff>
<faction>Wula_PIA_Legion_Faction</faction>
<position>(31,0,34)</position>
</li>
<li>
<def>WULA_Cube_Productor</def>
<faction>Wula_PIA_Legion_Faction</faction>
<position>(31,0,35)</position>
</li>
<li>
<def>WULA_Charging_Station_Synth</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(43,24,43,24)</li>
<li>(45,24,45,24)</li>
<li>(47,24,47,24)</li>
</allRect>
</li>
<li>
<def>WULA_Machine_Recharger</def>
<faction>Wula_PIA_Legion_Faction</faction>
<allRect>
<li>(25,27,25,27)</li>
<li>(25,32,25,32)</li>
</allRect>
</li>
<li>
<def>AncientTank</def>
<faction>PlayerColony</faction>
<position>(56,0,22)</position>
</li>
<li>
<def>AncientPipes</def>
<faction>PlayerColony</faction>
<allRect>
<li>(10,38,13,38)</li>
<li>(10,39,11,41)</li>
<li>(13,39,13,39)</li>
<li>(18,37,18,37)</li>
</allRect>
</li>
</thingDatas>
<lordDatas>
<li>
<name>default</name>
<lordJobData Class="QuestEditor_Library.LordJobData" />
<faction></faction>
</li>
</lordDatas>
</QuestEditor_Library.CustomMapDataDef>
</Defs>

View File

@@ -466,6 +466,7 @@
<label>野心冠军勇士</label>
<race>WulaSpecies</race>
<defaultFactionType>Wula_PIA_Legion_Faction</defaultFactionType>
<forceDeathOnDowned>true</forceDeathOnDowned>
<lifeStages>
<li>
<bodyGraphicData>
@@ -531,6 +532,7 @@
<label>帝国百战军锋</label>
<race>WulaSpecies</race>
<defaultFactionType>Wula_PIA_Legion_Faction</defaultFactionType>
<forceDeathOnDowned>true</forceDeathOnDowned>
<lifeStages>
<li>
<bodyGraphicData>
@@ -637,6 +639,7 @@
<label>断爪卫队</label>
<race>WulaSpecies</race>
<defaultFactionType>Wula_PIA_Legion_Faction</defaultFactionType>
<forceDeathOnDowned>true</forceDeathOnDowned>
<lifeStages>
<li>
<bodyGraphicData>
@@ -703,4 +706,73 @@
<li>WULA_Trait_Broken_Personality</li>
</forcedTraits>
</PawnKindDef>
<!-- 叛徒 -->
<PawnKindDef>
<defName>Wula_PIA_Legion_Escort_Traitor</defName>
<label>断爪卫队的叛徒</label>
<race>WulaSpecies</race>
<defaultFactionType>Wula_PIA_Legion_Faction</defaultFactionType>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Wula/Item/WULA_Species_Icon</texPath>
<maskPath>SRA/Pawn/Mechanoid/AllegianceOverlays/None</maskPath>
<shaderType>CutoutWithOverlay</shaderType>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>1</drawSize>
<shadowData>
<volume>(0.2, 0.3, 0.2)</volume>
</shadowData>
</bodyGraphicData>
</li>
</lifeStages>
<isBoss>true</isBoss>
<maxPerGroup>1</maxPerGroup>
<forceDeathOnDowned>true</forceDeathOnDowned>
<minGenerationAge>18</minGenerationAge>
<maxGenerationAge>20</maxGenerationAge>
<combatPower>500</combatPower>
<initialWillRange>99~99</initialWillRange>
<initialResistanceRange>99~99</initialResistanceRange>
<itemQuality>Legendary</itemQuality>
<minApparelQuality>Legendary</minApparelQuality>
<maxApparelQuality>Legendary</maxApparelQuality>
<apparelIgnorePollution MayRequire="Ludeon.RimWorld.Biotech">true</apparelIgnorePollution>
<ignoreFactionApparelStuffRequirements>true</ignoreFactionApparelStuffRequirements>
<isFighter>true</isFighter>
<weaponStuffOverride>Plasteel</weaponStuffOverride>
<apparelTags>
<li>Wula_Legion_Apparel</li>
</apparelTags>
<weaponTags>
<li>WULA_MW_Twohanded_ChainBroadsword</li>
</weaponTags>
<apparelRequired>
<li>WULA_Heavy_Infantry_Helmet_Nomask</li>
<li>WULA_Champion_Warrior_Armor</li>
</apparelRequired>
<weaponMoney>999999~999999</weaponMoney>
<biocodeWeaponChance>1</biocodeWeaponChance>
<apparelAllowHeadgearChance>1</apparelAllowHeadgearChance>
<techHediffsChance>1</techHediffsChance>
<apparelMoney>999999~999999</apparelMoney>
<techHediffsMoney>999999~999999</techHediffsMoney>
<techHediffsRequired>
<li>DeathAcidifier</li>
</techHediffsRequired>
<techHediffsTags>
<li>Advanced</li>
<li>ImplantEmpireCommon</li>
</techHediffsTags>
<fixedChildBackstories>
<li>WULA_Child_Backstory03</li>
</fixedChildBackstories>
<fixedAdultBackstories>
<li>WULA_Adult_Backstory_Legion_Escort</li>
</fixedAdultBackstories>
</PawnKindDef>
</Defs>

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<IncidentDef>
<defName>WULA_GiveQuest_Kill_PIA_Legion_Escort_Traitor</defName>
<category>GiveQuest</category>
<label>帝国的叛徒</label>
<targetTags>
<li>Map_PlayerHome</li>
</targetTags>
<questScriptDef>WULA_Kill_PIA_Legion_Escort_Traitor</questScriptDef>
<workerClass>IncidentWorker_GiveQuest</workerClass>
<baseChance>0</baseChance>
<requireColonistsPresent>True</requireColonistsPresent>
</IncidentDef>
<QuestScriptDef>
<defName>WULA_Kill_PIA_Legion_Escort_Traitor</defName>
<rootSelectionWeight>0</rootSelectionWeight>
<autoAccept>true</autoAccept>
<sendAvailableLetter>false</sendAvailableLetter>
<defaultChallengeRating>4</defaultChallengeRating> <!-- 挑战等级(星级) -->
<isRootSpecial>true</isRootSpecial> <!-- 特殊任务 -->
<defaultCharity>false</defaultCharity> <!-- 是否仁善 -->
<!-- 命名规则 -->
<questNameRules>
<rulesStrings>
<li>questName->WULA_Base_Tex_Quest_questName</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<include>
<li>QuestHospitalityCommon</li>
</include>
<rulesStrings>
<li>questDescription->WULA_Intro_Spy_questDescription</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestEditor_Library.QuestNode_RandomCustomMap">
<datas>
<li>
<key>Wula_PIA_Legion_Escort_Traitor_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>LostOutpost</storeAs>
<!-- <faction>Wula_PIA_Legion_Faction</faction> -->
<distance>
<min>5</min>
<max>10</max>
</distance>
<blacklist />
</li>
<!-- 穿梭机成功离开后任务完成信号 -->
<li Class="QuestNode_Signal">
<inSignal>Traitor.FinallyHostile</inSignal>
<!-- 等待特定信号再打开窗口 -->
<node Class="QuestNode_End">
<outcome>Success</outcome>
<sendStandardLetter>true</sendStandardLetter>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>

View File

@@ -289,7 +289,7 @@
<ThingDef ParentName="WULA_ExperienceCore_Weapon_Melee">
<defName>WULA_MW_Twohanded_ChainBroadsword</defName>
<label>CBs-25"地狱牙"</label>
<description>一把需要双手才能拿起的巨型链锯刀,这种恐怖的近战武器一击就可以造成大量伤口,甚至将对手劈成两段。它的刀头装备了一台微型相位引擎,可以挥出斩裂空间的一刀,然后瞬间移动到目标面前。</description>
<description>一把需要双手才能拿起的巨型链锯刀,这种恐怖的近战武器一击就可以造成大量伤口,甚至将对手劈成两段。它的刀头装备了一台微型相位引擎,可以挥出斩裂空间的一刀,然后瞬间移动到目标面前,或是让对手移动到持刀者面前</description>
<graphicData>
<texPath>Wula/Weapon/WULA_MW_Twohanded_ChainBroadsword/WULA_MW_Twohanded_ChainBroadsword</texPath>
<shaderType>CutoutComplex</shaderType>
@@ -404,7 +404,7 @@
<AbilityDef>
<defName>WULA_MW_Twohanded_ChainBroadsword_Second_Ability</defName>
<label>空间删除</label>
<description>使用CBs-25"地狱牙"刀头的相位引擎将目标拉近到施法者身边——这种折跃引擎只能折跃小型目标,如果持刀者体型大于3则无法发起传送</description>
<description>使用CBs-25"地狱牙"刀头的相位引擎将目标拉近到施法者身边——这种折跃引擎只能折跃小型目标,如果目标体型大于3则无法拉近</description>
<iconPath>Wula/UI/Abilities/WULA_PullTarget</iconPath>
<writeCombatLog>True</writeCombatLog>
<showPsycastEffects>False</showPsycastEffects>

View File

@@ -0,0 +1,25 @@
using HarmonyLib;
using RimWorld;
using Verse;
namespace WulaFallenEmpire
{
/// <summary>
/// 为Wula_PIA_Legion_Faction派系排除领袖检查错误
/// 通过修改ShouldHaveLeader属性实现
/// </summary>
[HarmonyPatch(typeof(Faction), "get_ShouldHaveLeader")]
public static class Faction_ShouldHaveLeader_Patch
{
[HarmonyPostfix]
public static void Postfix(Faction __instance, ref bool __result)
{
// 对于Wula_PIA_Legion_Faction派系强制返回false
// 这样原代码中的检查 if (ShouldHaveLeader && leader == null) 就不会触发
if (__instance.def?.defName == "Wula_PIA_Legion_Faction")
{
__result = false;
}
}
}
}

View File

@@ -180,6 +180,7 @@
<Compile Include="GlobalWorkTable\JobDriver_GlobalWorkTable.cs" />
<Compile Include="GlobalWorkTable\CompLaunchable_ToGlobalStorage.cs" />
<Compile Include="GlobalWorkTable\CompProperties_Launchable_ToGlobalStorage.cs" />
<Compile Include="HarmonyPatches\Faction_ShouldHaveLeader_Patch.cs" />
<Compile Include="HarmonyPatches\Hediff_Mechlink_PostAdd_Patch.cs" />
<Compile Include="HarmonyPatches\Patch_ThingDefGenerator_Techprints_ImpliedTechprintDefs.cs" />
<Compile Include="HarmonyPatches\WULA_AutonomousMech\Patch_FloatMenuOptionProvider_SelectedPawnValid.cs" />
@@ -275,7 +276,7 @@
<Compile Include="ThingComp\WULA_AreaShield\Harmony_AreaShieldInterceptor.cs" />
<Compile Include="ThingComp\WULA_AreaShield\ThingComp_AreaShield.cs" />
<Compile Include="ThingComp\WULA_AreaTeleporter\CompProperties_AreaTeleporter.cs" />
<Compile Include="ThingComp\WULA_AreaTeleporter\Patch_Pawn_JobTracker_StartJob.cs" />
<Compile Include="HarmonyPatches\Patch_Pawn_JobTracker_StartJob.cs" />
<Compile Include="ThingComp\WULA_AreaTeleporter\ThingComp_AreaTeleporter.cs" />
<Compile Include="ThingComp\WULA_CustomUniqueWeapon\CompCustomUniqueWeapon.cs" />
<Compile Include="ThingComp\WULA_CustomUniqueWeapon\CompProperties_CustomUniqueWeapon.cs" />
@@ -283,7 +284,7 @@
<Compile Include="ThingComp\WULA_DamageTransaction\CompDamageRelay.cs" />
<Compile Include="ThingComp\WULA_DamageTransaction\CompProperties_DamageInterceptor.cs" />
<Compile Include="ThingComp\WULA_DamageTransaction\CompProperties_DamageRelay.cs" />
<Compile Include="ThingComp\WULA_DamageTransaction\Patch_Pawn_PreApplyDamage.cs" />
<Compile Include="HarmonyPatches\Patch_Pawn_PreApplyDamage.cs" />
<Compile Include="ThingComp\WULA_GiveHediffsInRange\CompGiveHediffsInRange.cs" />
<Compile Include="ThingComp\WULA_GiveHediffsInRange\CompProperties_GiveHediffsInRange.cs" />
<Compile Include="ThingComp\WULA_MechRepairKit\CompUseEffect_FixAllHealthConditions.cs" />