链锯剑

This commit is contained in:
2025-08-18 17:26:59 +08:00
parent 0c05bc8740
commit f85b000606
6 changed files with 179 additions and 73 deletions

View File

@@ -611,78 +611,7 @@
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
</ThingDef>
<!-- 链锯剑 -->
<ThingDef ParentName="BaseMeleeWeapon_Sharp_Quality">
<defName>WULA_MW_ChainSword</defName>
<label>CMs-1"链锯剑"</label>
<description>这种嗡嗡作响的乌拉帝国链锯类武器有多条环绕剑脊高速旋转的多层复合锯齿链条,之间嵌有能量传导节点或微型冷却剂喷口,是力量与纯粹疯狂的象征。</description>
<graphicData>
<texPath>Wula/Weapon/WULA_MW_ChainSword</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
</graphicData>
<!-- <equippedAngleOffset>-65</equippedAngleOffset> -->
<techLevel>Spacer</techLevel>
<costStuffCount>60</costStuffCount>
<stuffCategories>
<li>Metallic</li>
</stuffCategories>
<costList Inherit="False">
<Plasteel>5</Plasteel>
<ComponentIndustrial>3</ComponentIndustrial>
</costList>
<statBases>
<WorkToMake>20000</WorkToMake>
<Mass>2.5</Mass>
</statBases>
<tools Inherit="False">
<li>
<label>链锯</label>
<capacities>
<li>Cut</li>
</capacities>
<armorPenetration>0.5</armorPenetration>
<power>25</power> <!-- 2.5x natural fist -->
<cooldownTime>1.2</cooldownTime>
<soundMeleeHit>Pawn_Melee_PowerClaw_Hit</soundMeleeHit>
<soundMeleeMiss>Pawn_Melee_PowerClaw_Miss</soundMeleeMiss>
</li>
<li>
<label>柄击</label>
<capacities>
<li>Blunt</li>
<li>Poke</li>
</capacities>
<power>18</power>
<cooldownTime>1.5</cooldownTime>
<surpriseAttack>
<extraMeleeDamages>
<li>
<def>Stun</def>
<amount>5</amount>
</li>
</extraMeleeDamages>
</surpriseAttack>
</li>
</tools>
<recipeMaker>
<recipeUsers Inherit="False">
<li>WULA_Cube_Productor_Energy</li>
</recipeUsers>
<researchPrerequisite>WULA_Synth_Weapon_2_Melee_Technology</researchPrerequisite>
<skillRequirements>
<Crafting>7</Crafting>
</skillRequirements>
<displayPriority>450</displayPriority>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<weaponTags>
<li>Wula_Melee_Weapon_T2</li>
</weaponTags>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
</ThingDef>
<!-- 双头刀 -->
<ThingDef ParentName="BaseMeleeWeapon_Sharp_Quality">
<defName>WULA_MW_Glaive</defName>
@@ -712,7 +641,7 @@
</costList>
<statBases>
<WorkToMake>30000</WorkToMake>
<Mass>100</Mass>
<Mass>5</Mass>
</statBases>
<tools Inherit="False">
<li>

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 链锯剑 -->
<ThingDef ParentName="BaseMeleeWeapon_Sharp_Quality">
<defName>WULA_MW_ChainSword</defName>
<label>CMs-1"链锯剑"</label>
<description>这种嗡嗡作响的乌拉帝国链锯类武器有多条环绕剑脊高速旋转的多层复合锯齿链条,之间嵌有能量传导节点或微型冷却剂喷口,是力量与纯粹疯狂的象征。</description>
<graphicData>
<texPath>Wula/Weapon/WULA_MW_ChainSword</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
</graphicData>
<!-- <equippedAngleOffset>-65</equippedAngleOffset> -->
<techLevel>Spacer</techLevel>
<costStuffCount>60</costStuffCount>
<stuffCategories>
<li>Metallic</li>
</stuffCategories>
<costList Inherit="False">
<Plasteel>5</Plasteel>
<ComponentIndustrial>3</ComponentIndustrial>
</costList>
<statBases>
<WorkToMake>20000</WorkToMake>
<Mass>2.5</Mass>
</statBases>
<tools Inherit="False">
<li>
<label>链锯</label>
<capacities>
<li>WULA_MW_ChainSword_MultiStrike</li>
</capacities>
<armorPenetration>0.5</armorPenetration>
<power>25</power>
<cooldownTime>1.2</cooldownTime>
<soundMeleeHit>Pawn_Melee_PowerClaw_Hit</soundMeleeHit>
<soundMeleeMiss>Pawn_Melee_PowerClaw_Miss</soundMeleeMiss>
</li>
<li>
<label>柄击</label>
<capacities>
<li>Blunt</li>
<li>Poke</li>
</capacities>
<power>18</power>
<cooldownTime>1.5</cooldownTime>
<surpriseAttack>
<extraMeleeDamages>
<li>
<def>Stun</def>
<amount>5</amount>
</li>
</extraMeleeDamages>
</surpriseAttack>
</li>
</tools>
<recipeMaker>
<recipeUsers Inherit="False">
<li>WULA_Cube_Productor_Energy</li>
</recipeUsers>
<researchPrerequisite>WULA_Synth_Weapon_2_Melee_Technology</researchPrerequisite>
<skillRequirements>
<Crafting>7</Crafting>
</skillRequirements>
<displayPriority>450</displayPriority>
<unfinishedThingDef>UnfinishedWeapon</unfinishedThingDef>
</recipeMaker>
<weaponTags>
<li>Wula_Melee_Weapon_T2</li>
</weaponTags>
<thingSetMakerTags>
<li>RewardStandardQualitySuper</li>
</thingSetMakerTags>
<comps>
<li Class="WulaFallenEmpire.CompProperties_MultiStrike">
<strikeCount>5~8</strikeCount>
<damageMultiplierPerStrike>0.2</damageMultiplierPerStrike>
</li>
</comps>
</ThingDef>
<ToolCapacityDef>
<defName>WULA_MW_ChainSword_MultiStrike</defName>
<label>链锯切割</label>
</ToolCapacityDef>
<ManeuverDef>
<defName>WULA_MW_ChainSword_Maneuver</defName>
<requiredCapacity>WULA_MW_ChainSword_MultiStrike</requiredCapacity>
<verb>
<verbClass>WulaFallenEmpire.Verb_MeleeAttack_MultiStrike</verbClass>
<meleeDamageDef>Cut</meleeDamageDef>
</verb>
<logEntryDef>MeleeAttack</logEntryDef>
<combatLogRulesHit>Maneuver_Slash_MeleeHit</combatLogRulesHit>
<combatLogRulesDeflect>Maneuver_Slash_MeleeDeflect</combatLogRulesDeflect>
<combatLogRulesMiss>Maneuver_Slash_MeleeMiss</combatLogRulesMiss>
<combatLogRulesDodge>Maneuver_Slash_MeleeDodge</combatLogRulesDodge>
</ManeuverDef>
</Defs>

