예제 #1
0
        public IGun Get(GunType type, WeaponTier weaponTier)
        {
            Assert.ValidEnum(type);
            Assert.ValidEnum(weaponTier);

            return(Build(type, weaponTier));
        }
        private void parseWishlistText(string[] text)
        {
            int lineNum = 0;

            weaponTier     = getWeaponTier(text[lineNum]);
            weaponName     = getWeaponName(text[lineNum]).Trim();
            weaponNameSort = Regex.Replace(weaponName, "^the ", "", RegexOptions.IgnoreCase);
            weaponNameSort = Regex.Replace(weaponNameSort, "^a ", "", RegexOptions.IgnoreCase);
            lineNum++;

            if (text[lineNum].Contains("============"))
            {
                gameType1 = getGameType(text[lineNum]);
                lineNum++;
            }

            lineNum = checkRolls(text, lineNum, gameType1);
            lineNum = checkCombo(text, lineNum, gameType1);
            lineNum = checkMasterwork(text, lineNum, gameType1);

            //Check for 2nd listing
            //lineNum++;
            if (lineNum < text.Length && text[lineNum].Contains("============") && !text[lineNum].ToLower().Contains("wishlist"))
            {
                gameType2 = getGameType(text[lineNum]);
                lineNum++;
                lineNum = checkRolls(text, lineNum, gameType2);
                lineNum = checkCombo(text, lineNum, gameType2);
                lineNum = checkMasterwork(text, lineNum, gameType2);
            }
        }
예제 #3
0
        private void ValidateInput(ICollection <GunProperty> properties,
                                   int reload,
                                   int misfire,
                                   ICollection <RollType> damageDice,
                                   WeaponTier weaponTier,
                                   GunRange range,
                                   int gunCost,
                                   int ammoCost)
        {
            Assert.HasNoNullEntries(properties);
            foreach (GunProperty property in properties)
            {
                Assert.ValidEnum(property);
            }

            Assert.IsTrue(reload >= CommonConstants.MinimumReload);
            Assert.IsTrue(misfire >= CommonConstants.MinimumMisfire);
            Assert.IsTrue(misfire <= CommonConstants.MaximumMisfire);

            Assert.HasNoNullEntries(damageDice);
            Assert.IsNotEmpty(damageDice);
            foreach (RollType damageDie in damageDice)
            {
                Assert.ValidEnum(damageDie);
                Assert.IsTrue(damageDie != RollType.None);
            }

            Assert.ValidEnum(weaponTier);
            Assert.IsNotNull(range);

            Assert.IsTrue(gunCost > 0);
            Assert.IsTrue(ammoCost > 0);
        }
예제 #4
0
        private IGun Build(GunType type, WeaponTier weaponTier)
        {
            Assert.ValidEnum(type);

            IGun ret = null;

            switch (type)
            {
            case GunType.PalmPistol:
            {
                ret = BuildPalmPistol(weaponTier);
                break;
            }

            case GunType.Pistol:
            {
                ret = BuildPistol(weaponTier);
                break;
            }

            case GunType.Musket:
            {
                ret = BuildMusket(weaponTier);
                break;
            }

            case GunType.Pepperbox:
            {
                ret = BuildPepperbox(weaponTier);
                break;
            }

            case GunType.Blunderbuss:
            {
                ret = BuildBlunderbuss(weaponTier);
                break;
            }

            case GunType.BadNews:
            {
                ret = BuildBadNews(weaponTier);
                break;
            }

            case GunType.HandMortar:
            {
                ret = BuildHandMortar(weaponTier);
                break;
            }

            default:
            {
                throw new ArgumentException();
            }
            }

            return(ret);
        }
예제 #5
0
 public WeaponPartSchematic(string name, float _reloadTime, int energyUsage, WeaponTier _tier, Bullet.BulletTypes _bulletType, Dictionary <string, object> bulletInfos) : base(name, PartType.Weapon)
 {
     Name            = name;
     BulletInfos     = bulletInfos;
     ReloadTimeInSec = _reloadTime;
     EnergyUsage     = energyUsage;
     Tier            = _tier;
     BulletType      = _bulletType;
 }
예제 #6
0
 private IGun BuildPistol(WeaponTier weaponTier)
 {
     return(new Gun(EmptyProperties,
                    4,
                    1,
                    new List <RollType>()
     {
         RollType.d10
     },
                    weaponTier,
                    new GunRange(60, 240),
                    150,
                    20));
 }
