事件系统改进

This commit is contained in:
2025-11-12 12:01:30 +08:00
parent c2b23554cc
commit a5dc00bf3b
14 changed files with 642 additions and 452 deletions

View File

@@ -129,31 +129,6 @@
</li>
</additionalHediffs>
</DamageDef>
<DamageDef>
<defName>WULA_SP_Live_Shelter_Heal</defName>
<label>灵能疗愈</label>
<ignoreShields>true</ignoreShields>
<workerClass>DamageWorker_Stab</workerClass>
<stabChanceOfForcedInternal>0</stabChanceOfForcedInternal>
<externalViolence>false</externalViolence>
<deathMessage>{0} 被本该治愈伤口的武器杀死了。</deathMessage>
<harmsHealth>false</harmsHealth>
<hediff>Burn</hediff>
<makesBlood>false</makesBlood>
<consideredHelpful>true</consideredHelpful>
<defaultDamage>1</defaultDamage>
<defaultStoppingPower>0</defaultStoppingPower>
<defaultArmorPenetration>5</defaultArmorPenetration>
<buildingDamageFactorImpassable>0</buildingDamageFactorImpassable>
<buildingDamageFactorPassable>0</buildingDamageFactorPassable>
<additionalHediffs>
<li>
<hediff>WULA_Psi_Regeneration</hediff>
<severityPerDamageDealt>0.5</severityPerDamageDealt>
</li>
</additionalHediffs>
</DamageDef>
<DamageDef>
<defName>Damage_WULA_Plasma</defName>
@@ -270,4 +245,96 @@
<defaultArmorPenetration>1.30</defaultArmorPenetration>
<explosionCenterEffecter>WULA_DarkMatterBomb_Shockwave</explosionCenterEffecter>
</DamageDef>
<EffecterDef>
<defName>WULA_DarkMatterBomb_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandRedLine</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>FlashMechBand</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>Mote_RedFlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef>
<DamageDef ParentName="StunBase">
<defName>WULA_Mech_EMP_Drop</defName>
<label>EMP</label>
<externalViolenceForMechanoids>true</externalViolenceForMechanoids>
<deathMessage>{0} has been EMPed to death.</deathMessage>
<harmsHealth>false</harmsHealth>
<impactSoundType>Electric</impactSoundType>
<defaultDamage>50</defaultDamage>
<explosionSnowMeltAmount>0</explosionSnowMeltAmount>
<!-- <explosionCellFleck>BlastEMP</explosionCellFleck> -->
<!-- <explosionColorEdge>(0.8, 0.8, 0.8, 0.8)</explosionColorEdge>
<explosionInteriorFleck>ElectricalSpark</explosionInteriorFleck> -->
<soundExplosion>Explosion_Vaporize</soundExplosion>
<combatLogRules>Damage_EMP</combatLogRules>
<causeStun>true</causeStun>
<stunResistStat MayRequireAnyOf="Ludeon.RimWorld.Biotech,Ludeon.RimWorld.Anomaly">EMPResistance</stunResistStat>
<stunAdaptationTicks>2200</stunAdaptationTicks>
<explosionCenterEffecter>WULA_Mech_EMP_Drop_Shockwave</explosionCenterEffecter>
</DamageDef>
<EffecterDef>
<defName>WULA_Mech_EMP_Drop_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandRedLine</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>FlashMechBand</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>Mote_RedFlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef>
</Defs>

View File

@@ -13,62 +13,45 @@
</descriptions>
<options>
<li>
<label>再见</label>
<label>请求协助</label>
<useCustomColors>true</useCustomColors>
<normalColor>(133,206,219,185)</normalColor>
<hoverColor>(133,206,219,185)</hoverColor>
<normalColor>(226,191,195,195)</normalColor>
<hoverColor>(226,191,195,185)</hoverColor>
<textColor>(255,255,255,255)</textColor>
<textHoverColor>(255,255,255,255)</textHoverColor>
<optionEffects>
<li>
<effects>
<li Class="WulaFallenEmpire.Effect_CloseDialog" />
<li Class="WulaFallenEmpire.Effect_TriggerRaid">
<letterLabel>增援</letterLabel>
<letterText>乌拉帝国 行星封锁机关的一支分队正在接近。</letterText>
<points>10000</points>
<faction>Wula_PIA_Legion_Faction</faction>
<raidStrategy>ImmediateAttack</raidStrategy>
<raidArrivalMode>EdgeDrop</raidArrivalMode>
<groupKind>Combat</groupKind>
<pawnGroupMakers>
<li>
<kindDef>Combat</kindDef>
<commonality>100</commonality>
<options>
<Wula_Broken_Personality_Pawn_2>10</Wula_Broken_Personality_Pawn_2>
</options>
</li>
</pawnGroupMakers>
</li>
</effects>
</li>
</optionEffects>
</li>
<li>
<label>再见</label>
<optionEffects>
<li>
<effects>
<li Class="WulaFallenEmpire.Effect_CloseDialog" />
</effects>
</li>
</optionEffects>
</li>
<li>
<label>再见</label>
<optionEffects>
<li>
<effects>
<li Class="WulaFallenEmpire.Effect_CloseDialog" />
</effects>
</li>
</optionEffects>
</li>
<li>
<label>再见</label>
<optionEffects>
<li>
<effects>
<li Class="WulaFallenEmpire.Effect_CloseDialog" />
</effects>
</li>
</optionEffects>
</li>
<li>
<label>再见</label>
<optionEffects>
<li>
<effects>
<li Class="WulaFallenEmpire.Effect_CloseDialog" />
</effects>
</li>
</optionEffects>
</li>
<li>
<label>再见</label>
<useCustomColors>true</useCustomColors>
<normalColor>(226,191,195,195)</normalColor>
<hoverColor>(226,191,195,185)</hoverColor>
<textColor>(255,255,255,255)</textColor>
<textHoverColor>(255,255,255,255)</textHoverColor>
<optionEffects>
<li>
<effects>

