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); }
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); }
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; } } }
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); }
public virtual void Notify_OtherWeaponWielded(CompBladelinkWeapon weapon) { }
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; }