예제 #7
0
 private IGun BuildPepperbox(WeaponTier weaponTier)
 {
     return(new Gun(EmptyProperties,
                    6,
                    2,
                    new List <RollType>()
     {
         RollType.d10
     },
                    weaponTier,
                    new GunRange(80, 320),
                    250,
                    20));
 }
예제 #8
0
 private IGun BuildBlunderbuss(WeaponTier weaponTier)
 {
     return(new Gun(EmptyProperties,
                    1,
                    2,
                    new List <RollType>()
     {
         RollType.d8,
         RollType.d8
     },
                    weaponTier,
                    new GunRange(15, 60),
                    300,
                    100));
 }
예제 #9
0
 private IGun BuildHandMortar(WeaponTier weaponTier)
 {
     return(new Gun(new List <GunProperty>()
     {
         GunProperty.Explosive
     },
                    1,
                    3,
                    new List <RollType>()
     {
         RollType.d8
     },
                    weaponTier,
                    new GunRange(30, 60),
                    1000,    //TODO: this is 'crafted'/custom
                    1000));
 }
예제 #10
0
 private IGun BuildBadNews(WeaponTier weaponTier)
 {
     return(new Gun(new List <GunProperty>()
     {
         GunProperty.TwoHand
     },
                    1,
                    3,
                    new List <RollType>()
     {
         RollType.d12
     },
                    weaponTier,
                    new GunRange(200, 800),
                    1000,    //TODO: this is 'crafted'/custom
                    200));
 }
예제 #11
0
 private IGun BuildMusket(WeaponTier weaponTier)
 {
     return(new Gun(new List <GunProperty>()
     {
         GunProperty.TwoHand
     },
                    1,
                    2,
                    new List <RollType>()
     {
         RollType.d12
     },
                    weaponTier,
                    new GunRange(120, 480),
                    300,
                    25));
 }
예제 #12
0
 private IGun BuildPalmPistol(WeaponTier weaponTier)
 {
     return(new Gun(new List <GunProperty>()
     {
         GunProperty.Light
     },
                    1,
                    1,
                    new List <RollType>()
     {
         RollType.d8
     },
                    weaponTier,
                    new GunRange(40, 160),
                    50,
                    10));
 }
예제 #13
0
        public void RandomWeaponTier()
        {
            int tier = RandomNumber(0, 3);

            if (tier == 0)
            {
                weaponTier = WeaponTier.Melee;
            }
            else if (tier == 1)
            {
                weaponTier = WeaponTier.Pistols;
            }
            else if (tier == 2)
            {
                weaponTier = WeaponTier.Full;
            }
        }
        private WeaponTier getWeaponTier(string line)
        {
            WeaponTier t = WeaponTier.U;

            string[] titleString = line.Split('-');

            if (titleString.Length > 1 && line.Contains(" - "))
            {
                weaponTierString = titleString[titleString.Length - 1];
                char tier = char.Parse(titleString[titleString.Length - 1].Substring(1, 1));

                if (tier == 'S' || tier == 's')
                {
                    t = WeaponTier.S;
                }
                else if (tier == 'A' || tier == 'a')
                {
                    t = WeaponTier.A;
                }
                else if (tier == 'B' || tier == 'b')
                {
                    t = WeaponTier.B;
                }
                else if (tier == 'C' || tier == 'c')
                {
                    t = WeaponTier.C;
                }
                else if (tier == 'F' || tier == 'f')
                {
                    t = WeaponTier.F;
                }
                else
                {
                    t = WeaponTier.U;
                }
            }
            else
            {
                t = WeaponTier.U;
            }

            return(t);
        }
예제 #15
0
        public Gun(ICollection <GunProperty> properties,
                   int reload,
                   int misfire,
                   ICollection <RollType> damageDice,
                   WeaponTier weaponTier,
                   GunRange range,
                   int gunCost,  //value in gold
                   int ammoCost) //value in copper
        {
            ValidateInput(properties, reload, misfire, damageDice,
                          weaponTier, range, gunCost, ammoCost);

            Properties     = properties; //TODO: deep copy?
            DamageModifier = GetDmgMod(weaponTier);
            HitModifier    = GetHitMod(weaponTier);
            Reload         = GetReloadValue(reload, weaponTier);
            Misfire        = misfire;
            DamageDice     = damageDice;
            Range          = range;
            AmmoCost       = ammoCost;
            GunCost        = gunCost;
        }