View File

@@ -33,14 +33,14 @@
</FactionDef>
<FactionDef ParentName="FactionBase">
<defName>Wula_Broken_Personality_Faction</defName>
<label>乌拉帝国 反常网络</label>
<description>堕落乌拉帝国派系之一,无政见。\n\n反常网络由帝国边缘世界开发署控制的机械乌拉构成在人工智能网络“演算圆环”的崩溃中大量的机械乌拉受到冲击导致人格情感模拟系统的损坏并催生了无数反常子网络——这些脱离控制的机械乌拉三五成群自发组成集体意识并以不可预测的危险逻辑活跃在数十万年后的边缘世界</description>
<defName>Wula_PIA_Legion_Faction</defName>
<label>乌拉帝国 行星封锁机关</label>
<description>隶属于乌拉帝国开发署的暴力机关,主要职责是对那些已经有人占领但是军事实力较弱的星球进行封锁和原住民驱离。虽然她们不是真正的军队,但是所保有的舰队和武装力量足以支撑其发起一场横跨星域的战争</description>
<basicMemberKind>Wula_PawnKind</basicMemberKind>
<pawnSingular>乌拉帝国合成人</pawnSingular>
<pawnsPlural>乌拉帝国合成人</pawnsPlural>
<requiredCountAtGameStart>1</requiredCountAtGameStart>
<factionNameMaker>NamerFactionWulaBrokenPersonality</factionNameMaker>
<factionNameMaker>NamerFaction_Wula_PIA_Legion_Faction</factionNameMaker>
<factionIconPath>Wula/World/WorldObjects/Expanding/Wula_Broken_Personality_Faction</factionIconPath>
<!-- <settlementGenerationWeight>1</settlementGenerationWeight> -->
<requiredCountAtGameStart>1</requiredCountAtGameStart>
@@ -62,7 +62,7 @@
<li>(4000, 2.6)</li>
</points>
</raidCommonalityFromPointsCurve>
<raidLootMaker>MechanoidRaidLootMaker</raidLootMaker>
<raidLootMaker>EmpireRaidLootMaker</raidLootMaker>
<raidLootValueFromPointsCurve>
<points>
<li>(35, 8)</li>
@@ -77,7 +77,7 @@
<autoFlee>false</autoFlee>
<canUseAvoidGrid>false</canUseAvoidGrid>
<techLevel>Ultra</techLevel>
<earliestRaidDays>45</earliestRaidDays>
<earliestRaidDays>999999</earliestRaidDays> <!-- 通过事件发动袭击,不走常规袭击 -->
<permanentEnemy>true</permanentEnemy>
<hostileToFactionlessHumanlikes>true</hostileToFactionlessHumanlikes>
<maxPawnCostPerTotalPointsCurve>
@@ -157,8 +157,20 @@
<configurationListOrderPriority>900</configurationListOrderPriority>
<dropPodActive>ActiveDropPodMechanoid</dropPodActive>
<dropPodIncoming>DropPodIncomingMechanoidRapid</dropPodIncoming>
<backstoryCategories>
<li>Wula_Backstory_Categories</li>
</backstoryCategories>
<disallowedRaidAgeRestrictions>
<li MayRequire="Ludeon.RimWorld.Biotech">Children</li>
</disallowedRaidAgeRestrictions>
<permanentEnemyToEveryoneExcept>
<li>WULA_Awakened_Synth</li>
<li>OutlanderCivil</li>
<li>TribeCivil</li>
<li>PlayerTribe</li>
<li>PlayerColony</li>
<li>Ancients</li>
<li MayRequire="Ludeon.RimWorld.Ideology">Beggars</li>
<li MayRequire="Ludeon.RimWorld.Anomaly">ResearchExpedition</li>
<li MayRequire="Ludeon.RimWorld.Odyssey">GravshipCrew</li>
<li MayRequire="Ludeon.RimWorld.Odyssey">TradersGuild</li>
</permanentEnemyToEveryoneExcept>
</FactionDef>
</Defs>

View File

