1
This commit is contained in:
Binary file not shown.
@@ -1904,4 +1904,87 @@
|
|||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</AbilityDef>
|
</AbilityDef>
|
||||||
|
|
||||||
|
<!-- 变异 -->
|
||||||
|
<AbilityDef>
|
||||||
|
<defName>ARA_Incubator_5_EliteReward_Jump</defName>
|
||||||
|
<label>力大砖飞</label>
|
||||||
|
<description>该阿拉克涅督虫变异过的恐怖肌肉可以像弹簧一样将其弹射出去。</description>
|
||||||
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Fighter_Invisibility_jump</iconPath>
|
||||||
|
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||||
|
<hostile>false</hostile>
|
||||||
|
<casterMustBeCapableOfViolence>false</casterMustBeCapableOfViolence>
|
||||||
|
<verbProperties>
|
||||||
|
<verbClass>Verb_CastAbilityJump</verbClass>
|
||||||
|
<violent>false</violent>
|
||||||
|
<forceNormalTimeSpeed>false</forceNormalTimeSpeed>
|
||||||
|
<!-- <warmupTime>0.5</warmupTime> -->
|
||||||
|
<range>18</range>
|
||||||
|
<requireLineOfSight>false</requireLineOfSight>
|
||||||
|
<soundCast>Longjump_Jump</soundCast>
|
||||||
|
<soundLanding>Longjump_Land</soundLanding>
|
||||||
|
<targetParams>
|
||||||
|
<canTargetLocations>true</canTargetLocations>
|
||||||
|
<canTargetPawns>false</canTargetPawns>
|
||||||
|
<canTargetBuildings>false</canTargetBuildings>
|
||||||
|
</targetParams>
|
||||||
|
</verbProperties>
|
||||||
|
<jobDef>CastJump</jobDef>
|
||||||
|
<comps>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||||
|
<customLabel>饮食</customLabel>
|
||||||
|
<showProgressBar>true</showProgressBar>
|
||||||
|
<needDef>Food</needDef>
|
||||||
|
<needCost>0.1</needCost>
|
||||||
|
<failMessage>营养值不足,需要进食</failMessage>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</AbilityDef>
|
||||||
|
<AbilityDef>
|
||||||
|
<defName>ARA_Incubator_5_EliteReward_Charge</defName>
|
||||||
|
<label>无畏冲击</label>
|
||||||
|
<description>对目标发起蓄势冲撞,对路径上的一切造成伤害。在冲击中途经的距离越远,伤害越高。</description>
|
||||||
|
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Ability_TrackingCharge</iconPath> <!-- Placeholder Icon -->
|
||||||
|
<cooldownTicksRange>6000</cooldownTicksRange>
|
||||||
|
<cooldownPerCharge>true</cooldownPerCharge>
|
||||||
|
<aiCanUse>false</aiCanUse>
|
||||||
|
<verbProperties>
|
||||||
|
<verbClass>ArachnaeSwarm.Verb_CastAbilityTrackingCharge</verbClass>
|
||||||
|
<label>追踪冲撞</label>
|
||||||
|
<requireLineOfSight>false</requireLineOfSight>
|
||||||
|
<targetParams>
|
||||||
|
<canTargetPawns>true</canTargetPawns>
|
||||||
|
<canTargetBuildings>true</canTargetBuildings>
|
||||||
|
<canTargetAnimals>true</canTargetAnimals>
|
||||||
|
<canTargetMechs>true</canTargetMechs>
|
||||||
|
<canTargetSelf>false</canTargetSelf>
|
||||||
|
</targetParams>
|
||||||
|
<range>16</range>
|
||||||
|
<warmupTime>1.0</warmupTime>
|
||||||
|
</verbProperties>
|
||||||
|
<comps>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_TrackingCharge">
|
||||||
|
<homingSpeed>1.5</homingSpeed>
|
||||||
|
<initialDamage>10</initialDamage>
|
||||||
|
<damagePerTile>1.2</damagePerTile>
|
||||||
|
<inertiaDistance>6</inertiaDistance>
|
||||||
|
<collisionDamageDef>Demolish</collisionDamageDef>
|
||||||
|
<flyerDef>ARA_Flyer_TrackingCharge</flyerDef>
|
||||||
|
<collisionRadius>1.5</collisionRadius> <!-- Larger collision radius -->
|
||||||
|
<impactSound>Pawn_Melee_BigBash_HitPawn</impactSound>
|
||||||
|
<damageHostileOnly>true</damageHostileOnly> <!-- Set to false to damage everyone in the path -->
|
||||||
|
</li>
|
||||||
|
<li Class="CompProperties_AbilityEffecterOnCaster">
|
||||||
|
<effecterDef>WarTrumpet</effecterDef>
|
||||||
|
<maintainTicks>20</maintainTicks> <!-- Long enough for the "2nd wave" to spawn -->
|
||||||
|
</li>
|
||||||
|
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
|
||||||
|
<customLabel>饮食</customLabel>
|
||||||
|
<showProgressBar>true</showProgressBar>
|
||||||
|
<needDef>Food</needDef>
|
||||||
|
<needCost>0.2</needCost>
|
||||||
|
<failMessage>营养值不足,需要进食</failMessage>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</AbilityDef>
|
||||||
</Defs>
|
</Defs>
|
||||||
@@ -331,6 +331,7 @@
|
|||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarmVerse.HediffCompProperties_ReflectMeleeDamage">
|
<li Class="ArachnaeSwarmVerse.HediffCompProperties_ReflectMeleeDamage">
|
||||||
<reflectMultiplier>3</reflectMultiplier>
|
<reflectMultiplier>3</reflectMultiplier>
|
||||||
|
<fixedDamageDefName>ARA_AcidBurn</fixedDamageDefName>
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
@@ -393,4 +394,28 @@
|
|||||||
</li>
|
</li>
|
||||||
</stages>
|
</stages>
|
||||||
</HediffDef>
|
</HediffDef>
|
||||||
|
<HediffDef>
|
||||||
|
<defName>ARA_Incubator_5_EliteReward_Hediffs</defName>
|
||||||
|
<label>异变肌群</label>
|
||||||
|
<description>该阿拉克涅督虫的肌群强壮得已经无法使用常理解释了,似乎只需要轻轻地挥动鳌爪,最坚固的城墙也会被劈开裂口——督虫还藉由这种强大的生理能力获得了多个体术技能。\n\n这个稀有突变是强壮肌肉的变种。</description>
|
||||||
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
|
<isBad>false</isBad>
|
||||||
|
<defaultLabelColor>(0.8, 0.6, 0.0)</defaultLabelColor>
|
||||||
|
<scenarioCanAdd>true</scenarioCanAdd>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<statFactors>
|
||||||
|
<MeleeDamageFactor>5</MeleeDamageFactor>
|
||||||
|
</statFactors>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
<comps>
|
||||||
|
<li Class="HediffCompProperties_GiveAbility">
|
||||||
|
<abilityDefs>
|
||||||
|
<li>ARA_Incubator_5_EliteReward_Jump</li>
|
||||||
|
<li>ARA_Incubator_5_EliteReward_Charge</li>
|
||||||
|
</abilityDefs>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</HediffDef>
|
||||||
</Defs>
|
</Defs>
|
||||||
@@ -190,6 +190,7 @@
|
|||||||
<maxGenerationAge>2</maxGenerationAge>
|
<maxGenerationAge>2</maxGenerationAge>
|
||||||
<minGenerationAge>1</minGenerationAge>
|
<minGenerationAge>1</minGenerationAge>
|
||||||
<canBeScattered>false</canBeScattered>
|
<canBeScattered>false</canBeScattered>
|
||||||
|
<nameMaker>ARA_Normal_Node_NameMaker</nameMaker>
|
||||||
<abilities>
|
<abilities>
|
||||||
<li>ARA_Suicide_Ability</li>
|
<li>ARA_Suicide_Ability</li>
|
||||||
<li>ARA_RaceBaseSwarmProduceOff</li>
|
<li>ARA_RaceBaseSwarmProduceOff</li>
|
||||||
@@ -699,4 +700,52 @@
|
|||||||
<li>ARA_Ability_SlayerCharge</li>
|
<li>ARA_Ability_SlayerCharge</li>
|
||||||
</abilities>
|
</abilities>
|
||||||
</PawnKindDef>
|
</PawnKindDef>
|
||||||
</Defs>
|
|
||||||
|
<RulePackDef>
|
||||||
|
<defName>ARA_Normal_Node_NameMaker</defName>
|
||||||
|
<rulePack>
|
||||||
|
<rulesStrings>
|
||||||
|
<li>r_name->[ARA_Normal_Node_FirstName] '[ARA_Normal_Node_nickName]' [ARA_Normal_Node_LastName]</li>
|
||||||
|
<li>ARA_Normal_Node_nickName->[ARA_Normal_Node_nickName_Sub]</li>
|
||||||
|
<li>ARA_Normal_Node_FirstName->Nodeunit</li>
|
||||||
|
<li>ARA_Normal_Node_LastName->Arachnae</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_Sub->[ARA_Normal_Node_nickName_A][ARA_Normal_Node_nickName_B]-[ARA_Normal_Node_nickName_C][ARA_Normal_Node_nickName_D][ARA_Normal_Node_nickName_E]</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->P</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->R</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->X</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->H</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->D</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->A</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->C</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->I</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->Y</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->1</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->2</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->3</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->4</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->5</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->6</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->1</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->2</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->3</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->4</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->5</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->6</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->7</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->8</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->9</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->0</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->1</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->2</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->3</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->4</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->5</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->6</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->7</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->8</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->9</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->0</li>
|
||||||
|
</rulesStrings>
|
||||||
|
</rulePack>
|
||||||
|
</RulePackDef>
|
||||||
|
</Defs>
|
||||||
@@ -610,6 +610,7 @@
|
|||||||
<canFlyInVacuum>false</canFlyInVacuum>
|
<canFlyInVacuum>false</canFlyInVacuum>
|
||||||
<!-- 身形大小,略大于常规人类 -->
|
<!-- 身形大小,略大于常规人类 -->
|
||||||
<baseBodySize>1</baseBodySize>
|
<baseBodySize>1</baseBodySize>
|
||||||
|
<ageGenerationCurve Inherit="False" IsNull="True"/>
|
||||||
</race>
|
</race>
|
||||||
|
|
||||||
<recipes Inherit="False">
|
<recipes Inherit="False">
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<LanguageData>
|
||||||
|
<ARA_Normal_Node_NameMaker.rulePack.rulesStrings>
|
||||||
|
<li>r_name->[ARA_Normal_Node_FirstName] '[ARA_Normal_Node_nickName]' [ARA_Normal_Node_LastName]</li>
|
||||||
|
<li>ARA_Normal_Node_nickName->[ARA_Normal_Node_nickName_Sub]</li>
|
||||||
|
<li>ARA_Normal_Node_FirstName->节点生物</li>
|
||||||
|
<li>ARA_Normal_Node_LastName->阿拉克涅</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_Sub->[ARA_Normal_Node_nickName_A][ARA_Normal_Node_nickName_B]-[ARA_Normal_Node_nickName_C][ARA_Normal_Node_nickName_D][ARA_Normal_Node_nickName_E]</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->P</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->R</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->X</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->H</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_A->D</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->A</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->C</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->I</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_B->Y</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->1</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->2</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->3</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->4</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->5</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_C->6</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->1</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->2</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->3</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->4</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->5</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->6</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->7</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->8</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->9</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_D->0</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->1</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->2</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->3</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->4</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->5</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->6</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->7</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->8</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->9</li>
|
||||||
|
<li>ARA_Normal_Node_nickName_E->0</li>
|
||||||
|
</ARA_Normal_Node_NameMaker.rulePack.rulesStrings>
|
||||||
|
</LanguageData>
|
||||||
Binary file not shown.
@@ -7,11 +7,11 @@
|
|||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\hediffcomp_reflectmeleedamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\hediffcomp_reflectmeleedamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\ara_defof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ara_defof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_defof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_defof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_supercarry\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_supercarry\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_supercarry\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_supercarry\\jobdriver_supercarry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -122,8 +122,7 @@
|
|||||||
"RelativeToolTip": "ARA_DefOf.cs",
|
"RelativeToolTip": "ARA_DefOf.cs",
|
||||||
"ViewState": "AgIAAFQAAAAAAAAAAAAUwGcAAAAmAAAAAAAAAA==",
|
"ViewState": "AgIAAFQAAAAAAAAAAAAUwGcAAAAmAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2026-03-24T08:34:43.383Z",
|
"WhenOpened": "2026-03-24T08:34:43.383Z"
|
||||||
"EditorCaption": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
@@ -133,7 +132,7 @@
|
|||||||
"RelativeDocumentMoniker": "Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
"RelativeDocumentMoniker": "Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
||||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
||||||
"RelativeToolTip": "Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
"RelativeToolTip": "Hediffs\\HediffComp_ReflectMeleeDamage.cs",
|
||||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAA4AAAAAAAAAA==",
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAoAAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2026-03-24T08:33:52.75Z",
|
"WhenOpened": "2026-03-24T08:33:52.75Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
@@ -148,8 +147,7 @@
|
|||||||
"RelativeToolTip": "Jobs\\JobDriver_SuperCarry\\JobDriver_SuperCarry.cs",
|
"RelativeToolTip": "Jobs\\JobDriver_SuperCarry\\JobDriver_SuperCarry.cs",
|
||||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAA3AAAAAAAAAA==",
|
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAA3AAAAAAAAAA==",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2026-03-06T03:21:58.524Z",
|
"WhenOpened": "2026-03-06T03:21:58.524Z"
|
||||||
"EditorCaption": ""
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ namespace ArachnaeSwarmVerse
|
|||||||
public class HediffCompProperties_ReflectMeleeDamage : HediffCompProperties
|
public class HediffCompProperties_ReflectMeleeDamage : HediffCompProperties
|
||||||
{
|
{
|
||||||
public float reflectMultiplier = 3.0f; // 反射倍数,默认300%
|
public float reflectMultiplier = 3.0f; // 反射倍数,默认300%
|
||||||
public bool showReflectionEffect = true; // 是否显示反射效果
|
|
||||||
public bool reflectOnlyMelee = true; // 是否只反射近战伤害
|
public bool reflectOnlyMelee = true; // 是否只反射近战伤害
|
||||||
public bool includeToolBasedRanged = false; // 是否包含使用工具的远程伤害
|
public bool includeToolBasedRanged = false; // 是否包含使用工具的远程伤害
|
||||||
public float minDamageToReflect = 0.1f; // 最小反射伤害阈值
|
public float minDamageToReflect = 0.1f; // 最小反射伤害阈值
|
||||||
|
public string fixedDamageDefName = null; // 固定伤害类型的def名称,如果不为null,则反射伤害将使用此def
|
||||||
|
|
||||||
public HediffCompProperties_ReflectMeleeDamage()
|
public HediffCompProperties_ReflectMeleeDamage()
|
||||||
{
|
{
|
||||||
this.compClass = typeof(HediffComp_ReflectMeleeDamage);
|
this.compClass = typeof(HediffComp_ReflectMeleeDamage);
|
||||||
@@ -127,7 +127,8 @@ namespace ArachnaeSwarmVerse
|
|||||||
{
|
{
|
||||||
isProcessingReflection = true;
|
isProcessingReflection = true;
|
||||||
lastReflectionTick = Find.TickManager.TicksGame;
|
lastReflectionTick = Find.TickManager.TicksGame;
|
||||||
|
DamageDef damageDef = originalDinfo.Def;
|
||||||
|
|
||||||
// 计算反射伤害
|
// 计算反射伤害
|
||||||
float reflectedAmount = originalDinfo.Amount * ReflectMultiplier;
|
float reflectedAmount = originalDinfo.Amount * ReflectMultiplier;
|
||||||
|
|
||||||
@@ -143,10 +144,23 @@ namespace ArachnaeSwarmVerse
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Props.fixedDamageDefName != null)
|
||||||
|
{
|
||||||
|
DamageDef fixedDef = DefDatabase<DamageDef>.GetNamedSilentFail(Props.fixedDamageDefName);
|
||||||
|
if (fixedDef != null)
|
||||||
|
{
|
||||||
|
damageDef = fixedDef;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.Warning($"[ReflectMeleeDamage] Could not find DamageDef with name '{Props.fixedDamageDefName}' for reflection. Using original damage def.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 创建反射伤害信息
|
// 创建反射伤害信息
|
||||||
DamageInfo reflectedDinfo = new DamageInfo(
|
DamageInfo reflectedDinfo = new DamageInfo(
|
||||||
def: originalDinfo.Def,
|
def: damageDef,
|
||||||
amount: reflectedAmount,
|
amount: reflectedAmount,
|
||||||
armorPenetration: originalDinfo.ArmorPenetrationInt,
|
armorPenetration: originalDinfo.ArmorPenetrationInt,
|
||||||
angle: Rand.Range(0, 359),
|
angle: Rand.Range(0, 359),
|
||||||
@@ -177,12 +191,6 @@ namespace ArachnaeSwarmVerse
|
|||||||
// 对攻击者造成伤害
|
// 对攻击者造成伤害
|
||||||
attacker.TakeDamage(reflectedDinfo);
|
attacker.TakeDamage(reflectedDinfo);
|
||||||
|
|
||||||
// 显示反射效果
|
|
||||||
if (Props.showReflectionEffect)
|
|
||||||
{
|
|
||||||
ShowReflectionEffect(pawn, attacker);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发送消息
|
// 发送消息
|
||||||
if (pawn.Faction == Faction.OfPlayer && attacker.Faction != Faction.OfPlayer)
|
if (pawn.Faction == Faction.OfPlayer && attacker.Faction != Faction.OfPlayer)
|
||||||
{
|
{
|
||||||
@@ -207,43 +215,6 @@ namespace ArachnaeSwarmVerse
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 显示反射效果
|
|
||||||
/// </summary>
|
|
||||||
private void ShowReflectionEffect(Pawn pawn, Thing attacker)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// 显示反弹粒子
|
|
||||||
if (pawn.Spawned && attacker.Spawned && pawn.Map == attacker.Map)
|
|
||||||
{
|
|
||||||
Vector3 startPos = pawn.DrawPos;
|
|
||||||
Vector3 endPos = attacker.DrawPos;
|
|
||||||
|
|
||||||
// 创建一个从反射者到攻击者的弹道效果
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
MoteThrown mote = (MoteThrown)ThingMaker.MakeThing(ARA_ThingDefOf.Mote_SparkSimple, null);
|
|
||||||
mote.Scale = Rand.Range(0.5f, 0.8f);
|
|
||||||
mote.exactPosition = startPos + new Vector3(
|
|
||||||
Rand.Range(-0.3f, 0.3f),
|
|
||||||
0f,
|
|
||||||
Rand.Range(-0.3f, 0.3f)
|
|
||||||
);
|
|
||||||
mote.SetVelocity(
|
|
||||||
(endPos - startPos).normalized.x * Rand.Range(15f, 25f),
|
|
||||||
0f
|
|
||||||
);
|
|
||||||
GenSpawn.Spawn(mote, pawn.Position, pawn.Map);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.Error($"[ReflectMeleeDamage] Error showing reflection effect: {ex}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 在Pawn受到伤害后调用
|
/// 在Pawn受到伤害后调用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user