Ejemplo n.º 1
0
        private static bool GearHasCompsThatAffectStat(Thing gear, StatDef stat)
        {
            CompBladelinkWeapon compBladelinkWeapon = gear.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon == null)
            {
                return(false);
            }
            List <WeaponTraitDef> traitsListForReading = compBladelinkWeapon.TraitsListForReading;

            for (int i = 0; i < traitsListForReading.Count; i++)
            {
                if (traitsListForReading[i].equippedStatOffsets.NullOrEmpty())
                {
                    continue;
                }
                for (int j = 0; j < traitsListForReading[i].equippedStatOffsets.Count; j++)
                {
                    StatModifier statModifier = traitsListForReading[i].equippedStatOffsets[j];
                    if (statModifier.stat == stat && statModifier.value != 0f)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        public static bool IsBondedTo(Thing thing, Pawn pawn)
        {
            CompBladelinkWeapon compBladelinkWeapon = thing.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon != null)
            {
                return(compBladelinkWeapon.bondedPawn == pawn);
            }
            return(false);
        }
        public static bool AlreadyBondedToWeapon(Thing thing, Pawn pawn)
        {
            CompBladelinkWeapon compBladelinkWeapon = thing.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon == null || !compBladelinkWeapon.Bondable)
            {
                return(false);
            }
            if (pawn.equipment.bondedWeapon != null)
            {
                return(pawn.equipment.bondedWeapon != thing);
            }
            return(false);
        }
        protected override ThoughtState CurrentStateInternal(Pawn p)
        {
            if (p.equipment?.bondedWeapon == null || p.equipment.bondedWeapon.Destroyed)
            {
                return(ThoughtState.Inactive);
            }
            CompBladelinkWeapon compBladelinkWeapon = p.equipment.bondedWeapon.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon == null || compBladelinkWeapon.TraitsListForReading.NullOrEmpty())
            {
                return(ThoughtState.Inactive);
            }
            return(true);
        }
Ejemplo n.º 5
0
        public static bool CanEquip(Thing thing, Pawn pawn, out string cantReason)
        {
            cantReason = null;
            CompBladelinkWeapon compBladelinkWeapon = thing.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon != null && compBladelinkWeapon.bondedPawn != null && compBladelinkWeapon.bondedPawn != pawn)
            {
                cantReason = "BladelinkBondedToSomeoneElse".Translate();
                return(false);
            }
            if (IsBiocoded(thing) && !IsBiocodedFor(thing, pawn))
            {
                cantReason = "BiocodedCodedForSomeoneElse".Translate();
                return(false);
            }
            return(true);
        }