@@ -0,0 +1,414 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<IncidentDef ParentName="GiveQuestBase">
<defName>WULA_GiveQuest_Intro_Spy</defName>
<label>SPY</label>
<questScriptDef>WULA_Intro_Spy</questScriptDef> <!-- 通向具体的questScrip -->
<baseChance>0</baseChance> <!-- given by a special storyteller comp -->
</IncidentDef>
<QuestScriptDef>
<defName>WULA_Intro_Spy</defName>
<defaultChallengeRating>1</defaultChallengeRating> <!-- 挑战等级(星级) -->
<expireDaysRange>2</expireDaysRange> <!-- 过期时间 -->
<isRootSpecial>true</isRootSpecial> <!-- 特殊任务 -->
<defaultCharity>false</defaultCharity> <!-- 是否仁善 -->
<!-- 仁善想法 -->
<!-- <successHistoryEvent MayRequire="Ludeon.RimWorld.Ideology">CharityFulfilled_IntroWimp</successHistoryEvent>
<failedOrExpiredHistoryEvent MayRequire="Ludeon.RimWorld.Ideology">CharityRefused_IntroWimp</failedOrExpiredHistoryEvent> -->
<!-- 命名规则 -->
<questNameRules>
<rulesStrings>
<li>questName->the [adjAny] [asker_royalTitleInCurrentFaction]</li>
<!-- Pieces -->
<li>adjAny->hunted</li>
<li>adjAny->fleeing</li>
<li>adjAny->solitary</li>
<li>adjAny->ambushed</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<include>
<li>QuestHospitalityCommon</li>
</include>
<rulesStrings>
<li>questDescription->[asker_nameFull], a [asker_royalTitleInCurrentFaction] of [asker_faction_name] is calling from nearby. [asker_possessive] guards were killed in an ambush. [asker_pronoun] escaped, but is now being followed by (*Threat)a manhunting [animalKindDef_label](/Threat).\n\n[asker_nameDef] wants you to keep [asker_objective] safe at [map_definite] for a few hours until [asker_possessive] shuttle can come pick [asker_objective] up.
\n[asker_pronoun] will bestow [royalFavorReward] [asker_faction_royalFavorLabel] on whoever accepts this quest. This is enough [asker_faction_royalFavorLabel] to receive the royal title of Novice, and all benefits that come with it - including the first level of psychic powers.</li>
</rulesStrings>
</questDescriptionRules>
<!-- 运行规则 -->
<root Class="QuestNode_Sequence">
<nodes>
<li Class="WulaFallenEmpire.QuestNode_Root_EventLetter">
<eventDefName>Wula_UI_Legion_1</eventDefName>
</li>
<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_Root_EventLetter">
<letterLabel>乌拉需要你的注意</letterLabel>
<letterTitle>乌拉需要你的注意</letterTitle>
<letterText>一个强大的心灵实体将它的意志强加于你的意识之中。它自称为“乌拉”,并要求你阅览它的消息。这股力量是压倒性的,不容拒绝。</letterText>
<options>
<li>
<label>阅览消息</label>
<optionEffects>
<li>
<effects>
<li Class="WulaFallenEmpire.Effect_OpenCustomUI">
<defName>Wula_UI_Legion_1</defName>
</li>
</effects>
</li>
</optionEffects>
</li>
</options>
</li>
<!-- 获取地图 -->
<li Class="QuestNode_GetMap" />
<!-- 获取边缘进入点 -->
<li Class="QuestNode_GetWalkInSpot" />
<!-- 产生超链接 -->
<li Class="QuestNode_RoyalTitleHyperlink">
<faction>Wula_PIA_Legion_Faction</faction>
</li>
<!-- 判断任务能否用皇家声望,后续生成奖励用 -->
<!-- <li Class="QuestNode_RequireRoyalFavorFromFaction">
<faction>Wula_PIA_Legion_Faction</faction>
</li> -->
<!-- 对目标给予皇家威望 -->
<!-- <li Class="QuestNode_Set">
<name>royalFavorReward</name>
<value>8</value>
</li> -->
<!-- 生成pawn -->
<li Class="QuestNode_GeneratePawn">
<kindDef>Wula_PawnKind</kindDef>
<storeAs>asker</storeAs> <!-- 特殊的字段,供后续调用 -->
<faction>Wula_PIA_Legion_Faction</faction>
<biocodeWeaponChance>1</biocodeWeaponChance>
<biocodeApparelChance>1</biocodeApparelChance>
<allowPregnant>false</allowPregnant> <!-- 允许怀孕? -->
</li>
<!-- pawn抵达 -->
<li Class="QuestNode_PawnsArrive">
<pawns>$asker</pawns>
<joinPlayer>true</joinPlayer>
</li>
<!-- 请求者如果进入“回归野性”崩溃状态则将其从离开列表清除 -->
<li Class="QuestNode_LeaveOnCleanup">
<pawns>$asker</pawns>
<sendStandardLetter>false</sendStandardLetter>
<inSignalRemovePawn>asker.RanWild</inSignalRemovePawn>
</li>
<!-- 禁用崩溃 -->
<li Class="QuestNode_DisableRandomMoodCausedMentalBreaks">
<pawns>$asker</pawns>
</li>
<!-- 设置袭击点数 -->
<li Class="QuestNode_Set">
<name>points</name>
<value>50</value>
</li>
<!-- 延迟生成袭击 -->
<li Class="QuestNode_Delay">
<delayTicks>1800</delayTicks>
<!-- 判断条件:是否允许暴力行为(游戏设置) -->
<node Class="QuestNode_ViolentQuestsAllowed">
<!-- 允许暴力则生成狂暴动物袭击 -->
<node Class="QuestNode_ManhunterPack">
<animalCount>1</animalCount>
<customLetterLabel TKey="LetterLabelAngryAnimal">Manhunting [animalKindDef_label]</customLetterLabel>
<customLetterText TKey="LetterTextAngryAnimal">The [animalKindDef_label] which was following [asker_nameFull] has arrived in the area.</customLetterText>
</node>
<!-- 不允许暴力则生成温和动物 -->
<elseNode Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_GetAnimalKindByPoints" />
<li Class="QuestNode_GeneratePawn">
<kindDef>$animalKindDef</kindDef>
<storeAs>peacefulAnimal</storeAs>
</li>
<li Class="QuestNode_PawnsArrive">
<pawns>$peacefulAnimal</pawns>
<customLetterLabel TKey="LetterLabelAnimalArrived">[animalKindDef_label] arrived</customLetterLabel>
<customLetterText TKey="LetterTextAnimalArrived">The [animalKindDef_label] that [asker_nameDef] was fleeing has arrived.\n\nIt turned out to be quite gentle and not aggressive at all.</customLetterText>
</li>
</nodes>
</elseNode>
</node>
</li>
<!-- 穿梭机延迟抵达 -->
<li Class="QuestNode_ShuttleDelay">
<delayTicks>7500</delayTicks>
<lodgers>$asker</lodgers> <!-- 必须装载人员 -->
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_TransportShip_Pickup</def>
<parms>
<leaveDelayTicks>45000</leaveDelayTicks> <!-- 强制起飞时间 -->
<requiredPawns>$asker</requiredPawns> <!-- 起飞需求的人员 -->
<leaveImmediatelyWhenSatisfied>true</leaveImmediatelyWhenSatisfied> <!--装载后立刻离开 -->
</parms>
</li>
<!-- 选中指定对象时显示自定义的检查信息 -->
<li Class="QuestNode_InspectString">
<targets>$asker</targets>
<inspectString TKey="InspectStringDepartShuttle">Should depart on shuttle</inspectString>
</li>
<!-- 信封 -->
<li Class="QuestNode_Letter">
<label TKey="LetterLabelShuttleArrived">Shuttle arrived</label>
<text TKey="LetterTextShuttleArrived">The shuttle has arrived to collect [asker_nameDef].</text>
<lookTargets>$pickupShipThing</lookTargets>
</li>
</nodes>
</node>
</li>
<!-- 临时派系关系 -->
<li Class="QuestNode_ExtraFaction">
<pawns>$asker</pawns>
<factionType>HomeFaction</factionType>
<faction>Wula_PIA_Legion_Faction</faction>
<inSignalsRemovePawn>
<li>lodgers.RanWild</li>
<li>lodgers.BecameMutant</li>
</inSignalsRemovePawn>
</li>
<!-- 不允许更改访问者的装备 -->
<li Class="QuestNode_SetAllApparelLocked">
<pawns>$asker</pawns>
</li>
<!-- 允许使用皇家支援?待查 -->
<!-- <li Class="QuestNode_AllowDecreesForLodger">
<lodger>$asker</lodger>
</li> -->
<!-- - - - - - - - -->
<!-- 结束控件 -->
<!-- - - - - - - - -->
<!-- 访问者死亡 -->
<li Class="QuestNode_Signal">
<inSignal>asker.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelGuestDied">Guest died: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextGuestDied">{SUBJECT_definite}, who you were charged to protect, has died. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>QuestPawnLost</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 访问者被遗弃 -->
<li Class="QuestNode_Signal">
<inSignal>asker.LeftBehind</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelGuestDied">Guest left behind: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextGuestDied">{SUBJECT_definite}, who you were charged to protect, has been left behind. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>QuestPawnLost</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 访问者被执行暴力手术 -->
<li Class="QuestNode_Signal">
<inSignal>asker.SurgeryViolation</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelUnauthorizedSurgery">Unauthorized surgery: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextUnauthorizedSurgery">Unauthorized, violating surgery has been performed on {SUBJECT_definite}, who you were charged to protect. Because of this violation, [asker_pronoun] will now attempt to leave. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>PerformedHarmfulSurgery</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 访问者基因被提取 -->
<li Class="QuestNode_Signal" MayRequire="Ludeon.RimWorld.Biotech">
<inSignal>asker.XenogermAbsorbed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label>Xenogerm absorbed: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text>{SUBJECT_definite}, who you were charged to protect, has had {SUBJECT_possessive} xenogerm forcibly absorbed. Because of this violation, {SUBJECT_pronoun} will now attempt to leave. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>XenogermAbsorbed</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 逮捕访问者 -->
<li Class="QuestNode_Signal">
<inSignal>asker.Arrested</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelCaptured">Captured: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextCaptured">{SUBJECT_definite}, who you were charged to host, has been arrested. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>QuestPawnArrested</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 访问者立离开定居点 -->
<li Class="QuestNode_Signal">
<inSignal>asker.LeftMap</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelGuestLost">Guest lost: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextGuestLost">{SUBJECT_definite}, who you were charged to protect, has left the designated settlement. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>QuestPawnLost</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 访问者崩溃回归野性 -->
<li Class="QuestNode_Signal">
<inSignal>asker.RanWild</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelLodgerRanWild">Guest lost: {SUBJECT_definite}</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextLodgerRanWild">{SUBJECT_definite}, who you were charged to protect, has run wild. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>QuestPawnLost</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 穿梭机被摧毁 -->
<li Class="QuestNode_Signal">
<inSignal>pickupShipThing.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelShuttleDestroyed">Shuttle destroyed</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextShuttleDestroyed">The shuttle sent to collect [asker_nameDef] has been destroyed. [asker_pronoun] will now leave on foot. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>ShuttleDestroyed</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
<!-- 穿梭机被抛弃 -->
<li Class="QuestNode_Signal">
<inSignal>pickupShipThing.LeftBehind</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelShuttleDestroyed">Shuttle left behind</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextShuttleDestroyed">The shuttle sent to collect [asker_nameDef] has been left behind. [asker_pronoun] will now leave on foot.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<!-- 任务结束后给予皇家威望 -->
<!-- <li Class="QuestNode_GiveRoyalFavorAndDevelopmentPoints">
<inSignal>pickupShipThing.SentSatisfied</inSignal>
<giveToAccepter>true</giveToAccepter>
<factionOf>$asker</factionOf>
<amount>$royalFavorReward</amount>
<isSingleReward>true</isSingleReward>
</li> -->
<!-- 穿梭机成功离开后发送任务完成信号 -->
<li Class="QuestNode_Signal">
<inSignal>pickupShipThing.SentSatisfied</inSignal>
<node Class="QuestNode_End">
<outcome>Success</outcome>
<sendStandardLetter>true</sendStandardLetter>
</node>
</li>
<!-- 穿梭机超时离开,访问者徒步离开地图 -->
<li Class="QuestNode_Signal">
<inSignal>pickupShipThing.SentUnsatisfied</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestFailed">Quest failed: [resolvedQuestName]</label>
<letterDef>NegativeEvent</letterDef>
<text TKey="LetterTextQuestFailed">The shuttle sent to collect [asker_nameDef] has departed without [asker_objective]. [asker_pronoun] will now leave on foot. [failLetterEndingCommon]</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
<goodwillChangeReason>MemberMissedShuttle</goodwillChangeReason>
</li>
</nodes>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>

