Exemple #1
0
        private void LoadPowers(SqlConnection con, MonsterPattern monster)
        {
            using (SqlCommand cmd = new SqlCommand($@"
                SELECT MP.*, MPA.* FROM CORE.MONSTER_POWER MP LEFT JOIN CORE.MONSTER_POWER_ATTACK MPA ON MP.ID = MPA.MONSTER_POWER_ID WHERE MONSTER_ID = @id", con))
            {
                cmd.Parameters.Add("id", SqlDbType.Int).Value = monster.Id;
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    monster.Powers.Clear();
                    while (reader.HasRows && reader.Read())
                    {
                        PowerCategory category = (PowerCategory)reader.GetInt32(6);
                        MonsterPower  power;
                        switch (category)
                        {
                        case PowerCategory.Attack:
                            if (reader.IsDBNull(9))
                            {
                                throw new Exception($"Incomplete database entries for attack power with id {reader.GetInt32(0)}.");
                            }
                            MonsterAttackPower attackPower = new MonsterAttackPower();
                            attackPower.AttackType = (PowerAttackType)reader.GetInt32(9);
                            if (!reader.IsDBNull(10))
                            {
                                attackPower.AttackBonus = reader.GetInt32(10);
                            }
                            else
                            {
                                attackPower.AttackBonus = null;
                            }
                            if (!reader.IsDBNull(11))
                            {
                                attackPower.TargetDefense = (Defense)reader.GetInt32(11);
                            }
                            else
                            {
                                attackPower.TargetDefense = null;
                            }
                            attackPower.Basic = reader.GetBoolean(12);
                            power             = attackPower;
                            break;

                        case PowerCategory.Utility:
                            power = new MonsterUtilityPower();
                            break;

                        default:
                            throw new Exception($"Power category {category.ToString()} is not supported.");
                        }
                        power.Name        = reader.GetString(2);
                        power.Detail      = reader.GetString(3);
                        power.Action      = (PowerAction)reader.GetInt32(4);
                        power.Recharge    = (PowerRecharge)reader.GetInt32(5);
                        power.Requirement = (!reader.IsDBNull(7) ? reader.GetString(7) : null);
                        monster.Powers.Add(power);
                    }
                }
            }
        }
Exemple #2
0
 private float PowerFallPerTickAssumingCategory(PowerCategory cat)
 {
     if (cat == PowerCategory.NoPower)
     {
         return(0);
     }
     if (DirectlyPowered(pawn))
     {
         return(0);
     }
     if (pawn.HasValidCaravanPlatform() && pawn.GetCaravan() != null && pawn.GetCaravan().HasFuel())
     {
         return(0);
     }
     return(2.66666666E-05f * this.PowerRate);
 }
Exemple #3
0
 public static PowerCategory GetRiderPowerCategory(string userId)
 {
     PowerCategory pc = new PowerCategory();
     return pc;
 }
Exemple #4
0
        public static PowerCategory[] GetPowerCategories(string userId)
        {
            UserRider owner = UserRider.Load(userId);
            List<PowerCategory> pcs = new List<PowerCategory>();
            string filename = owner.IsMale ? @"power_profile_male.csv" : @"power_profile_female.csv";

            string[] curves = File.ReadAllLines(HttpContext.Current.Server.MapPath(@"~/App_Data/" + filename));
            for (int i = 0; i < curves.Length; i++)
            {
                string[] cVals = curves[i].Split(',');
                PowerCategory pc = new PowerCategory
                {
                    Category = int.Parse(cVals[0]),
                    PowerAt5Sec = float.Parse(cVals[1]),
                    PowerAt1Min = float.Parse(cVals[2]),
                    PowerAt5Min = float.Parse(cVals[3]),
                    PowerAt1Hr = float.Parse(cVals[4])
                };
                pcs.Add(pc);
            }
            return pcs.ToArray();
        }