diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 1571d3f..6a540b9 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/AbilityDefs/AbilityDef_PsychicBrainburn.xml b/1.6/1.6/Defs/AbilityDefs/AbilityDef_PsychicBrainburn.xml new file mode 100644 index 0000000..534d5b9 --- /dev/null +++ b/1.6/1.6/Defs/AbilityDefs/AbilityDef_PsychicBrainburn.xml @@ -0,0 +1,43 @@ + + + + + ARA_PsychicBrainburn + + 通过一次强力的心灵冲击,直接摧毁目标生物的意识核心,使其永久失去知觉。 + UI/Abilities/Slaughter + 5000 + false + 300 + true + false + false + true + true + 0.5 + Mote_HoraxSmallSpellWarmup + HoraxianAbilityCasting + AnomalyAbilityWarmup + true + + Verb_CastAbility + 1.5 + 25 + + true + false + false + + + +
  • + + Skip_Entry + + + false +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml b/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml index 3ed920d..7c32b27 100644 --- a/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml +++ b/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml @@ -182,6 +182,11 @@ 0.25 0 + +
  • + ARA_TerrainBasedHediff +
  • +
    diff --git a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml index ef60aab..216692a 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml @@ -174,7 +174,7 @@
  • 6 - (0.9, 0.9 ,0.5, 0) + (230, 230, 128, 0)
  • @@ -288,7 +288,7 @@
  • 6 - (0.9, 0.9 ,0.5, 0) + (230, 230, 128, 0)
  • diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 8932bae..38d1876 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -205,6 +205,12 @@ + + + + + + diff --git a/Source/ArachnaeSwarm/CompAbilityEffect_PsychicBrainburn.cs b/Source/ArachnaeSwarm/CompAbilityEffect_PsychicBrainburn.cs new file mode 100644 index 0000000..a45879d --- /dev/null +++ b/Source/ArachnaeSwarm/CompAbilityEffect_PsychicBrainburn.cs @@ -0,0 +1,80 @@ +using Verse; +using RimWorld; +using System.Linq; + +namespace ArachnaeSwarm +{ + public class CompAbilityEffect_PsychicBrainburn : CompAbilityEffect + { + public new CompProperties_PsychicBrainburn Props => (CompProperties_PsychicBrainburn)props; + + public override void Apply(LocalTargetInfo target, LocalTargetInfo dest) + { + base.Apply(target, dest); + + Pawn pawn = target.Pawn; + if (pawn == null) + { + return; + } + + // 查找作为意识来源的身体部位 + BodyPartRecord brain = pawn.health.hediffSet.GetNotMissingParts() + .FirstOrDefault(p => p.def.tags.Contains(BodyPartTagDefOf.ConsciousnessSource)); + + if (brain != null) + { + // 施加巨大伤害以摧毁大脑 + float damageAmount = 99999f; + float penetration = 999f; + pawn.TakeDamage(new DamageInfo(DamageDefOf.Burn, damageAmount, penetration, -1f, parent.pawn, brain)); + + // 如果在XML中定义了效果,则生成它 + if (Props.effecterDef != null) + { + Props.effecterDef.Spawn(pawn.Position, pawn.Map, 1f); + } + } + } + + public override bool Valid(LocalTargetInfo target, bool throwMessages = false) + { + Pawn pawn = target.Pawn; + if (pawn == null) + { + return false; + } + + // 检查目标是否是血肉生物(如果XML中设置为需要) + if (Props.requiresFlesh && !pawn.RaceProps.IsFlesh) + { + if (throwMessages) + { + Messages.Message("MessageCannotUseOnMechanical".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.RejectInput); + } + return false; + } + + // 检查目标是否有意识来源部位 + BodyPartRecord brain = pawn.health.hediffSet.GetNotMissingParts() + .FirstOrDefault(p => p.def.tags.Contains(BodyPartTagDefOf.ConsciousnessSource)); + + if (brain == null) + { + if (throwMessages) + { + Messages.Message("MessageTargetHasNoBrain".Translate(pawn.Named("PAWN")), pawn, MessageTypeDefOf.RejectInput); + } + return false; + } + + return base.Valid(target, throwMessages); + } + + public override bool AICanTargetNow(LocalTargetInfo target) + { + // AI不应主动使用此技能 + return false; + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/CompProperties_PsychicBrainburn.cs b/Source/ArachnaeSwarm/CompProperties_PsychicBrainburn.cs new file mode 100644 index 0000000..dfb5982 --- /dev/null +++ b/Source/ArachnaeSwarm/CompProperties_PsychicBrainburn.cs @@ -0,0 +1,20 @@ +using Verse; +using RimWorld; + +namespace ArachnaeSwarm +{ + public class CompProperties_PsychicBrainburn : CompProperties_AbilityEffect + { + // 如果为true,则技能只能对血肉生物使用。 + // 如果为false,则可以对机械体等非血肉生物使用。 + public bool requiresFlesh = true; + + // 在目标身上产生的视觉效果。 + public EffecterDef effecterDef; + + public CompProperties_PsychicBrainburn() + { + compClass = typeof(CompAbilityEffect_PsychicBrainburn); + } + } +} \ No newline at end of file