Merge branch 'main' of https://git.ra3battle.cn/Kalospacer/WulaFallenEmpireRW
This commit is contained in:
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -57,7 +57,7 @@
|
||||
<li>Wula_FM_Switc_None</li>
|
||||
<li>Wula_FM_Switc_Artillery</li>
|
||||
<li>Wula_FM_Switc_Aircraft</li>
|
||||
<li>Wula_FM_Switc_Construction</li>
|
||||
<!-- <li>Wula_FM_Switc_Construction</li> -->
|
||||
</availableHediffs>
|
||||
<defaultHediffIndex>0</defaultHediffIndex>
|
||||
<gizmoIconPath>Wula/UI/Commands/WULA_Antenna_Switch</gizmoIconPath>
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
</li>
|
||||
<li Class="QuestNode_InspectString">
|
||||
<targets>$lodgers</targets>
|
||||
<inspectString TKey="InspectStringDepartShuttle">Should depart on shuttle</inspectString>
|
||||
<inspectString TKey="InspectStringDepartShuttle">应该乘坐穿梭机离开</inspectString>
|
||||
</li>
|
||||
<li Class="QuestNode_Letter">
|
||||
<label TKey="LetterLabelShuttleArrived">Shuttle arrived</label>
|
||||
|
||||
@@ -627,45 +627,4 @@
|
||||
<li>WULA_Colony_License_LV3_Technology</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
|
||||
<!-- 植入物 -->
|
||||
<ResearchProjectDef ParentName="WULAtechBase">
|
||||
<defName>WULA_Synth_Addons_Technology</defName>
|
||||
<researchViewX>3.00</researchViewX>
|
||||
<researchViewY>1.50</researchViewY>
|
||||
<label>基础植入物加工许可</label>
|
||||
<description>获取构建乌拉帝国合成人基础植入物的技术,用以增强乌拉帝国合成人的机体性能。</description>
|
||||
<baseCost>800</baseCost>
|
||||
<prerequisites>
|
||||
<li>WULA_Synth_Productor_Technology</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="WULAtechBase">
|
||||
<defName>WULA_Synth_Antenna_Technology</defName>
|
||||
<researchViewX>5.00</researchViewX>
|
||||
<researchViewY>1.50</researchViewY>
|
||||
<label>蜂群节点加工许可</label>
|
||||
<description>获取特殊构型的机械乌拉天线,使得这些经过天线改装的乌拉可以胜任指挥任务。</description>
|
||||
<baseCost>1000</baseCost>
|
||||
<hiddenPrerequisites>
|
||||
<li>WULA_Synth_Addons_Technology</li>
|
||||
</hiddenPrerequisites>
|
||||
<prerequisites>
|
||||
<li>WULA_Colony_License_LV2_Technology</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
<ResearchProjectDef ParentName="WULAtechBase">
|
||||
<defName>WULA_Synth_Addons_2_Technology</defName>
|
||||
<label>高级植入物加工许可</label>
|
||||
<description>获取构建乌拉帝国合成人进阶植入物的技术,用以增强乌拉帝国合成人的机体性能。</description>
|
||||
<baseCost>3600</baseCost>
|
||||
<researchViewX>9.00</researchViewX>
|
||||
<researchViewY>1.50</researchViewY>
|
||||
<hiddenPrerequisites>
|
||||
<li>WULA_Synth_Antenna_Technology</li>
|
||||
</hiddenPrerequisites>
|
||||
<prerequisites>
|
||||
<li>WULA_Colony_License_LV3_Technology</li>
|
||||
</prerequisites>
|
||||
</ResearchProjectDef>
|
||||
</Defs>
|
||||
@@ -716,4 +716,66 @@
|
||||
<li>Placeworker_AttachedToWall</li>
|
||||
</placeWorkers>
|
||||
</ThingDef>
|
||||
|
||||
<!-- 装饰品 -->
|
||||
<ThingDef ParentName="BuildingBase">
|
||||
<defName>WULA_Sky_Lock</defName>
|
||||
<label>天锁</label>
|
||||
<description>天锁</description>
|
||||
<thingClass>Building</thingClass>
|
||||
<preventDroppingThingsOn>true</preventDroppingThingsOn>
|
||||
<altitudeLayer>Building</altitudeLayer>
|
||||
<pathCost>50</pathCost>
|
||||
<blockWind>true</blockWind>
|
||||
<passability>PassThroughOnly</passability>
|
||||
<fillPercent>1</fillPercent>
|
||||
<size>(3,3)</size>
|
||||
<drawHighlight>true</drawHighlight>
|
||||
<highlightColor>(0.56, 0.62, 0.9)</highlightColor>
|
||||
<graphicData>
|
||||
<texPath>Wula/Building/WULA_Fake_Fighter_Drone_Building</texPath>
|
||||
<graphicClass>Graphic_Single</graphicClass>
|
||||
<shaderType>TransparentPostLight</shaderType>
|
||||
<drawSize>(3,3)</drawSize>
|
||||
<color>(195,195,195,255)</color>
|
||||
</graphicData>
|
||||
<statBases>
|
||||
<MaxHitPoints>100</MaxHitPoints>
|
||||
<Flammability>0.5</Flammability>
|
||||
<WorkToBuild>36000</WorkToBuild>
|
||||
<Mass>125</Mass>
|
||||
<Comfort>0.65</Comfort>
|
||||
</statBases>
|
||||
<costList>
|
||||
<WULA_Alloy>50</WULA_Alloy>
|
||||
<ComponentIndustrial>1</ComponentIndustrial>
|
||||
</costList>
|
||||
<!-- <designationCategory>WULA_Buildings</designationCategory> -->
|
||||
<tickerType>Normal</tickerType>
|
||||
<canOverlapZones>true</canOverlapZones>
|
||||
<rotatable>true</rotatable>
|
||||
<hasInteractionCell>false</hasInteractionCell>
|
||||
<defaultPlacingRot>East</defaultPlacingRot>
|
||||
<selectable>true</selectable>
|
||||
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
|
||||
<soundImpactDefault>BulletImpact_Metal</soundImpactDefault>
|
||||
<preventSkyfallersLandingOn>true</preventSkyfallersLandingOn>
|
||||
<drawerType>RealtimeOnly</drawerType>
|
||||
<repairEffect>ConstructMetal</repairEffect>
|
||||
<forceDebugSpawnable>true</forceDebugSpawnable>
|
||||
<building>
|
||||
<destroySound>BuildingDestroyed_Metal_Big</destroySound>
|
||||
<paintable>true</paintable>
|
||||
<isInert>true</isInert>
|
||||
</building>
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_DamageReceiver">
|
||||
<maxDamageCapacity>5000</maxDamageCapacity>
|
||||
<damageDecayRate>10</damageDecayRate>
|
||||
<damageDecayInterval>30</damageDecayInterval>
|
||||
<showDamageBar>true</showDamageBar>
|
||||
<canBeDestroyedByDamage>true</canBeDestroyedByDamage>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
</Defs>
|
||||
@@ -434,7 +434,7 @@
|
||||
<capacities>
|
||||
<li>WULA_MW_Breaker_Bar_Demolish</li>
|
||||
</capacities>
|
||||
<power>35</power>
|
||||
<power>45</power>
|
||||
<cooldownTime>3</cooldownTime>
|
||||
<armorPenetration>2</armorPenetration>
|
||||
<soundMeleeHit>WULA_MW_Breaker_Bar_Hit</soundMeleeHit>
|
||||
@@ -467,9 +467,9 @@
|
||||
<li Class="WulaFallenEmpire.CompProperties_Cleave">
|
||||
<cleaveAngle>90</cleaveAngle>
|
||||
<cleaveRange>2.5</cleaveRange>
|
||||
<cleaveDamageFactor>0.5</cleaveDamageFactor>
|
||||
<cleaveDamageFactor>0.8</cleaveDamageFactor>
|
||||
<damageDowned>false</damageDowned>
|
||||
<explosionDamageDef>Blunt</explosionDamageDef>
|
||||
<explosionDamageDef>Demolish</explosionDamageDef>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_CustomUniqueWeapon" MayRequire="Ludeon.RimWorld.Odyssey">
|
||||
<forcedTraits>
|
||||
@@ -505,8 +505,8 @@
|
||||
</ManeuverDef>
|
||||
<AbilityDef ParentName="AbilityTouchBase">
|
||||
<defName>WULA_MW_Breaker_Bar_Ability</defName>
|
||||
<label>全功率上挑</label>
|
||||
<description>将PMb-97"破墙槌"的锤头加到最大压强,随后挥出向上的一击,以突破严密的人墙。即使敌人侥幸存活,也会眩晕并被砸飞出一段距离。</description>
|
||||
<label>破阵重击</label>
|
||||
<description>将PMb-97"破墙槌"的锤头加到最大压强,随后挥出必中的一击,以突破严密的人墙——即使敌人侥幸存活,也会头晕目眩并被砸飞出一段距离。</description>
|
||||
<iconPath>UI/Abilities/UnnaturalHealing</iconPath>
|
||||
<cooldownTicksRange>300</cooldownTicksRange> <!-- 6 days -->
|
||||
<showPsycastEffects>false</showPsycastEffects>
|
||||
@@ -516,7 +516,7 @@
|
||||
<verbClass>Verb_CastAbilityTouch</verbClass>
|
||||
<drawAimPie>false</drawAimPie>
|
||||
<range>-1</range>
|
||||
<warmupTime>0.5</warmupTime>
|
||||
<warmupTime>1</warmupTime>
|
||||
<soundCast>WULA_MW_Breaker_Bar_Hit</soundCast>
|
||||
<targetParams>
|
||||
<canTargetLocations>false</canTargetLocations>
|
||||
@@ -527,7 +527,7 @@
|
||||
<comps>
|
||||
<li Class="WulaFallenEmpire.CompProperties_StunKnockback">
|
||||
<damageDef>Demolish</damageDef>
|
||||
<damageAmount>80</damageAmount>
|
||||
<damageAmount>60</damageAmount>
|
||||
<armorPenetration>2</armorPenetration>
|
||||
<stunTicks>300</stunTicks>
|
||||
<maxKnockbackDistance>8</maxKnockbackDistance>
|
||||
|
||||
@@ -1614,6 +1614,9 @@
|
||||
|
||||
<MaxFlightTime>9999</MaxFlightTime>
|
||||
<FlightCooldown>0</FlightCooldown>
|
||||
|
||||
<!-- 心灵敏感,很低 -->
|
||||
<PsychicSensitivity>0.25</PsychicSensitivity>
|
||||
</statBases>
|
||||
<race>
|
||||
<body>Mech_Warqueen</body>
|
||||
@@ -1643,7 +1646,6 @@
|
||||
</li>
|
||||
</tools>
|
||||
<comps>
|
||||
<!-- 护盾无法在此绘制 -->
|
||||
<li Class="WulaFallenEmpire.CompProperties_AreaShield">
|
||||
<radius>9</radius>
|
||||
<baseHitPoints>500</baseHitPoints>
|
||||
@@ -1670,6 +1672,15 @@
|
||||
<reflectCost>0</reflectCost>
|
||||
<reflectEffecter>Interceptor_BlockedProjectile</reflectEffecter>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_DamageTransfer">
|
||||
<damageTransferRatio>0.75</damageTransferRatio>
|
||||
<maxTransferRange>25</maxTransferRange>
|
||||
<requireLineOfSight>false</requireLineOfSight>
|
||||
<healthThreshold>
|
||||
<min>0.1</min>
|
||||
<max>0.9</max>
|
||||
</healthThreshold>
|
||||
</li>
|
||||
<!-- 飞行组件 -->
|
||||
<li Class="WulaFallenEmpire.CompProperties_PawnFlight">
|
||||
|
||||
|
||||
@@ -7,56 +7,32 @@
|
||||
<li>questDescription->殖民地已经承接了视察任务。\n\n行星封锁机关的总控AI已经派遣了自己的一个分体和护卫队抵达殖民地。考察持续12天,她会检查殖民地方方面面的运转情况,你需要确保其心情始终高于25%。考察完成后,她和卫队会搭乘穿梭机离开,如果一切顺利你们将获得殖民地晋升的机会,以解锁更多的许可科技。\n\n小心,附近的敌对派系已经知道了殖民地来了一个大人物,这些劫掠者会尝试袭击殖民地并抓住这个分体,你可能需要面对大量袭击!</li>
|
||||
</WULA_Colony_Promotion.questDescriptionRules.rulesStrings>
|
||||
<WULA_Colony_Promotion.LetterLabelFactionBecameHostile.slateRef>任务失败:[resolvedQuestName]</WULA_Colony_Promotion.LetterLabelFactionBecameHostile.slateRef>
|
||||
<!-- EN: [faction_name] became hostile to you. -->
|
||||
|
||||
<WULA_Colony_Promotion.InspectStringDepartShuttle.slateRef>应该乘坐穿梭机离开</WULA_Colony_Promotion.InspectStringDepartShuttle.slateRef>
|
||||
<WULA_Colony_Promotion.LetterTextFactionBecameHostile.slateRef>[faction_name]开始敌视你。</WULA_Colony_Promotion.LetterTextFactionBecameHostile.slateRef>
|
||||
<!-- EN: Shuttle destroyed -->
|
||||
<WULA_Colony_Promotion.LetterLabelShuttleDestroyed.slateRef>穿梭机被破坏</WULA_Colony_Promotion.LetterLabelShuttleDestroyed.slateRef>
|
||||
<!-- EN: The shuttle sent to drop off [pawnsLabelDef] has been destroyed. You have failed the quest '[resolvedQuestName]'.\n\nYour relations with [asker_faction_name] have changed by [goodwillChangeOnShuttleDestroyed]. -->
|
||||
<WULA_Colony_Promotion.LetterTextShuttleDestroyed.slateRef>被派遣来运输[asker_nameDef]的穿梭机已被破坏。</WULA_Colony_Promotion.LetterTextShuttleDestroyed.slateRef>
|
||||
<!-- EN: [asker_faction_leaderTitle] arrived -->
|
||||
<WULA_Colony_Promotion.LetterLabelAskerArrived.slateRef>[asker_nameDef]已抵达</WULA_Colony_Promotion.LetterLabelAskerArrived.slateRef>
|
||||
<!-- EN: The [asker_faction_leaderTitle] of [asker_faction_name], has arrived.\n\nProtect him and satisfy his royal needs until the shuttle arrives in [shuttleDelayTicks_duration].\n\nAll of you can accompany the [asker_faction_leaderTitle] on the shuttle and travel to the Imperial flotilla to begin a new life. -->
|
||||
<WULA_Colony_Promotion.LetterTextAskerArrived.slateRef>[asker_nameDef]的分体和她的卫队已经抵达殖民地。\n\n你必须在穿梭机抵达前[shuttleDelayTicks_duration]内为[asker_objective]提供护卫并且满足[asker_possessive]各种需求。</WULA_Colony_Promotion.LetterTextAskerArrived.slateRef>
|
||||
<!-- EN: Guest died: {SUBJECT_definite} -->
|
||||
<WULA_Colony_Promotion.LetterLabelGuestDied.slateRef>宾客{SUBJECT_definite}死亡。</WULA_Colony_Promotion.LetterLabelGuestDied.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has died. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextGuestDied.slateRef>需要你护卫的{SUBJECT_definite}已经死亡。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextGuestDied.slateRef>
|
||||
<!-- EN: Should depart on shuttle -->
|
||||
<WULA_Colony_Promotion.InspectStringDepartShuttle.slateRef>应该乘坐穿梭机离开</WULA_Colony_Promotion.InspectStringDepartShuttle.slateRef>
|
||||
<!-- EN: Shuttle arrived -->
|
||||
|
||||
<WULA_Colony_Promotion.LetterLabelShuttleArrived.slateRef>穿梭机已抵达</WULA_Colony_Promotion.LetterLabelShuttleArrived.slateRef>
|
||||
<!-- EN: The shuttle has arrived to collect the [asker_faction_leaderTitle].\n\nAll of you can accompany the [asker_faction_leaderTitle] on the shuttle and travel to the Imperial flotilla to begin a new life. -->
|
||||
<WULA_Colony_Promotion.LetterTextShuttleArrived.slateRef>穿梭机已经前来迎接[asker_nameDef]。</WULA_Colony_Promotion.LetterTextShuttleArrived.slateRef>
|
||||
<!-- EN: {SUBJECT_bestRoyalTitle} unhappy -->
|
||||
<WULA_Colony_Promotion.LetterLabelSubjectUnhappy.slateRef>{SUBJECT_bestRoyalTitle}情绪低落</WULA_Colony_Promotion.LetterLabelSubjectUnhappy.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect and keep happy, has been below the minimum mood of [lodgersMoodThreshold] too long. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextSubjectUnhappy.slateRef>需要你护卫和满足需求的{SUBJECT_definite},其情绪值已经长时间低于最低限度[lodgersMoodThreshold]。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextSubjectUnhappy.slateRef>
|
||||
<!-- EN: Guest captured: {SUBJECT_definite} -->
|
||||
<WULA_Colony_Promotion.LetterLabelGuestCaptured.slateRef>宾客{SUBJECT_definite}被俘。</WULA_Colony_Promotion.LetterLabelGuestCaptured.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has been arrested. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextGuestCaptured.slateRef>需要你护卫的{SUBJECT_definite}已经被俘虏。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextGuestCaptured.slateRef>
|
||||
<!-- EN: Unauthorized surgery: {SUBJECT_definite} -->
|
||||
<WULA_Colony_Promotion.LetterLabelUnauthorizedSurgery.slateRef>未授权手术:{SUBJECT_definite}</WULA_Colony_Promotion.LetterLabelUnauthorizedSurgery.slateRef>
|
||||
<!-- EN: Unauthorized, violating surgery has been performed on {SUBJECT_definite}, who you were charged to protect. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextUnauthorizedSurgery.slateRef>需要你护卫的{SUBJECT_definite}接受了一场未授权的多余手术。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextUnauthorizedSurgery.slateRef>
|
||||
<!-- EN: Xenogerm absorbed: {SUBJECT_definite} -->
|
||||
<WULA_Colony_Promotion.root.nodes.lodgersXenogermAbsorbed.node.nodes.Letter.label.slateRef>异种胚芽被吸收</WULA_Colony_Promotion.root.nodes.lodgersXenogermAbsorbed.node.nodes.Letter.label.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has had {SUBJECT_possessive} xenogerm forcibly absorbed. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.root.nodes.lodgersXenogermAbsorbed.node.nodes.Letter.text.slateRef>指定由你保护的{SUBJECT_definite}在你的殖民地被吸收了异种胚芽。[failLetterEndingCommon]</WULA_Colony_Promotion.root.nodes.lodgersXenogermAbsorbed.node.nodes.Letter.text.slateRef>
|
||||
<!-- EN: Guest lost: {SUBJECT_definite} -->
|
||||
<WULA_Colony_Promotion.LetterLabelGuestLost.slateRef>宾客失踪:{SUBJECT_definite}</WULA_Colony_Promotion.LetterLabelGuestLost.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has left the assigned settlement. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextGuestLost.slateRef>需要你护卫的{SUBJECT_definite}失踪在你的殖民地。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextGuestLost.slateRef>
|
||||
<!-- EN: Shuttle destroyed -->
|
||||
<WULA_Colony_Promotion.LetterLabelShuttleDestroyed.slateRef>穿梭机已被毁</WULA_Colony_Promotion.LetterLabelShuttleDestroyed.slateRef>
|
||||
<!-- EN: The shuttle sent to collect the [asker_faction_leaderTitle] has been destroyed. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextShuttleDestroyed.slateRef>前来迎接[asker_faction_leaderTitle]的穿梭机被摧毁了。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextShuttleDestroyed.slateRef>
|
||||
<!-- EN: Guest lost: {SUBJECT_definite} -->
|
||||
<WULA_Colony_Promotion.LetterLabelLodgerRanWild.slateRef>宾客失踪:{SUBJECT_definite}</WULA_Colony_Promotion.LetterLabelLodgerRanWild.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has run wild. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextLodgerRanWild.slateRef>需要你护卫的{SUBJECT_definite}在你的殖民地回归自然。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextLodgerRanWild.slateRef>
|
||||
<!-- EN: Quest failed: [resolvedQuestName] -->
|
||||
<WULA_Colony_Promotion.LetterLabelShuttleSentUnsatisfied.slateRef>任务失败:[resolvedQuestName]</WULA_Colony_Promotion.LetterLabelShuttleSentUnsatisfied.slateRef>
|
||||
<!-- EN: The shuttle sent to collect the [asker_faction_leaderTitle] has departed without [asker_objective]. [asker_pronoun] will now leave on foot. [failLetterEndingCommon] -->
|
||||
<WULA_Colony_Promotion.LetterTextShuttleSentUnsatisfied.slateRef>前来迎接[asker_faction_leaderTitle]的穿梭机没有接到[asker_objective]。[asker_pronoun]现在只能走回去。[failLetterEndingCommon]</WULA_Colony_Promotion.LetterTextShuttleSentUnsatisfied.slateRef>
|
||||
</LanguageData>
|
||||
@@ -9,50 +9,27 @@
|
||||
<WULA_Intro_Spy.LetterLabelChasing.slateRef>{BASELABEL} 追捕[../asker_nameDef]</WULA_Intro_Spy.LetterLabelChasing.slateRef>
|
||||
<WULA_Intro_Spy.LetterTextChasing.slateRef>{BASETEXT}\n\n[enemyFaction_pawnsPlural]来此追捕[../asker_nameDef]。</WULA_Intro_Spy.LetterTextChasing.slateRef>
|
||||
|
||||
|
||||
<WULA_Intro_Spy.InspectStringDepartShuttle.slateRef>应该乘坐穿梭机出发</WULA_Intro_Spy.InspectStringDepartShuttle.slateRef>
|
||||
<!-- EN: Shuttle arrived -->
|
||||
<WULA_Intro_Spy.LetterLabelShuttleArrived.slateRef>穿梭机已抵达</WULA_Intro_Spy.LetterLabelShuttleArrived.slateRef>
|
||||
<!-- EN: The shuttle has arrived to collect [asker_nameDef]. -->
|
||||
<WULA_Intro_Spy.LetterTextShuttleArrived.slateRef>前来迎接[asker_nameDef]的穿梭机已抵达。</WULA_Intro_Spy.LetterTextShuttleArrived.slateRef>
|
||||
<!-- EN: Guest died: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.LetterLabelGuestDied.slateRef>宾客已死亡:{SUBJECT_definite}</WULA_Intro_Spy.LetterLabelGuestDied.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has died. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.LetterTextGuestDied.slateRef>需要你小心保护的{SUBJECT_definite}已经死亡。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextGuestDied.slateRef>
|
||||
<!-- EN: Guest left behind: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.root.nodes.askerLeftBehind.node.nodes.Letter.label.slateRef>宾客被遗弃:{SUBJECT_definite}</WULA_Intro_Spy.root.nodes.askerLeftBehind.node.nodes.Letter.label.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has been left behind. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.root.nodes.askerLeftBehind.node.nodes.Letter.text.slateRef>需要你小心保护的{SUBJECT_definite}被遗弃。[failLetterEndingCommon]</WULA_Intro_Spy.root.nodes.askerLeftBehind.node.nodes.Letter.text.slateRef>
|
||||
<!-- EN: Unauthorized surgery: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.LetterLabelUnauthorizedSurgery.slateRef>未授权手术:{SUBJECT_definite}</WULA_Intro_Spy.LetterLabelUnauthorizedSurgery.slateRef>
|
||||
<!-- EN: 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] -->
|
||||
<WULA_Intro_Spy.LetterTextUnauthorizedSurgery.slateRef>需要你小心保护的{SUBJECT_definite}接受了一次未授权的额外手术。因为你违规在先,[asker_pronoun]将要离开此处。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextUnauthorizedSurgery.slateRef>
|
||||
<!-- EN: Xenogerm absorbed: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.root.nodes.askerXenogermAbsorbed.node.nodes.Letter.label.slateRef>异种胚芽被吸收:{SUBJECT_definite}</WULA_Intro_Spy.root.nodes.askerXenogermAbsorbed.node.nodes.Letter.label.slateRef>
|
||||
<!-- EN: {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] -->
|
||||
<WULA_Intro_Spy.root.nodes.askerXenogermAbsorbed.node.nodes.Letter.text.slateRef>指定由你保护的{SUBJECT_definite}在你的殖民地被吸收了异种胚芽。这是一种侵犯行为,{SUBJECT_pronoun}现在将会直接离开[failLetterEndingCommon]。</WULA_Intro_Spy.root.nodes.askerXenogermAbsorbed.node.nodes.Letter.text.slateRef>
|
||||
<!-- EN: Captured: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.LetterLabelCaptured.slateRef>已被俘:{SUBJECT_definite}</WULA_Intro_Spy.LetterLabelCaptured.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to host, has been arrested. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.LetterTextCaptured.slateRef>需要你小心保护的{SUBJECT_definite}已被俘虏。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextCaptured.slateRef>
|
||||
<!-- EN: Guest lost: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.LetterLabelGuestLost.slateRef>宾客失踪:{SUBJECT_definite}</WULA_Intro_Spy.LetterLabelGuestLost.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has left the designated settlement. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.LetterTextGuestLost.slateRef>需要你小心保护的{SUBJECT_definite}在你的殖民地回归自然。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextGuestLost.slateRef>
|
||||
<!-- EN: Guest lost: {SUBJECT_definite} -->
|
||||
<WULA_Intro_Spy.LetterLabelLodgerRanWild.slateRef>宾客失踪:{SUBJECT_definite}</WULA_Intro_Spy.LetterLabelLodgerRanWild.slateRef>
|
||||
<!-- EN: {SUBJECT_definite}, who you were charged to protect, has run wild. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.LetterTextLodgerRanWild.slateRef>需要你小心保护的{SUBJECT_definite}在你的殖民地回归自然。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextLodgerRanWild.slateRef>
|
||||
<!-- EN: Shuttle destroyed -->
|
||||
<WULA_Intro_Spy.LetterLabelShuttleDestroyed.slateRef>穿梭机被毁</WULA_Intro_Spy.LetterLabelShuttleDestroyed.slateRef>
|
||||
<!-- EN: The shuttle sent to collect [asker_nameDef] has been destroyed. [asker_pronoun] will now leave on foot. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.LetterTextShuttleDestroyed.slateRef>前来迎接[asker_nameDef]的穿梭机已被毁。[asker_pronoun]现在只能走回去了。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextShuttleDestroyed.slateRef>
|
||||
<!-- EN: Shuttle left behind -->
|
||||
<WULA_Intro_Spy.root.nodes.pickupShipThingLeftBehind.node.nodes.Letter.label.slateRef>穿梭机被遗弃</WULA_Intro_Spy.root.nodes.pickupShipThingLeftBehind.node.nodes.Letter.label.slateRef>
|
||||
<!-- EN: The shuttle sent to collect [asker_nameDef] has been left behind. [asker_pronoun] will now leave on foot. -->
|
||||
<WULA_Intro_Spy.root.nodes.pickupShipThingLeftBehind.node.nodes.Letter.text.slateRef>前来迎接[asker_nameDef]的穿梭机已被遗弃。[asker_pronoun]现在只能走回去了。</WULA_Intro_Spy.root.nodes.pickupShipThingLeftBehind.node.nodes.Letter.text.slateRef>
|
||||
<!-- EN: Quest failed: [resolvedQuestName] -->
|
||||
<WULA_Intro_Spy.LetterLabelQuestFailed.slateRef>任务失败:[resolvedQuestName]</WULA_Intro_Spy.LetterLabelQuestFailed.slateRef>
|
||||
<!-- EN: The shuttle sent to collect [asker_nameDef] has departed without [asker_objective]. [asker_pronoun] will now leave on foot. [failLetterEndingCommon] -->
|
||||
<WULA_Intro_Spy.LetterTextQuestFailed.slateRef>前来迎接[asker_nameDef]的穿梭机在离开时因为一些原因落下了[asker_objective]。[asker_pronoun]现在只能走回去了。[failLetterEndingCommon]</WULA_Intro_Spy.LetterTextQuestFailed.slateRef>
|
||||
</LanguageData>
|
||||
@@ -215,7 +215,7 @@ namespace WulaFallenEmpire
|
||||
Props.landingSound,
|
||||
false, // 不携带物品
|
||||
null, // 不覆盖起始位置
|
||||
null, // 传递Ability对象而不是CompAbilityEffect
|
||||
parent, // 传递Ability对象而不是CompAbilityEffect
|
||||
new LocalTargetInfo(destination)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
using UnityEngine;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
public class CompDamageReceiver : ThingComp
|
||||
{
|
||||
private CompProperties_DamageReceiver Props => (CompProperties_DamageReceiver)props;
|
||||
|
||||
private float currentDamage;
|
||||
private int lastDamageTick;
|
||||
|
||||
public float CurrentDamage => currentDamage;
|
||||
public float MaxDamageCapacity => Props.maxDamageCapacity;
|
||||
public float DamageRatio => currentDamage / Props.maxDamageCapacity;
|
||||
|
||||
public override void PostExposeData()
|
||||
{
|
||||
base.PostExposeData();
|
||||
Scribe_Values.Look(ref currentDamage, "currentDamage", 0f);
|
||||
Scribe_Values.Look(ref lastDamageTick, "lastDamageTick", 0);
|
||||
}
|
||||
|
||||
public override void CompTick()
|
||||
{
|
||||
base.CompTick();
|
||||
|
||||
// 定期衰减伤害
|
||||
if (Find.TickManager.TicksGame % Props.damageDecayInterval == 0 && currentDamage > 0)
|
||||
{
|
||||
currentDamage = Mathf.Max(0f, currentDamage - Props.damageDecayRate);
|
||||
|
||||
// 如果伤害为0,重置最后伤害时间
|
||||
if (currentDamage <= 0f)
|
||||
{
|
||||
lastDamageTick = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 接收伤害
|
||||
/// </summary>
|
||||
public bool ReceiveDamage(float damageAmount, Pawn sourcePawn = null)
|
||||
{
|
||||
float oldDamage = currentDamage;
|
||||
currentDamage += damageAmount;
|
||||
lastDamageTick = Find.TickManager.TicksGame;
|
||||
|
||||
// 检查是否超过容量
|
||||
if (currentDamage >= Props.maxDamageCapacity)
|
||||
{
|
||||
if (Props.canBeDestroyedByDamage)
|
||||
{
|
||||
// 摧毁建筑
|
||||
parent.Destroy(DestroyMode.Vanish);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 只是达到上限,不再接收更多伤害
|
||||
currentDamage = Props.maxDamageCapacity;
|
||||
}
|
||||
return false; // 无法接收更多伤害
|
||||
}
|
||||
|
||||
// 触发效果
|
||||
OnDamageReceived(damageAmount, sourcePawn);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void OnDamageReceived(float damageAmount, Pawn sourcePawn)
|
||||
{
|
||||
// 记录日志
|
||||
Log.Message($"[DamageReceiver] {parent.Label} 接收 {damageAmount} 点伤害,当前伤害: {currentDamage}/{Props.maxDamageCapacity}");
|
||||
}
|
||||
|
||||
public override void PostDraw()
|
||||
{
|
||||
base.PostDraw();
|
||||
|
||||
// 绘制伤害条
|
||||
if (Props.showDamageBar && currentDamage > 0f)
|
||||
{
|
||||
Vector3 drawPos = parent.DrawPos;
|
||||
drawPos.y += 0.5f; // 在建筑上方显示
|
||||
|
||||
GenDraw.DrawFillableBar(new GenDraw.FillableBarRequest
|
||||
{
|
||||
center = drawPos,
|
||||
size = new Vector2(1f, 0.15f),
|
||||
fillPercent = DamageRatio,
|
||||
filledMat = SolidColorMaterials.SimpleSolidColorMaterial(Color.red),
|
||||
unfilledMat = SolidColorMaterials.SimpleSolidColorMaterial(Color.gray),
|
||||
margin = 0.1f,
|
||||
rotation = Rot4.North
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 获取接收器状态
|
||||
public string GetStatusString()
|
||||
{
|
||||
return $"伤害吸收: {currentDamage:F0}/{Props.maxDamageCapacity:F0} ({DamageRatio * 100:F1}%)";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
using System.Collections.Generic;
|
||||
using Verse.Sound;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
public class CompDamageTransfer : ThingComp
|
||||
{
|
||||
private CompProperties_DamageTransfer Props => (CompProperties_DamageTransfer)props;
|
||||
private Pawn Pawn => (Pawn)parent;
|
||||
|
||||
public override void PostPostApplyDamage(DamageInfo dinfo, float totalDamageDealt)
|
||||
{
|
||||
base.PostPostApplyDamage(dinfo, totalDamageDealt);
|
||||
|
||||
// 检查是否应该转移伤害
|
||||
if (ShouldTransferDamage(dinfo, totalDamageDealt))
|
||||
{
|
||||
TryTransferDamage(dinfo, totalDamageDealt);
|
||||
}
|
||||
}
|
||||
|
||||
private bool ShouldTransferDamage(DamageInfo dinfo, float totalDamageDealt)
|
||||
{
|
||||
if (parent == null || !parent.Spawned)
|
||||
return false;
|
||||
|
||||
// 检查生命值阈值
|
||||
if (Pawn.health != null)
|
||||
{
|
||||
float healthRatio = Pawn.health.summaryHealth.SummaryHealthPercent;
|
||||
if (healthRatio < Props.healthThreshold.min || healthRatio > Props.healthThreshold.max)
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查伤害类型
|
||||
if (!Props.transferAllDamageTypes)
|
||||
{
|
||||
// 这里可以添加特定伤害类型检查
|
||||
// 例如:只转移物理伤害,不转移火焰伤害等
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void TryTransferDamage(DamageInfo dinfo, float totalDamageDealt)
|
||||
{
|
||||
// 计算转移的伤害量
|
||||
float transferDamage = totalDamageDealt * Props.damageTransferRatio;
|
||||
|
||||
// 寻找可用的伤害接收器
|
||||
CompDamageReceiver receiver = FindAvailableDamageReceiver();
|
||||
if (receiver != null)
|
||||
{
|
||||
// 执行伤害转移
|
||||
if (receiver.ReceiveDamage(transferDamage, Pawn))
|
||||
{
|
||||
OnDamageTransferred(dinfo, transferDamage, receiver);
|
||||
|
||||
// 记录日志
|
||||
Log.Message($"[DamageTransfer] {Pawn.LabelShort} 将 {transferDamage} 点伤害转移至 {receiver.parent.Label}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private CompDamageReceiver FindAvailableDamageReceiver()
|
||||
{
|
||||
if (parent?.Map == null)
|
||||
return null;
|
||||
|
||||
var map = parent.Map;
|
||||
var faction = parent.Faction;
|
||||
|
||||
// 搜索范围内的同派系建筑
|
||||
foreach (var thing in GenRadial.RadialDistinctThingsAround(parent.Position, map, Props.maxTransferRange, true))
|
||||
{
|
||||
if (thing is Building building &&
|
||||
building.Faction == faction &&
|
||||
building != parent)
|
||||
{
|
||||
var receiver = building.TryGetComp<CompDamageReceiver>();
|
||||
if (receiver != null && receiver.CurrentDamage < receiver.MaxDamageCapacity)
|
||||
{
|
||||
// 检查视线(如果需要)
|
||||
if (Props.requireLineOfSight)
|
||||
{
|
||||
if (!GenSight.LineOfSight(parent.Position, building.Position, map))
|
||||
continue;
|
||||
}
|
||||
|
||||
return receiver;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void OnDamageTransferred(DamageInfo dinfo, float transferDamage, CompDamageReceiver receiver)
|
||||
{
|
||||
// 创建转移效果
|
||||
if (Props.transferEffecter != null)
|
||||
{
|
||||
Effecter effect = Props.transferEffecter.Spawn();
|
||||
effect.Trigger(new TargetInfo(parent.Position, parent.Map), new TargetInfo(receiver.parent.Position, parent.Map));
|
||||
effect.Cleanup();
|
||||
}
|
||||
|
||||
// 播放音效
|
||||
if (Props.transferSound != null)
|
||||
{
|
||||
Props.transferSound.PlayOneShot(new TargetInfo(parent.Position, parent.Map));
|
||||
}
|
||||
}
|
||||
|
||||
// 获取组件状态
|
||||
public string GetStatusString()
|
||||
{
|
||||
return $"伤害转移: {Props.damageTransferRatio * 100}% (范围: {Props.maxTransferRange})";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
public class CompProperties_DamageReceiver : CompProperties
|
||||
{
|
||||
public float maxDamageCapacity = 1000f; // 最大伤害容量
|
||||
public float damageDecayRate = 5f; // 每 tick 衰减的伤害量
|
||||
public float damageDecayInterval = 60f; // 伤害衰减间隔(ticks)
|
||||
public bool showDamageBar = true; // 是否显示伤害条
|
||||
public bool canBeDestroyedByDamage = true; // 是否可以被伤害摧毁
|
||||
|
||||
public CompProperties_DamageReceiver()
|
||||
{
|
||||
compClass = typeof(CompDamageReceiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
public class CompProperties_DamageTransfer : CompProperties
|
||||
{
|
||||
public float damageTransferRatio = 0.8f; // 伤害转移比例 (80%)
|
||||
public float maxTransferRange = 30f; // 最大转移范围
|
||||
public bool requireLineOfSight = false; // 是否需要视线
|
||||
public bool transferAllDamageTypes = true; // 是否转移所有伤害类型
|
||||
public FloatRange healthThreshold = new FloatRange(0f, 1f); // 生命值阈值(低于此值才触发)
|
||||
|
||||
// 效果设置
|
||||
public EffecterDef transferEffecter;
|
||||
public SoundDef transferSound;
|
||||
|
||||
public CompProperties_DamageTransfer()
|
||||
{
|
||||
compClass = typeof(CompDamageTransfer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using HarmonyLib;
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
[HarmonyPatch(typeof(Pawn), "PostApplyDamage")]
|
||||
public static class Patch_Pawn_PostApplyDamage
|
||||
{
|
||||
[HarmonyPostfix]
|
||||
public static void Postfix(Pawn __instance, DamageInfo dinfo, float totalDamageDealt)
|
||||
{
|
||||
// 检查Pawn是否有伤害转移组件
|
||||
var transferComp = __instance.TryGetComp<CompDamageTransfer>();
|
||||
if (transferComp != null)
|
||||
{
|
||||
// 组件会在PostPostApplyDamage中自动处理
|
||||
// 这里主要用于调试和日志记录
|
||||
Log.Message($"[DamageTransfer] {__instance.LabelShort} 受到 {totalDamageDealt} 点伤害,转移组件已激活");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(Pawn), "PreApplyDamage")]
|
||||
public static class Patch_Pawn_PreApplyDamage
|
||||
{
|
||||
[HarmonyPrefix]
|
||||
public static bool Prefix(Pawn __instance, ref DamageInfo dinfo, out bool __state)
|
||||
{
|
||||
__state = false;
|
||||
|
||||
// 检查Pawn是否有伤害转移组件
|
||||
var transferComp = __instance.TryGetComp<CompDamageTransfer>();
|
||||
if (transferComp != null && __instance.Spawned && !__instance.Dead)
|
||||
{
|
||||
// 这里可以添加预处理逻辑
|
||||
// 例如:在某些条件下完全阻止伤害
|
||||
__state = true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
public static void Postfix(Pawn __instance, DamageInfo dinfo, bool __state)
|
||||
{
|
||||
if (__state)
|
||||
{
|
||||
// 后处理逻辑
|
||||
// 例如:记录伤害转移统计
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -92,8 +92,8 @@
|
||||
<Compile Include="Ability\WULA_AbilitySpawnAligned\CompProperties_AbilitySpawnAligned.cs" />
|
||||
<Compile Include="Ability\WULA_AbilityTeleportSelf\CompAbilityEffect_TeleportSelf.cs" />
|
||||
<Compile Include="Ability\WULA_AbilityTeleportSelf\CompProperties_AbilityTeleportSelf.cs" />
|
||||
<Compile Include="Ability\WULA_StunKnockback\CompAbilityEffect_StunKnockback.cs" />
|
||||
<Compile Include="Ability\WULA_StunKnockback\CompProperties_StunKnockback.cs" />
|
||||
<Compile Include="Ability\WULA_AbilityStunKnockback\CompAbilityEffect_StunKnockback.cs" />
|
||||
<Compile Include="Ability\WULA_AbilityStunKnockback\CompProperties_StunKnockback.cs" />
|
||||
<Compile Include="BuildingComp\Building_ExtraGraphics.cs" />
|
||||
<Compile Include="BuildingComp\Building_MapObserver.cs" />
|
||||
<Compile Include="BuildingComp\WULA_BuildingBombardment\CompBuildingBombardment.cs" />
|
||||
@@ -270,6 +270,11 @@
|
||||
<Compile Include="ThingComp\WULA_AreaTeleporter\ThingComp_AreaTeleporter.cs" />
|
||||
<Compile Include="ThingComp\WULA_CustomUniqueWeapon\CompCustomUniqueWeapon.cs" />
|
||||
<Compile Include="ThingComp\WULA_CustomUniqueWeapon\CompProperties_CustomUniqueWeapon.cs" />
|
||||
<Compile Include="ThingComp\WULA_DamageReceiver\CompDamageReceiver.cs" />
|
||||
<Compile Include="ThingComp\WULA_DamageReceiver\CompDamageTransfer.cs" />
|
||||
<Compile Include="ThingComp\WULA_DamageReceiver\CompProperties_DamageReceiver.cs" />
|
||||
<Compile Include="ThingComp\WULA_DamageReceiver\CompProperties_DamageTransfer.cs" />
|
||||
<Compile Include="ThingComp\WULA_DamageReceiver\Patch_Pawn_DamageTransfer.cs" />
|
||||
<Compile Include="ThingComp\WULA_GiveHediffsInRange\CompGiveHediffsInRange.cs" />
|
||||
<Compile Include="ThingComp\WULA_GiveHediffsInRange\CompProperties_GiveHediffsInRange.cs" />
|
||||
<Compile Include="ThingComp\WULA_MechRepairKit\CompUseEffect_FixAllHealthConditions.cs" />
|
||||
|
||||
Reference in New Issue
Block a user