예제 #1
0
 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;
 }