// Token: 0x0600000A RID: 10 RVA: 0x000022B0 File Offset: 0x000004B0 public static void PawnWeaponGenerator_TryGenerateWeaponFor_PostFix(Pawn pawn) { HugsLib.Settings.SettingHandle <int> chance = Traverse.Create(typeof(DualWield.Base)).Field("NPCDualWieldChance").GetValue <HugsLib.Settings.SettingHandle <int> >(); bool alwaysDW = (pawn.kindDef.weaponTags != null && pawn.kindDef.weaponTags.Contains("AlwaysDualWield")); Rand.PushState(); bool flag = !pawn.RaceProps.Humanlike && pawn.RaceProps.ToolUser && pawn.RaceProps.FleshType != FleshTypeDefOf.Mechanoid && pawn.equipment != null && (Rand.Chance((float)chance / 100f) || alwaysDW); Rand.PopState(); if (flag) { float randomInRange = pawn.kindDef.weaponMoney.RandomInRange; List <ThingStuffPair> allWeaponPairs = Traverse.Create(typeof(PawnWeaponGenerator)).Field("allWeaponPairs").GetValue <List <ThingStuffPair> >(); List <ThingStuffPair> workingWeapons = Traverse.Create(typeof(PawnWeaponGenerator)).Field("workingWeapons").GetValue <List <ThingStuffPair> >(); if (pawn.equipment != null && pawn.equipment.Primary != null && pawn.equipment.Primary.def.IsTwoHand()) { return; } if (pawn.equipment == null || pawn.equipment.Primary == null) { return; } for (int i = 0; i < allWeaponPairs.Count; i++) { ThingStuffPair w = allWeaponPairs[i]; if (w.Price <= randomInRange) { if (pawn.kindDef.weaponTags == null || pawn.kindDef.weaponTags.Any((string tag) => w.thing.weaponTags.Contains(tag))) { Rand.PushState(); if (w.thing.generateAllowChance >= 1f || Rand.ChanceSeeded(w.thing.generateAllowChance, pawn.thingIDNumber ^ (int)w.thing.shortHash ^ 28554824)) { workingWeapons.Add(w); } Rand.PopState(); } } } if (workingWeapons.Count == 0) { return; } IEnumerable <ThingStuffPair> matchingWeapons = workingWeapons.Where((ThingStuffPair tsp) => tsp.thing.CanBeOffHand() && !tsp.thing.IsTwoHand()); if (matchingWeapons != null && matchingWeapons.TryRandomElementByWeight((ThingStuffPair w) => w.Commonality * w.Price, out ThingStuffPair thingStuffPair)) { ThingWithComps thingWithComps = (ThingWithComps)ThingMaker.MakeThing(thingStuffPair.thing, thingStuffPair.stuff); PawnGenerator.PostProcessGeneratedGear(thingWithComps, pawn); AddOffHandEquipment(pawn.equipment, thingWithComps); } } }
public override void DefsLoaded() { multiplier = Settings.GetHandle <float>( "tioao_multipl", "Active power usage multiplier", "Active power usage multiplier", 1.0f); minvalue = Settings.GetHandle <int>( "tioao_minval", "Idle power usage value", "Idle power usage value", 1); whitelist.Add("DeepDrill"); whitelist.Add("ElectricCrematorium"); whitelist.Add("HiTechResearchBench"); whitelist.Add("FabricationBench"); whitelist.Add("BiofuelRefinery"); whitelist.Add("ElectricSmelter"); whitelist.Add("ElectricStove"); whitelist.Add("TableMachining"); whitelist.Add("ElectricSmithy"); whitelist.Add("ElectricTailoringBench"); whitelist.Add("VitalsMonitor"); whitelist.Add("MultiAnalyzer"); whitelist.Add("MegascreenTelevision"); whitelist.Add("FlatscreenTelevision"); whitelist.Add("TubeTelevision"); whitelist.Add("GroundPenetratingScanner"); whitelist.Add("LongRangeMineralScanner"); buildingDefsReservable.Add(ThingDef.Named("LongRangeMineralScanner")); buildingDefsReservable.Add(ThingDef.Named("GroundPenetratingScanner")); buildingDefsReservable.Add(ThingDef.Named("DeepDrill")); medicalBedDef = ThingDef.Named("HospitalBed"); HiTechResearchBenchDef = ThingDef.Named("HiTechResearchBench"); AutodoorDef = ThingDef.Named("Autodoor"); DeepDrillDef = ThingDef.Named("DeepDrill"); initPowerValues(); }