예제 #1
0
파일: Pets.cs 프로젝트: muonlineph/OpenMU
        private void CreateSpirit()
        {
            // A level 0 spirit is for the Dark Horse; Level 1 is for the Dark Raven.
            var spirit = this.Context.CreateNew <ItemDefinition>();

            spirit.Group      = 13;
            spirit.Number     = 31;
            spirit.Name       = "Spirit";
            spirit.Width      = 1;
            spirit.Height     = 1;
            spirit.Durability = 1;

            this.GameConfiguration.Items.Add(spirit);

            var horseDrop = this.Context.CreateNew <DropItemGroup>();

            horseDrop.ItemLevel   = 0;
            horseDrop.Chance      = 0.001;
            horseDrop.Description = "Dark Horse Spirit";
            horseDrop.PossibleItems.Add(spirit);
            horseDrop.MinimumMonsterLevel = 102;
            this.GameConfiguration.DropItemGroups.Add(horseDrop);
            BaseMapInitializer.RegisterDefaultDropItemGroup(horseDrop);

            var ravenDrop = this.Context.CreateNew <DropItemGroup>();

            ravenDrop.ItemLevel   = 1;
            ravenDrop.Chance      = 0.001;
            ravenDrop.Description = "Dark Raven Spirit";
            ravenDrop.PossibleItems.Add(spirit);
            ravenDrop.MinimumMonsterLevel = 96;
            this.GameConfiguration.DropItemGroups.Add(ravenDrop);
            BaseMapInitializer.RegisterDefaultDropItemGroup(ravenDrop);
        }
        /// <inheritdoc />
        public override void Initialize()
        {
            this.GameConfiguration.ExperienceRate              = 1.0f;
            this.GameConfiguration.MaximumLevel                = 400;
            this.GameConfiguration.InfoRange                   = 12;
            this.GameConfiguration.AreaSkillHitsPlayer         = false;
            this.GameConfiguration.MaximumInventoryMoney       = int.MaxValue;
            this.GameConfiguration.MaximumVaultMoney           = int.MaxValue;
            this.GameConfiguration.RecoveryInterval            = 3000;
            this.GameConfiguration.MaximumLetters              = 50;
            this.GameConfiguration.LetterSendPrice             = 1000;
            this.GameConfiguration.MaximumCharactersPerAccount = 5;
            this.GameConfiguration.CharacterNameRegex          = "^[a-zA-Z0-9]{3,10}$";
            this.GameConfiguration.MaximumPasswordLength       = 20;
            this.GameConfiguration.MaximumPartySize            = 5;
            this.GameConfiguration.ShouldDropMoney             = true;
            this.GameConfiguration.ExperienceTable             =
                Enumerable.Range(0, this.GameConfiguration.MaximumLevel + 2)
                .Select(level => CalculateNeededExperience(level))
                .ToArray();
            this.GameConfiguration.MasterExperienceTable =
                Enumerable.Range(0, 201).Select(level => this.CalcNeededMasterExp(level)).ToArray();
            var moneyDropItemGroup = this.Context.CreateNew <DropItemGroup>();

            moneyDropItemGroup.Chance      = 0.5;
            moneyDropItemGroup.ItemType    = SpecialItemType.Money;
            moneyDropItemGroup.Description = "The common money drop item group (50 % drop chance)";
            this.GameConfiguration.DropItemGroups.Add(moneyDropItemGroup);
            BaseMapInitializer.RegisterDefaultDropItemGroup(moneyDropItemGroup);

            var randomItemDropItemGroup = this.Context.CreateNew <DropItemGroup>();

            randomItemDropItemGroup.Chance      = 0.3;
            randomItemDropItemGroup.ItemType    = SpecialItemType.RandomItem;
            randomItemDropItemGroup.Description = "The common drop item group for random items (30 % drop chance)";
            this.GameConfiguration.DropItemGroups.Add(randomItemDropItemGroup);
            BaseMapInitializer.RegisterDefaultDropItemGroup(randomItemDropItemGroup);

            var excellentItemDropItemGroup = this.Context.CreateNew <DropItemGroup>();

            excellentItemDropItemGroup.Chance      = 0.0001;
            excellentItemDropItemGroup.ItemType    = SpecialItemType.Excellent;
            excellentItemDropItemGroup.Description =
                "The common drop item group for random excellent items (0.01 % drop chance)";
            this.GameConfiguration.DropItemGroups.Add(excellentItemDropItemGroup);
            BaseMapInitializer.RegisterDefaultDropItemGroup(excellentItemDropItemGroup);

            this.CreateStatAttributes();

            this.CreateItemSlotTypes();
            this.CreateItemOptionTypes();
            this.GameConfiguration.ItemOptions.Add(this.CreateLuckOptionDefinition());
            this.GameConfiguration.ItemOptions.Add(this.CreateOptionDefinition(Stats.DefenseBase));
            this.GameConfiguration.ItemOptions.Add(this.CreateOptionDefinition(Stats.MaximumPhysBaseDmg));
            this.GameConfiguration.ItemOptions.Add(this.CreateOptionDefinition(Stats.MaximumWizBaseDmg));
            this.GameConfiguration.ItemOptions.Add(this.CreateOptionDefinition(Stats.MaximumCurseBaseDmg));

            new CharacterClassInitialization(this.Context, this.GameConfiguration).Initialize();
            new SkillsInitializer(this.Context, this.GameConfiguration).Initialize();
            new Orbs(this.Context, this.GameConfiguration).Initialize();
            new Scrolls(this.Context, this.GameConfiguration).Initialize();
            new EventTicketItems(this.Context, this.GameConfiguration).Initialize();
            new Wings(this.Context, this.GameConfiguration).Initialize();
            new Pets(this.Context, this.GameConfiguration).Initialize();
            new ExcellentOptions(this.Context, this.GameConfiguration).Initialize();
            new HarmonyOptions(this.Context, this.GameConfiguration).Initialize();
            new GuardianOptions(this.Context, this.GameConfiguration).Initialize();
            new Armors(this.Context, this.GameConfiguration).Initialize();
            new Weapons(this.Context, this.GameConfiguration).Initialize();
            new Potions(this.Context, this.GameConfiguration).Initialize();
            new Jewels(this.Context, this.GameConfiguration).Initialize();
            new Misc(this.Context, this.GameConfiguration).Initialize();
            new PackedJewels(this.Context, this.GameConfiguration).Initialize();
            new Jewellery(this.Context, this.GameConfiguration).Initialize();
            new AncientSets(this.Context, this.GameConfiguration).Initialize();
            this.CreateJewelMixes();
            new NpcInitialization(this.Context, this.GameConfiguration).Initialize();
            new GameMapsInitializer(this.Context, this.GameConfiguration).Initialize();
            this.AssignCharacterClassHomeMaps();
            new SocketSystem(this.Context, this.GameConfiguration).Initialize();
            new ChaosMixes(this.Context, this.GameConfiguration).Initialize();
            new Gates(this.Context, this.GameConfiguration).Initialize();
            new Quest(this.Context, this.GameConfiguration).Initialize();
            new Quests(this.Context, this.GameConfiguration).Initialize();
            //// TODO: ItemSetGroups
        }