예제 #16
0
 public static int GetWeaponTierMod(WeaponTier weaponTier)
 {
     Assert.IsTrue(WeaponTierToModMap.ContainsKey(weaponTier));
     return(WeaponTierToModMap[weaponTier]);
 }
예제 #17
0
        private IModifier GetHitMod(WeaponTier weaponTier)
        {
            int weaponTierModValue = CommonConstants.GetWeaponTierMod(weaponTier);

            return(new Modifier(weaponTierModValue));
        }
예제 #18
0
 private int GetReloadValue(int reload, WeaponTier weaponTier)
 {
     return(weaponTier == WeaponTier.ArtificerReloadProperty
         ? CommonConstants.InfiniteAmmo
         : reload);
 }
        public DimWishlistLine(long weaponId, WeaponTier weaponTier, GameType gameType1, GameType gameType2, RollRating p1, RollRating p2, RollRating p3, RollRating p4, string pveMasterwork, string pvpMasterwork, List <Combo> combos)
        {
            line = "dimwishlist:item=" + weaponId.ToString() + "&perks=";

            if (p1 != null)
            {
                line += p1.id + ",";
            }

            if (p2 != null)
            {
                line += p2.id + ",";
            }

            if (p3 != null)
            {
                line += p3.id + ",";
            }

            if (p4 != null)
            {
                line += p4.id + ",";
            }

            line = line.Substring(0, line.Length - 1);

            //Wishlist Notes
            line += "#notes:";

            float pve = getRating(p1, p2, p3, p4, combos, gameType1);
            float pvp = getRating(p1, p2, p3, p4, combos, gameType2);

            maxRating = Math.Max(pve, pvp);

            if (maxRating < Properties.Settings.Default.MinRating)
            {
                line = "";
            }
            else
            {
                if (Properties.Settings.Default.NoteRatings)
                {
                    if (pve >= Properties.Settings.Default.MinRating && pvp >= Properties.Settings.Default.MinRating)
                    {
                        line += weaponTier + "pve" + pve + ", " + weaponTier + "pvp" + pvp;
                    }
                    else if (pve >= Properties.Settings.Default.MinRating && gameType1 == GameType.Both)
                    {
                        line += weaponTier + "pve" + pve + ", " + weaponTier + "pvp" + pve;
                    }
                    else if (pve >= Properties.Settings.Default.MinRating)
                    {
                        line += weaponTier + "pve" + pve;
                    }
                    else if (pvp >= Properties.Settings.Default.MinRating)
                    {
                        line += weaponTier + "pvp" + pvp;
                    }
                }

                if (Properties.Settings.Default.NoteMasterwork)
                {
                    if (pve >= Properties.Settings.Default.MinRating && pvp >= Properties.Settings.Default.MinRating)
                    {
                        if (pveMasterwork != null && pvpMasterwork != null && pveMasterwork != pvpMasterwork)
                        {
                            line += " MWpve " + pveMasterwork + ", MWpvp " + pvpMasterwork;
                        }
                        else if (pveMasterwork != null && pvpMasterwork != null && pveMasterwork == pvpMasterwork)
                        {
                            line += " MW " + pveMasterwork;
                        }
                        else if (pveMasterwork != null)
                        {
                            line += " MWpve " + pveMasterwork;
                        }
                        else if (pvpMasterwork != null)
                        {
                            line += " MWpvp " + pvpMasterwork;
                        }
                    }
                    else if (pve >= Properties.Settings.Default.MinRating && gameType1 == GameType.Both)
                    {
                        if (pveMasterwork != null)
                        {
                            line += " MW " + pveMasterwork;
                        }
                    }
                    else if (pve >= Properties.Settings.Default.MinRating)
                    {
                        if (pveMasterwork != null)
                        {
                            line += " MW " + pveMasterwork;
                        }
                    }
                    else if (pvp >= Properties.Settings.Default.MinRating)
                    {
                        if (pvpMasterwork != null)
                        {
                            line += " MW " + pvpMasterwork;
                        }
                    }
                }
            }
        }