Exemplo n.º 1
0
        // debugging

        /*
         * public static void TicksPerMove_PostFix(Pawn __instance, ref float __result, bool diagonal) {
         *  if ( __instance.IsColonist )  {
         *      float num = __instance.GetStatValue(StatDefOf.MoveSpeed, true);
         *      Log.Message("move speed : "+__instance.Name+ " : (GetStatValue of MoveSpeed:" +num+") (TicksPerMove:"+__result+")");
         *  }
         * } */

        //try to extend this
        public static void StatOffsetFromGear_PostFix(ref float __result, Thing gear, StatDef stat)
        {
            var retValue = 0.0f;

            try
            {
                retValue = SlotLoadableUtility.CheckThingSlotsForStatAugment(gear, stat);
            }
            catch (Exception e)
            {
                Log.Warning("Failed to add stats for " + gear.Label + "\n" + e.ToString());
            }
            __result += retValue;
        }
Exemplo n.º 2
0
        public static void GetStatValue_PostFix(ref float __result, Thing thing, StatDef stat, bool applyPostProcess)
        {
            var retValue = 0.0f;

            try
            {
                retValue = SlotLoadableUtility.CheckThingSlotsForStatAugment(thing, stat);
            }
            catch (Exception e)
            {
                Log.Warning("Failed to add stats for " + thing.Label + "\n" + e.ToString());
            }
            __result += retValue;
        }
Exemplo n.º 3
0
 public static void StatOffsetFromGear_PostFix(ref float __result, Thing gear, StatDef stat)
 {
     __result += SlotLoadableUtility.CheckThingSlotsForStatAugment(gear, stat);
 }
Exemplo n.º 4
0
        public virtual string SlotDesc(SlotLoadable slot)
        {
            var s = new StringBuilder();

            s.AppendLine(slot.def.description); //TODO
            if (!slot.IsEmpty())
            {
                s.AppendLine();
                s.AppendLine(string.Format(StringOf.CurrentlyLoaded, new object[] { slot.SlotOccupant.LabelCap }));
                if (((SlotLoadableDef)slot.def).doesChangeColor)
                {
                    s.AppendLine();
                    s.AppendLine(StringOf.Effects);
                    s.AppendLine("  " + StringOf.ChangesPrimaryColor);
                }
                if (((SlotLoadableDef)slot.def).doesChangeStats)
                {
                    var slotBonus = slot.SlotOccupant.TryGetComp <CompSlottedBonus>();
                    if (slotBonus != null)
                    {
                        if (slotBonus.Props != null)
                        {
                            if (slotBonus.Props.statModifiers != null && slotBonus.Props.statModifiers.Count > 0)
                            {
                                s.AppendLine();
                                s.AppendLine(StringOf.StatModifiers);

                                foreach (var mod in slotBonus.Props.statModifiers)
                                {
                                    var v         = SlotLoadableUtility.DetermineSlottableStatAugment(slot.SlotOccupant, mod.stat);
                                    var modstring = mod.stat.ValueToString(v, ToStringNumberSense.Offset);
                                    //Log.Message("Determined slot stat augment "+v+" and made string "+modstring);
                                    s.AppendLine("  " + mod.stat.LabelCap + " " + modstring);
                                    //s.AppendLine("\t" + mod.stat.LabelCap + " " + mod.ToStringAsOffset);
                                }

                                /*
                                 * //Log.Message("fix this to display statModifiers");
                                 * List<StatModifier> statMods = slot.SlotOccupant.def.statBases.FindAll(
                                 *  (StatModifier z) => z.stat.category == StatCategoryDefOf.Weapon ||
                                 *                      z.stat.category == StatCategoryDefOf.EquippedStatOffsets);
                                 * if (statMods != null && statMods.Count > 0)
                                 * {
                                 *  s.AppendLine();
                                 *  s.AppendLine("StatModifiers".Translate() + ":");
                                 *  foreach (StatModifier mod in statMods)
                                 *  {
                                 *      s.AppendLine("\t" + mod.stat.LabelCap + " " + mod.ToStringAsOffset);
                                 *  }
                                 * }
                                 */
                            }
                            var damageDef = slotBonus.Props.damageDef;

                            if (damageDef != null)
                            {
                                s.AppendLine();
                                s.AppendLine(string.Format(StringOf.DamageType, new object[] { damageDef.LabelCap }));
                            }
                            var defHealChance = slotBonus.Props.defensiveHealChance;
                            if (defHealChance != null)
                            {
                                var healText = StringOf.all;
                                if (defHealChance.woundLimit != 0)
                                {
                                    healText = defHealChance.woundLimit.ToString();
                                }
                                s.AppendLine("  " + string.Format(StringOf.DefensiveHealChance, new object[]
                                {
                                    healText,
                                    defHealChance.chance.ToStringPercent()
                                }));
                            }
                            var vampChance = slotBonus.Props.vampiricHealChance;
                            if (vampChance != null)
                            {
                                var vampText = StringOf.all;
                                if (vampChance.woundLimit != 0)
                                {
                                    vampText = defHealChance.woundLimit.ToString();
                                }
                                s.AppendLine("  " + string.Format(StringOf.VampiricChance, new object[]
                                {
                                    vampText,
                                    vampChance.chance.ToStringPercent()
                                }));
                            }
                        }
                    }
                }
            }
            return(s.ToString());
        }
Exemplo n.º 5
0
 public static void StatWorker_GetValue_PostFix(ref float __result, Thing thing, StatDef ___stat)
 {
     __result += SlotLoadableUtility.CheckThingSlotsForStatAugment(thing, ___stat);
 }