Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
        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());
        }