View File

@@ -1,5 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<RulePackDef>
<defName>NamerFaction_Wula_PIA_Legion_Faction</defName>
<rulePack>
<rulesStrings>
<li>r_name->[PIALegion]</li>
<li>PIALegion->乌拉帝国 行星封锁机关</li>
</rulesStrings>
</rulePack>
</RulePackDef>
<RulePackDef>
<defName>NamerFactionWulaBrokenPersonality</defName>
<rulePack>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<StorytellerDef ParentName="BaseStoryteller">
<defName>WULA_Legion</defName>
<label>「军团」</label>
<description>一个超级AI负责控制调度乌拉帝国行星封锁机关P.I.A的舰队是帝国开发署扩张领地的先锋。当帝国需要对一个星球进行控制和介入时她会指挥庞大的先锋舰队攻占轨道以不容置疑的实力向星球宣示帝国的权威。\n\n作为讲述者她不会为你留下任何保护措施所有的袭击和恶性事件从落地开始就有可能生成并且袭击的频率要比常规情况下更高——尽管它们还是有周期规律的。</description>
<portraitLarge>Wula/Storyteller/WULA_Legion</portraitLarge>
<portraitTiny>Wula/Storyteller/WULA_Legion_TINY</portraitTiny>
<listOrder>20</listOrder>
<defName>WULA_Legion</defName>
<label>「军团」</label>
<description>一个超级AI负责控制调度乌拉帝国行星封锁机关P.I.A的舰队是帝国开发署扩张领地的先锋。当帝国需要对一个星球进行控制和介入时她会指挥庞大的先锋舰队攻占轨道以不容置疑的实力向星球宣示帝国的权威。\n\n作为讲述者她不会为你留下任何保护措施所有的袭击和恶性事件从落地开始就有可能生成并且袭击的频率要比常规情况下更高——尽管它们还是有周期规律的。</description>
<portraitLarge>Wula/Storyteller/WULA_Legion</portraitLarge>
<portraitTiny>Wula/Storyteller/WULA_Legion_TINY</portraitTiny>
<listOrder>50</listOrder>
<comps>
<!-- Intro -->
<!-- <li Class="StorytellerCompProperties_ClassicIntro"/> -->