Ejemplo n.º 6
0
        protected override ThoughtState CurrentStateInternal(Pawn p)
        {
            if (!base.CurrentStateInternal(p).Active)
            {
                return(ThoughtState.Inactive);
            }
            CompBladelinkWeapon   compBladelinkWeapon  = p.equipment.bondedWeapon.TryGetComp <CompBladelinkWeapon>();
            List <WeaponTraitDef> traitsListForReading = compBladelinkWeapon.TraitsListForReading;

            for (int i = 0; i < traitsListForReading.Count; i++)
            {
                if (traitsListForReading[i] == WeaponTraitDefOf.NeedKill)
                {
                    return(compBladelinkWeapon.TicksSinceLastKill > 1200000);
                }
            }
            return(ThoughtState.Inactive);
        }
        public static string GetPersonaWeaponConfirmationText(Thing item, Pawn p)
        {
            CompBladelinkWeapon compBladelinkWeapon = item.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon != null && compBladelinkWeapon.Bondable && compBladelinkWeapon.bondedPawn != p)
            {
                TaggedString          taggedString         = "BladelinkEquipWarning".Translate();
                List <WeaponTraitDef> traitsListForReading = compBladelinkWeapon.TraitsListForReading;
                if (!traitsListForReading.NullOrEmpty())
                {
                    taggedString += "\n\n" + "BladelinkEquipWarningTraits".Translate() + ":";
                    for (int i = 0; i < traitsListForReading.Count; i++)
                    {
                        taggedString += "\n\n" + traitsListForReading[i].LabelCap + ": " + traitsListForReading[i].description;
                    }
                }
                taggedString += "\n\n" + "RoyalWeaponEquipConfirmation".Translate();
                return(taggedString);
            }
            return(null);
        }
        public static bool CanEquip_NewTmp(Thing thing, Pawn pawn, out string cantReason, bool checkBonded = true)
        {
            cantReason = null;
            CompBladelinkWeapon compBladelinkWeapon = thing.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon != null && compBladelinkWeapon.Bondable && compBladelinkWeapon.bondedPawn != null && compBladelinkWeapon.bondedPawn != pawn)
            {
                cantReason = "BladelinkBondedToSomeoneElse".Translate();
                return(false);
            }
            if (IsBiocoded(thing) && !IsBiocodedFor(thing, pawn))
            {
                cantReason = "BiocodedCodedForSomeoneElse".Translate();
                return(false);
            }
            if (checkBonded && AlreadyBondedToWeapon(thing, pawn))
            {
                cantReason = "BladelinkAlreadyBondedMessage".Translate(pawn.Named("PAWN"), pawn.equipment.bondedWeapon.Named("BONDEDWEAPON"));
                return(false);
            }
            return(true);
        }
        public override void TransformValue(StatRequest req, ref float val)
        {
            if (!req.HasThing)
            {
                return;
            }
            CompBladelinkWeapon compBladelinkWeapon = req.Thing.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon == null)
            {
                return;
            }
            List <WeaponTraitDef> traitsListForReading = compBladelinkWeapon.TraitsListForReading;

            if (!traitsListForReading.NullOrEmpty())
            {
                for (int i = 0; i < traitsListForReading.Count; i++)
                {
                    val += traitsListForReading[i].marketValueOffset;
                }
            }
        }
Ejemplo n.º 10
0
        public static float StatOffsetFromGear(Thing gear, StatDef stat)
        {
            float val = gear.def.equippedStatOffsets.GetStatOffsetFromList(stat);
            CompBladelinkWeapon compBladelinkWeapon = gear.TryGetComp <CompBladelinkWeapon>();

            if (compBladelinkWeapon != null)
            {
                List <WeaponTraitDef> traitsListForReading = compBladelinkWeapon.TraitsListForReading;
                for (int i = 0; i < traitsListForReading.Count; i++)
                {
                    val += traitsListForReading[i].equippedStatOffsets.GetStatOffsetFromList(stat);
                }
            }
            if (Math.Abs(val) > float.Epsilon && !stat.parts.NullOrEmpty())
            {
                foreach (StatPart part in stat.parts)
                {
                    part.TransformValue(StatRequest.For(gear), ref val);
                }
                return(val);
            }
            return(val);
        }
 public override string ExplanationPart(StatRequest req)
 {
     if (req.HasThing)
     {
         CompBladelinkWeapon compBladelinkWeapon = req.Thing.TryGetComp <CompBladelinkWeapon>();
         if (compBladelinkWeapon != null)
         {
             StringBuilder         stringBuilder        = new StringBuilder();
             List <WeaponTraitDef> traitsListForReading = compBladelinkWeapon.TraitsListForReading;
             if (!traitsListForReading.NullOrEmpty())
             {
                 for (int i = 0; i < traitsListForReading.Count; i++)
                 {
                     if (traitsListForReading[i].marketValueOffset != 0f)
                     {
                         stringBuilder.AppendLine(traitsListForReading[i].LabelCap + ": " + traitsListForReading[i].marketValueOffset.ToStringByStyle(ToStringStyle.Money, ToStringNumberSense.Offset));
                     }
                 }
             }
             return(stringBuilder.ToString());
         }
     }
     return(null);
 }
Ejemplo n.º 12
0
 public virtual void Notify_OtherWeaponWielded(CompBladelinkWeapon weapon)
 {
 }
