public virtual void ApplyHediffs(LocalTargetInfo targetInfo) { if (targetInfo.Pawn != null) { AbilityExtension_Hediff hediffExtension = this.def.GetModExtension <AbilityExtension_Hediff>(); if (hediffExtension?.applyAuto ?? false) { Hediff localHediff = HediffMaker.MakeHediff(hediffExtension.hediff, targetInfo.Pawn); if (hediffExtension.severity > float.Epsilon) { localHediff.Severity = hediffExtension.severity; } if (localHediff is HediffWithComps hwc) { foreach (HediffComp hediffComp in hwc.comps) { if (hediffComp is HediffComp_Ability hca) { hca.ability = this; } } } targetInfo.Pawn.health.AddHediff(localHediff); } } }
public virtual string GetDescriptionForPawn() { StringBuilder sb = new StringBuilder(this.def.description); sb.AppendLine(); float rangeForPawn = this.GetRangeForPawn(); if (rangeForPawn > 0f) { sb.AppendLine($"{"Range".Translate()}: {rangeForPawn}".Colorize(Color.cyan)); } float radiusForPawn = this.GetRadiusForPawn(); if (radiusForPawn > 0f) { sb.AppendLine($"{"radius".Translate()}: {radiusForPawn}".Colorize(Color.cyan)); } float powerForPawn = this.GetPowerForPawn(); if (powerForPawn > 0f) { sb.AppendLine($"{"VFEA.AbilityStatsPower".Translate()}: {powerForPawn}".Colorize(Color.cyan)); } int castTimeForPawn = this.GetCastTimeForPawn(); if (castTimeForPawn > 0) { sb.AppendLine($"{"AbilityCastingTime".Translate()}: {castTimeForPawn.ToStringTicksToPeriod()}".Colorize(Color.cyan)); } int cooldownForPawn = this.GetCooldownForPawn(); if (cooldownForPawn > 0) { sb.AppendLine($"{"CooldownTime".Translate()}: {cooldownForPawn.ToStringTicksToPeriod()}".Colorize(Color.cyan)); } int durationForPawn = this.GetDurationForPawn(); if (durationForPawn > 0) { sb.AppendLine($"{"VFEA.AbilityStatsDuration".Translate()}: {durationForPawn.ToStringTicksToPeriod()}".Colorize(Color.cyan)); } else if (this.def.HasModExtension <AbilityExtension_Hediff>()) { AbilityExtension_Hediff extension = this.def.GetModExtension <AbilityExtension_Hediff>(); HediffCompProperties_Disappears propertiesDisappears = extension.hediff.CompProps <HediffCompProperties_Disappears>(); if (propertiesDisappears != null) { sb.AppendLine($"{"VFEA.AbilityStatsDuration".Translate()}: {propertiesDisappears.disappearsAfterTicks.min.ToStringTicksToPeriod()} ~ {propertiesDisappears.disappearsAfterTicks.max.ToStringTicksToPeriod()}" .Colorize(Color.cyan)); } } foreach (AbilityExtension_AbilityMod modExtension in this.AbilityModExtensions) { string description = modExtension.GetDescription(this); if (description.Length > 1) { sb.AppendLine(description); } } return(sb.ToString()); }