View File

@@ -108,59 +108,4 @@
</li>
</comps>
</ThingDef>
<DamageDef ParentName="StunBase">
<defName>WULA_Mech_EMP_Drop</defName>
<label>EMP</label>
<externalViolenceForMechanoids>true</externalViolenceForMechanoids>
<deathMessage>{0} has been EMPed to death.</deathMessage>
<harmsHealth>false</harmsHealth>
<impactSoundType>Electric</impactSoundType>
<defaultDamage>50</defaultDamage>
<explosionSnowMeltAmount>0</explosionSnowMeltAmount>
<!-- <explosionCellFleck>BlastEMP</explosionCellFleck> -->
<!-- <explosionColorEdge>(0.8, 0.8, 0.8, 0.8)</explosionColorEdge>
<explosionInteriorFleck>ElectricalSpark</explosionInteriorFleck> -->
<soundExplosion>Explosion_Vaporize</soundExplosion>
<combatLogRules>Damage_EMP</combatLogRules>
<causeStun>true</causeStun>
<stunResistStat MayRequireAnyOf="Ludeon.RimWorld.Biotech,Ludeon.RimWorld.Anomaly">EMPResistance</stunResistStat>
<stunAdaptationTicks>2200</stunAdaptationTicks>
<explosionCenterEffecter>WULA_Mech_EMP_Drop_Shockwave</explosionCenterEffecter>
</DamageDef>
<EffecterDef>
<defName>WULA_Mech_EMP_Drop_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandRedLine</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>FlashMechBand</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>Mote_RedFlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef>
</Defs>