Ejemplo n.º 13
0
        private void DrawThingRow(ref float y, float width, Thing thing, bool inventory = false)
        {
            Rect rect = new Rect(0f, y, width, 28f);

            Widgets.InfoCardButton(rect.width - 24f, y, thing);
            rect.width -= 24f;
            bool flag = false;

            if (CanControl && (inventory || CanControlColonist || (SelPawnForGear.Spawned && !SelPawnForGear.Map.IsPlayerHome)))
            {
                Rect rect2 = new Rect(rect.width - 24f, y, 24f, 24f);
                bool flag2;
                if (SelPawnForGear.IsQuestLodger())
                {
                    if (inventory)
                    {
                        flag2 = true;
                    }
                    else
                    {
                        CompBiocodable compBiocodable = thing.TryGetComp <CompBiocodable>();
                        if (compBiocodable != null && compBiocodable.Biocoded)
                        {
                            flag2 = true;
                        }
                        else
                        {
                            CompBladelinkWeapon compBladelinkWeapon = thing.TryGetComp <CompBladelinkWeapon>();
                            flag2 = (compBladelinkWeapon != null && compBladelinkWeapon.bondedPawn == SelPawnForGear);
                        }
                    }
                }
                else
                {
                    flag2 = false;
                }
                Apparel apparel;
                bool    flag3 = (apparel = (thing as Apparel)) != null && SelPawnForGear.apparel != null && SelPawnForGear.apparel.IsLocked(apparel);
                flag = (flag2 | flag3);
                if (Mouse.IsOver(rect2))
                {
                    if (flag3)
                    {
                        TooltipHandler.TipRegion(rect2, "DropThingLocked".Translate());
                    }
                    else if (flag2)
                    {
                        TooltipHandler.TipRegion(rect2, "DropThingLodger".Translate());
                    }
                    else
                    {
                        TooltipHandler.TipRegion(rect2, "DropThing".Translate());
                    }
                }
                Color color          = flag ? Color.grey : Color.white;
                Color mouseoverColor = flag ? color : GenUI.MouseoverColor;
                if (Widgets.ButtonImage(rect2, TexButton.Drop, color, mouseoverColor, !flag) && !flag)
                {
                    SoundDefOf.Tick_High.PlayOneShotOnCamera();
                    InterfaceDrop(thing);
                }
                rect.width -= 24f;
            }
            if (CanControlColonist)
            {
                if ((thing.def.IsNutritionGivingIngestible || thing.def.IsNonMedicalDrug) && thing.IngestibleNow && base.SelPawn.WillEat(thing))
                {
                    Rect rect3 = new Rect(rect.width - 24f, y, 24f, 24f);
                    TooltipHandler.TipRegionByKey(rect3, "ConsumeThing", thing.LabelNoCount, thing);
                    if (Widgets.ButtonImage(rect3, TexButton.Ingest))
                    {
                        SoundDefOf.Tick_High.PlayOneShotOnCamera();
                        InterfaceIngest(thing);
                    }
                }
                rect.width -= 24f;
            }
            Rect rect4 = rect;

            rect4.xMin = rect4.xMax - 60f;
            CaravanThingsTabUtility.DrawMass(thing, rect4);
            rect.width -= 60f;
            if (Mouse.IsOver(rect))
            {
                GUI.color = HighlightColor;
                GUI.DrawTexture(rect, TexUI.HighlightTex);
            }
            if (thing.def.DrawMatSingle != null && thing.def.DrawMatSingle.mainTexture != null)
            {
                Widgets.ThingIcon(new Rect(4f, y, 28f, 28f), thing);
            }
            Text.Anchor = TextAnchor.MiddleLeft;
            GUI.color   = ThingLabelColor;
            Rect    rect5    = new Rect(36f, y, rect.width - 36f, rect.height);
            string  text     = thing.LabelCap;
            Apparel apparel2 = thing as Apparel;

            if (apparel2 != null && SelPawnForGear.outfits != null && SelPawnForGear.outfits.forcedHandler.IsForced(apparel2))
            {
                text += ", " + "ApparelForcedLower".Translate();
            }
            if (flag)
            {
                text += " (" + "ApparelLockedLower".Translate() + ")";
            }
            Text.WordWrap = false;
            Widgets.Label(rect5, text.Truncate(rect5.width));
            Text.WordWrap = true;
            if (Mouse.IsOver(rect))
            {
                string text2 = thing.DescriptionDetailed;
                if (thing.def.useHitPoints)
                {
                    text2 = text2 + "\n" + thing.HitPoints + " / " + thing.MaxHitPoints;
                }
                TooltipHandler.TipRegion(rect, text2);
            }
            y += 28f;
        }