public static bool CheckWeapon(ThingDef pawn, ThingDef weapon) { if (pawn is RaceAddonThingDef thingDef) { var set = thingDef.raceAddonSettings.weaponRestrictionSetting; if (WeaponRestrictions.Contains(weapon)) { return(set.raceSpecifics.Contains(weapon)); } else { if (set.allAllow) { return(!set.allAllow_Exceptions.Contains(weapon)); } else { return(set.allAllow_Exceptions.Contains(weapon)); } } } else { return(!WeaponRestrictions.Contains(weapon)); } }
protected override void WriteDataXML(XElement ele, ElderScrollsPlugin master) { XElement subEle; ele.TryPathTo("CoverSearchRadius", true, out subEle); subEle.Value = CoverSearchRadius.ToString("G15"); ele.TryPathTo("TakeCoverChance", true, out subEle); subEle.Value = TakeCoverChance.ToString("G15"); ele.TryPathTo("WaitTimer/Min", true, out subEle); subEle.Value = WaitTimerMin.ToString("G15"); ele.TryPathTo("WaitTimer/Max", true, out subEle); subEle.Value = WaitTimerMax.ToString("G15"); ele.TryPathTo("WaitToFireTimer/Min", true, out subEle); subEle.Value = WaitToFireTimerMin.ToString("G15"); ele.TryPathTo("WaitToFireTimer/Max", true, out subEle); subEle.Value = WaitToFireTimerMax.ToString("G15"); ele.TryPathTo("FireTimer/Min", true, out subEle); subEle.Value = FireTimerMin.ToString("G15"); ele.TryPathTo("FireTimer/Max", true, out subEle); subEle.Value = FireTimerMax.ToString("G15"); ele.TryPathTo("RangedWeaponRangeMult/Min", true, out subEle); subEle.Value = RangedWeaponRangeMultMin.ToString("G15"); WriteUnusedXML(ele, master); ele.TryPathTo("WeaponRestrictions", true, out subEle); subEle.Value = WeaponRestrictions.ToString(); ele.TryPathTo("RangedWeaponRangeMult/Max", true, out subEle); subEle.Value = RangedWeaponRangeMultMax.ToString("G15"); ele.TryPathTo("MaxTargetingFOV", true, out subEle); subEle.Value = MaxTargetingFOV.ToString("G15"); ele.TryPathTo("CombatRadius", true, out subEle); subEle.Value = CombatRadius.ToString("G15"); ele.TryPathTo("SemiAutoFiringDelayMult/Min", true, out subEle); subEle.Value = SemiAutoFiringDelayMultMin.ToString("G15"); ele.TryPathTo("SemiAutoFiringDelayMult/Max", true, out subEle); subEle.Value = SemiAutoFiringDelayMultMax.ToString("G15"); }
public static bool CheckWeapon(Pawn pawn, ThingDef weapon) { if (pawn.def is RaceAddonThingDef thingDef) { if (thingDef.raceAddonSettings.graphicSetting.drawSize[pawn.GetComp <RaceAddonComp>().drawSize].allowedWeapons is var list && list != null) { if (list.Contains(weapon)) { return(true); } else { return(false); } } var set = thingDef.raceAddonSettings.weaponRestrictionSetting; if (!WeaponRestrictions.Contains(weapon)) { if (set.allAllow) { if (!set.allAllow_Exceptions.Contains(weapon)) { return(true); } } else { if (set.allAllow_Exceptions.Contains(weapon)) { return(true); } } } else if (set.raceSpecifics.Contains(weapon)) { return(true); } } else { if (!WeaponRestrictions.Contains(weapon)) { return(true); } } return(false); }
public CombatStyleSimple(string Tag = null) : base(Tag) { CoverSearchRadius = new Single(); TakeCoverChance = new Single(); WaitTimerMin = new Single(); WaitTimerMax = new Single(); WaitToFireTimerMin = new Single(); WaitToFireTimerMax = new Single(); FireTimerMin = new Single(); FireTimerMax = new Single(); RangedWeaponRangeMultMin = new Single(); Unused = new byte[4]; WeaponRestrictions = new WeaponRestrictions(); RangedWeaponRangeMultMax = new Single(); MaxTargetingFOV = new Single(); CombatRadius = new Single(); SemiAutoFiringDelayMultMin = new Single(); SemiAutoFiringDelayMultMax = new Single(); }
public CombatStyleSimple(Single CoverSearchRadius, Single TakeCoverChance, Single WaitTimerMin, Single WaitTimerMax, Single WaitToFireTimerMin, Single WaitToFireTimerMax, Single FireTimerMin, Single FireTimerMax, Single RangedWeaponRangeMultMin, Byte[] Unused, WeaponRestrictions WeaponRestrictions, Single RangedWeaponRangeMultMax, Single MaxTargetingFOV, Single CombatRadius, Single SemiAutoFiringDelayMultMin, Single SemiAutoFiringDelayMultMax) { this.CoverSearchRadius = CoverSearchRadius; this.TakeCoverChance = TakeCoverChance; this.WaitTimerMin = WaitTimerMin; this.WaitTimerMax = WaitTimerMax; this.WaitToFireTimerMin = WaitToFireTimerMin; this.WaitToFireTimerMax = WaitToFireTimerMax; this.FireTimerMin = FireTimerMin; this.FireTimerMax = FireTimerMax; this.RangedWeaponRangeMultMin = RangedWeaponRangeMultMin; this.Unused = Unused; this.WeaponRestrictions = WeaponRestrictions; this.RangedWeaponRangeMultMax = RangedWeaponRangeMultMax; this.MaxTargetingFOV = MaxTargetingFOV; this.CombatRadius = CombatRadius; this.SemiAutoFiringDelayMultMin = SemiAutoFiringDelayMultMin; this.SemiAutoFiringDelayMultMax = SemiAutoFiringDelayMultMax; }