Пример #1
0
        private static void ParseCreature(string[] parts, StringBuilder sb, WorldProvider provider)
        {
            // Columns
            // Name,Creature Type,CreatureClass,Level,Min Attribute,Max Attribute,Gender,Race,ImageUri,DroppableItems
            if (parts != null && parts.Length > 0)
            {
                // Changes for Perenthia 11/23/2008
                string name     = parts[0];
                string type     = parts[1];
                string group    = parts[2];
                string level    = parts[3];
                string minAttr  = parts[4];
                string maxAttr  = parts[5];
                string gender   = parts[6];
                string race     = parts[7];
                string imageUri = parts[8];
                string drpItms  = parts[9];

                string formattedName = FormatName(name);

                List <string> dropItems = new List <string>();
                if (!String.IsNullOrEmpty(drpItms.Replace("\"", "").Trim()))
                {
                    dropItems.AddRange(drpItms.Replace("\"", "").Split(',').Select(i => i.Trim()));
                }

                Type     t        = Type.GetType(String.Concat("Perenthia.", group, "Creature"));
                Creature creature = provider.GetTemplate(t, name) as Creature;
                if (creature == null)
                {
                    creature = Activator.CreateInstance(t) as Creature;
                }
                if (creature != null)
                {
                    creature.Properties.IsTemplateCollection = true;
                    creature.World            = provider.World;
                    creature.TemplateID       = 0;
                    creature.Name             = name;
                    creature.Race             = race;
                    creature.ImageUri         = imageUri;
                    creature.MobileType       = (MobileTypes)Enum.Parse(typeof(MobileTypes), type, true);
                    creature.Level            = Convert.ToInt32(level);
                    creature.AttributeMinimum = Convert.ToInt32(minAttr);
                    creature.AttributeMaximum = Convert.ToInt32(maxAttr);
                    creature.Skills.AddRange(GetSkillGroup(group).Skills);
                    creature.GenerateStats();

                    Gender g = (Gender)Enum.Parse(typeof(Gender), gender, true);
                    if (g == Gender.None)
                    {
                        creature.Gender = (Gender)Dice.Random(1, 2);
                    }
                    else
                    {
                        creature.Gender = g;
                    }

                    foreach (var item in dropItems)
                    {
                        creature.AddDroppableItem(item);
                    }

                    provider.SaveActor <Creature>(creature);
                }

                //sb.AppendFormat("\t\t#region {0}", formattedName).AppendLine();
                //sb.AppendFormat("\t\tpublic static Creature {0}", formattedName).AppendLine();
                //sb.Append("\t\t{").AppendLine();
                //sb.Append("\t\t\tget { ");
                //sb.AppendFormat("return new Creature(\"{0}\", \"{1}\", {2}, {3}, {4}, MobileTypes.{5}, new {6}SkillGroup()); ",
                //    name, String.Empty, level, minAttr, maxAttr, type, group);
                //sb.Append("}").AppendLine();
                //sb.Append("\t\t}").AppendLine();
                //sb.Append("\t\t#endregion").AppendLine().AppendLine();
            }
        }