View File

@@ -94,7 +94,7 @@
<Mass>125</Mass>
<Comfort>0.65</Comfort>
</statBases>
<designationCategory>WULA_Buildings</designationCategory>
<!-- <designationCategory>WULA_Buildings</designationCategory> -->
<tickerType>Normal</tickerType>
<canOverlapZones>true</canOverlapZones>
<rotatable>true</rotatable>
@@ -115,7 +115,6 @@
<comps>
</comps>
</ThingDef>
<!-- 战机 -->
<ThingDef ParentName="BuildingBase">

View File

@@ -1187,97 +1187,6 @@
<spawnThing>CraterLarge</spawnThing>
</skyfaller>
</ThingDef>
<EffecterDef>
<defName>WULA_DarkMatterBomb_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandRedLine</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>FlashMechBand</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>Mote_RedFlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef>
<!-- <EffecterDef>
<defName>WULA_DarkMatterBomb_Shockwave</defName>
<children>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>Fleck_BlastMechBandShockwave</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<fleckDef>WULA_DarkMatterBomb_MechBandRedLine_Fleck</fleckDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<absoluteAngle>true</absoluteAngle>
<rotation>0~0</rotation>
</li>
<li>
<subEffecterClass>SubEffecter_SprayerTriggered</subEffecterClass>
<moteDef>WULA_DarkMatterBomb_FlashStrong</moteDef>
<burstCount>1</burstCount>
<spawnLocType>OnSource</spawnLocType>
<scale>24</scale>
</li>
</children>
</EffecterDef> -->
<!-- <FleckDef ParentName="FleckBase_Thrown">
<defName>WULA_DarkMatterBomb_MechBandRedLine_Fleck</defName>
<altitudeLayer>LightingOverlay</altitudeLayer>
<fadeInTime>0.1</fadeInTime>
<fadeOutTime>0.28</fadeOutTime>
<solidTime>0.7</solidTime>
<growthRate>11</growthRate>
<drawOffscreen>true</drawOffscreen>
<graphicData>
<texPath>Things/Mote/RedLineGlow</texPath>
<graphicClass>Graphic_FleckPulse</graphicClass>
<shaderType>MoteMultiplyAddCircular</shaderType>
<color>(78,0,106,215)</color>
<shaderParameters>
<_DistortionTex>/Things/Mote/RadiationDistortion_A</_DistortionTex>
<_texAScale>0.5</_texAScale>
<_texBScale>2</_texBScale>
<_texAScrollSpeed>0</_texAScrollSpeed>
<_texBScrollSpeed>-0.4</_texBScrollSpeed>
<_Intensity>0.5</_Intensity>
<_InnerFadeAmount>0</_InnerFadeAmount>
<_DistortionIntensity>0.5</_DistortionIntensity>
<_TexAScaleDivisorPerProgress>1.5</_TexAScaleDivisorPerProgress>
</shaderParameters>
<drawSize>(7, 7)</drawSize>
</graphicData>
</FleckDef> -->
<ThingDef ParentName="MoteBase">
<defName>WULA_DarkMatterBomb_FlashStrong</defName>
<thingClass>MoteAttached</thingClass>

View File