View File

@@ -0,0 +1,20 @@
using Verse;
namespace WulaFallenEmpire
{
public class CompProperties_MultiStrike : CompProperties
{
public IntRange strikeCount = new IntRange(3, 3);
public float damageMultiplierPerStrike = 0.5f;
public CompProperties_MultiStrike()
{
compClass = typeof(CompMultiStrike);
}
}
public class CompMultiStrike : ThingComp
{
public CompProperties_MultiStrike Props => (CompProperties_MultiStrike)props;
}
}

View File

@@ -0,0 +1,53 @@
using RimWorld;
using Verse;
namespace WulaFallenEmpire
{
public class Verb_MeleeAttack_MultiStrike : Verb_MeleeAttack
{
private CompMultiStrike Comp
{
get
{
return this.EquipmentSource?.GetComp<CompMultiStrike>();
}
}
protected override DamageWorker.DamageResult ApplyMeleeDamageToTarget(LocalTargetInfo target)
{
DamageWorker.DamageResult result = new DamageWorker.DamageResult();
if (this.Comp != null && target.HasThing)
{
int strikes = this.Comp.Props.strikeCount.RandomInRange;
for (int i = 0; i < strikes; i++)
{
if (target.ThingDestroyed)
{
break;
}
DamageInfo dinfo = new DamageInfo(this.verbProps.meleeDamageDef, this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn) * this.Comp.Props.damageMultiplierPerStrike, this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn) * this.Comp.Props.damageMultiplierPerStrike, -1f, this.CasterPawn, null, this.EquipmentSource?.def);
dinfo.SetTool(this.tool);
DamageWorker.DamageResult damageResult = target.Thing.TakeDamage(dinfo);
result.totalDamageDealt += damageResult.totalDamageDealt;
result.wounded = (result.wounded || damageResult.wounded);
result.stunned = (result.stunned || damageResult.stunned);
if (damageResult.parts != null)
{
if (result.parts == null)
{
result.parts = new System.Collections.Generic.List<BodyPartRecord>();
}
result.parts.AddRange(damageResult.parts);
}
}
}
else
{
DamageInfo dinfo2 = new DamageInfo(this.verbProps.meleeDamageDef, this.verbProps.AdjustedMeleeDamageAmount(this, this.CasterPawn), this.verbProps.AdjustedArmorPenetration(this, this.CasterPawn), -1f, this.CasterPawn, null, this.EquipmentSource?.def);
dinfo2.SetTool(this.tool);
result = target.Thing.TakeDamage(dinfo2);
}
return result;
}
}
}

View File

@@ -156,6 +156,8 @@
<Compile Include="ThingDefOf_WULA.cs" />
<Compile Include="StartupLogger.cs" />
<Compile Include="WeaponSwitch.cs" />
<Compile Include="Verb\CompMultiStrike.cs" />
<Compile Include="Verb\Verb_MeleeAttack_MultiStrike.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- 自定义清理任务删除obj文件夹中的临时文件 -->