@@ -1,216 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<!-- 暗物质步枪 -->
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>WULA_RW_DM_AR</defName>
<label>DMa-8"陨硫"</label>
<description>乌拉帝国一线部队所使用的由暗物质驱动的常规步枪,暗物质经由螺旋结构形成自旋极化光束,可以在远距离上洞穿敌人,并引发小规模湮灭反应。</description>
<techLevel>Ultra</techLevel>
<!-- <techLevel>Spacer</techLevel> -->
<graphicData>
<texPath>Wula/Weapon/WULA_RW_DM_AR</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.2</drawSize>
</graphicData>
<weaponTags>
<li>Wula_Ranged_Weapon_T4</li>
</weaponTags>
<uiIconScale>0.9</uiIconScale>
<soundInteract>Interact_ChargeRifle</soundInteract>
<recipeMaker>
<recipeUsers Inherit="False">
<li>WULA_Cube_Productor_Energy</li>
</recipeUsers>
<researchPrerequisite>WULA_Synth_Weapon_4_DM_Base_Technology</researchPrerequisite>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<costList Inherit="False">
<Steel>400</Steel>
<Plasteel>200</Plasteel>
<WULA_Dark_Matter_Item>4</WULA_Dark_Matter_Item>
</costList>
<statBases>
<WorkToMake>40000</WorkToMake>
<Mass>4.5</Mass>
<AccuracyTouch>1</AccuracyTouch>
<AccuracyShort>1</AccuracyShort>
<AccuracyMedium>1</AccuracyMedium>
<AccuracyLong>1</AccuracyLong>
<RangedWeapon_Cooldown>1.25</RangedWeapon_Cooldown>
</statBases>
<verbs>
<li Class="WulaFallenEmpire.VerbPropertiesExplosiveBeam">
<verbClass>WulaFallenEmpire.Verb_ShootBeamExplosive</verbClass>
<!-- 基础射线参数 -->
<hasStandardCommand>true</hasStandardCommand>
<warmupTime>1</warmupTime>
<range>36</range>
<burstShotCount>6</burstShotCount>
<ticksBetweenBurstShots>6</ticksBetweenBurstShots>
<beamDamageDef>Wula_Dark_Matter_Beam</beamDamageDef>
<!-- 消除射线偏移的参数 -->
<beamFullWidthRange>1000</beamFullWidthRange>
<beamWidth>-1</beamWidth>
<beamMaxDeviation>0</beamMaxDeviation>
<beamCurvature>0</beamCurvature>
<beamStartOffset>0</beamStartOffset>
<!-- 视觉和音效 -->
<muzzleFlashScale>0</muzzleFlashScale>
<soundCastBeam>BeamGraser_Shooting</soundCastBeam>
<beamGroundFleckDef>Fleck_BeamBurn</beamGroundFleckDef>
<beamFleckChancePerTick>0.32</beamFleckChancePerTick>
<beamMoteDef>Mote_Wula_Dark_Matter_Beam</beamMoteDef>
<beamEndEffecterDef>GraserBeam_End</beamEndEffecterDef>
<screenShakeFactor>0.35</screenShakeFactor>
<!-- 火焰效果 -->
<beamChanceToStartFire>0.6</beamChanceToStartFire>
<beamChanceToAttachFire>0.6</beamChanceToAttachFire>
<beamFireSizeRange>0.25</beamFireSizeRange>
<!-- 其他射线属性 -->
<beamHitsNeighborCells>true</beamHitsNeighborCells>
<beamLineFleckChanceCurve>
<points>
<li>(0, 0)</li>
<li>(0.65, 0.4)</li>
<li>(1, 0.75)</li>
</points>
</beamLineFleckChanceCurve>
<!-- 攻击目标设置 -->
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<!-- 每发都爆炸 -->
<enableExplosion>true</enableExplosion>
<explosionShotInterval>1</explosionShotInterval>
<explosionRadius>1.8</explosionRadius>
<explosionDamageDef>Wula_Dark_Matter_Flame</explosionDamageDef>
<explosionDamage>15</explosionDamage>
<explosionSound>Explosion_Bomb</explosionSound>
<chanceToStartFire>0.6</chanceToStartFire>
</li>
</verbs>
<tradeability>None</tradeability>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
</ThingDef>
<!-- 暗物质炮 -->
<ThingDef ParentName="BaseHumanMakeableGun">
<defName>WULA_RW_DM_Cannon</defName>
<label>DMc-65"铋晶"</label>
<description>乌拉帝国一线部队携带的高射速反物质射线炮,会扫射敌人并造成范围爆炸,射流掠过时一切如被漩涡吞噬般分崩离析,唯留尘埃飘散。</description>
<techLevel>Ultra</techLevel>
<!-- <techLevel>Spacer</techLevel> -->
<graphicData>
<texPath>Wula/Weapon/WULA_RW_DM_Cannon</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>1.5</drawSize>
</graphicData>
<weaponTags>
<li>Wula_Ranged_Weapon_T4</li>
</weaponTags>
<uiIconScale>0.8</uiIconScale>
<soundInteract>Interact_ChargeRifle</soundInteract>
<recipeMaker>
<recipeUsers Inherit="False">
<li>WULA_Cube_Productor_Energy</li>
</recipeUsers>
<researchPrerequisite>WULA_Synth_Weapon_4_DM_Base_Technology</researchPrerequisite>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<costList Inherit="False">
<Steel>500</Steel>
<Plasteel>300</Plasteel>
<WULA_Dark_Matter_Item>6</WULA_Dark_Matter_Item>
</costList>
<statBases>
<WorkToMake>50000</WorkToMake>
<Mass>10</Mass>
<AccuracyTouch>0.6</AccuracyTouch>
<AccuracyShort>0.6</AccuracyShort>
<AccuracyMedium>0.6</AccuracyMedium>
<AccuracyLong>0.6</AccuracyLong>
<RangedWeapon_Cooldown>2.5</RangedWeapon_Cooldown>
</statBases>
<verbs>
<li Class="WulaFallenEmpire.VerbPropertiesExplosiveBeam">
<verbClass>WulaFallenEmpire.Verb_ShootBeamExplosive</verbClass>
<!-- 基础射线参数 -->
<hasStandardCommand>true</hasStandardCommand>
<warmupTime>1</warmupTime>
<range>22</range>
<burstShotCount>12</burstShotCount>
<ticksBetweenBurstShots>6</ticksBetweenBurstShots>
<beamDamageDef>Wula_Dark_Matter_Beam</beamDamageDef>
<!-- 消除射线偏移的参数 -->
<!-- <beamFullWidthRange>1000</beamFullWidthRange>
<beamWidth>-1</beamWidth>
<beamMaxDeviation>0</beamMaxDeviation>
<beamCurvature>0</beamCurvature>
<beamStartOffset>0</beamStartOffset> -->
<beamFullWidthRange>11</beamFullWidthRange>
<beamWidth>6</beamWidth>
<beamMaxDeviation>0.5</beamMaxDeviation>
<beamCurvature>0.6</beamCurvature>
<beamStartOffset>0.5</beamStartOffset>
<!-- 视觉和音效 -->
<muzzleFlashScale>0</muzzleFlashScale>
<soundCastBeam>BeamGraser_Shooting</soundCastBeam>
<beamGroundFleckDef>Fleck_BeamBurn</beamGroundFleckDef>
<beamFleckChancePerTick>0.32</beamFleckChancePerTick>
<beamMoteDef>Mote_Wula_Dark_Matter_Beam</beamMoteDef>
<beamEndEffecterDef>GraserBeam_End</beamEndEffecterDef>
<screenShakeFactor>0.45</screenShakeFactor>
<!-- 火焰效果 -->
<beamChanceToStartFire>0.6</beamChanceToStartFire>
<beamChanceToAttachFire>0.6</beamChanceToAttachFire>
<beamFireSizeRange>0.25</beamFireSizeRange>
<!-- 其他射线属性 -->
<beamHitsNeighborCells>true</beamHitsNeighborCells>
<beamLineFleckChanceCurve>
<points>
<li>(0, 0)</li>
<li>(0.65, 0.4)</li>
<li>(1, 0.75)</li>
</points>
</beamLineFleckChanceCurve>
<!-- 攻击目标设置 -->
<targetParams>
<canTargetLocations>true</canTargetLocations>
</targetParams>
<!-- 爆炸参数 -->
<enableExplosion>true</enableExplosion>
<explosionShotInterval>2</explosionShotInterval>
<explosionRadius>3</explosionRadius>
<explosionDamageDef>Wula_Dark_Matter_Flame</explosionDamageDef>
<explosionDamage>25</explosionDamage>
<explosionSound>Explosion_Bomb</explosionSound>
<chanceToStartFire>0.6</chanceToStartFire>
</li>
</verbs>
<tradeability>None</tradeability>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
</ThingDef>
</Defs>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 萨克森装备 -->
<ThingDef Name="WULA_WM_Panzer_Autocannon" ParentName="BaseWeaponTurret">
<defName>WULA_WM_Panzer_Autocannon</defName>
@@ -389,6 +388,4 @@
</li>
</verbs>
</ThingDef>
<!-- 神人大鹅武器 -->
</Defs>

View File

@@ -0,0 +1,71 @@
using RimWorld;
using RimWorld.QuestGen;
using System;
using System.Collections.Generic;
using Verse;
namespace WulaFallenEmpire
{
public class QuestNode_Root_EventLetter : QuestNode
{
// 直接指定 EventDef 名称
public SlateRef<string> eventDefName;
// 移除原有的向后兼容字段,因为我们只需要 EventDef 接口
// public SlateRef<string> letterLabel;
// public SlateRef<string> letterTitle;
// public SlateRef<string> letterText;
// public List<Option> options = new List<Option>();
protected override void RunInt()
{
Slate slate = QuestGen.slate;
string defName = eventDefName.GetValue(slate);
if (!defName.NullOrEmpty())
{
OpenEventDefWindow(defName);
}
else
{
Log.Error("[WulaFallenEmpire] QuestNode_Root_EventLetter: eventDefName is not specified.");
}
}
protected override bool TestRunInt(Slate slate)
{
string defName = eventDefName.GetValue(slate);
if (defName.NullOrEmpty())
{
Log.Error("[WulaFallenEmpire] QuestNode_Root_EventLetter: eventDefName is not specified.");
return false;
}
EventDef eventDef = DefDatabase<EventDef>.GetNamed(defName, false);
if (eventDef == null)
{
Log.Error($"[WulaFallenEmpire] QuestNode_Root_EventLetter: EventDef '{defName}' not found.");
return false;
}
return true;
}
/// <summary>
/// 直接打开指定的 EventDef 窗口
/// </summary>
private void OpenEventDefWindow(string defName)
{
EventDef eventDef = DefDatabase<EventDef>.GetNamed(defName);
if (eventDef != null)
{
Find.WindowStack.Add((Window)Activator.CreateInstance(eventDef.windowType, eventDef));
}
else
{
Log.Error($"[WulaFallenEmpire] QuestNode_Root_EventLetter: Could not find EventDef '{defName}'");
}
}
}
}

View File

@@ -108,8 +108,7 @@
<Compile Include="EventSystem\EventDef.cs" />
<Compile Include="EventSystem\EventUIConfigDef.cs" />
<Compile Include="EventSystem\EventVariableManager.cs" />
<Compile Include="EventSystem\Letter_EventChoice.cs" />
<Compile Include="EventSystem\QuestNode_Root_EventLetter.cs" />
<Compile Include="EventSystem\QuestNode\QuestNode_Root_EventLetter.cs" />
<Compile Include="Flyover\ThingclassFlyOver.cs" />
<Compile Include="Flyover\WULA_AircraftHangar\CompAbilityEffect_AircraftStrike.cs" />
<Compile Include="Flyover\WULA_AircraftHangar\CompAircraftHangar.cs" />