コード例 #1
0
        protected override CommandGroupCollection GetCommandGroups()
        {
            ///////////////////////////////////////////////////////////////////
            var gameStarting = new CommandCollection("暗黒の時代基礎 ~資源の収集と探索~")
            {
                new BuildHouse(3),          //家の建設の繰り返し
                new InitCivilianActions(),  //町の人の動きの設定
                new InitMilitaryActions(),  //斥候の動きの設定
                new BuildLumberCamp(),      //距離が空いたら伐採所を作成
            };

            ///////////////////////////////////////////////////////////////////
            var rulesIndarkAgeOnly = new EachAgesCommandCollection(GroupType.DarkAge,
                                                                   "暗黒の時代のみに適用するルール")
            {
                new BuildMill(2),                   //粉ひき所を建設
                new BuildLumberCamp(2),             //伐採所を建設
                new ResearchLoom(7),                //機織りの研究
                new TrainVillager(24),              //町の人を指定人数まで生産
                new DarkAgeGathererPercentages(),   //資源収集割合の調整
                new ResignTimeout("00:30:00")       //指定の時間経過したら降参
            };

            ///////////////////////////////////////////////////////////////////
            var endOfDarkAge = new CommandCollection("暗黒の時代中終盤")
            {
                new BuildFarm(4, 6),                        //畑の建設
                new ResearchFeudalAge(24),                  //領主への進化
                new BuildMiningCamp(resource_type.gold),    //採掘所を作成
            };

            ///////////////////////////////////////////////////////////////////
            var ToFeudalAge = new EachAgesCommandCollection(GroupType.DarkAge, ResearchState.Researching,
                                                            "暗黒から領主に進化中")
            {
                new SetGathererRate(24, 5, 17, 2, 0),   //24人進化の場合の割合
                new BuildBarracks(1),                   //戦士育成所1軒目の建設
                new BuildFarm(6),                       //畑
                new BuildMill(3),                       //粉ひき所を増設
            };

            ///////////////////////////////////////////////////////////////////
            var PrioritizedResearchCollections = new CommandCollection("優先順位付きの研究")
            {
                new PrioritizedResearchItems(
                    //領主の時代
                    new ResearchDoubleBitAxe(),     //両刃斧
                    new ResearchHorseCollar(),      //引き具
                    new ResearchWheelBarrow(29),    //手押し車
                    //城主の時代
                    new ResearchBowSaw(),           //のこぎり
                    new ResearchHeavyPlow(),        //馬鍬
                    new ResearchHandCart()          //荷車
                    ),
                new PrioritizedResearchItems(
                    //領主の時代
                    new ResearchFletching(5),       //矢羽根
                    new ResearchPaddedArcherArmor() //射手用胸当て
                    ),
                new PrioritizedResearchItems(
                    new ResearchForging(),          //鍛造
                    new ResearchIronCasting()       //鋳造
                    ),
                new PrioritizedResearchItems(
                    new ResearchBloodlines(),       //血統
                    new ResearchScaleBarding(),     //騎兵用うろこの鎧
                    new ResearchChainBarding(),     //騎兵用鎖かたびら
                    new ResearchHusbandry()         //繁殖の研究
                    )
            };

            ///////////////////////////////////////////////////////////////////
            return(new CommandGroupCollection()
            {
                rulesIndarkAgeOnly,
                gameStarting,
                endOfDarkAge,
                ToFeudalAge,
                PrioritizedResearchCollections
            });
        }
コード例 #2
0
ファイル: CastleAge.cs プロジェクト: teshiba/Aoe2AISharp
        protected override CommandGroupCollection GetCommandGroups()
        {
            ///////////////////////////////////////////////////////////////////
            var rulesInCastleAgeOnly = new EachAgesCommandCollection(GroupType.CastleAge,
                                                                     "城主の時代のみに適用するルール")
            {
                new InitCastleAge(),                    //城主の時代の初期設定
                new TrainVillager(200, age.castle_age), //進化条件を満たすまで町の人の生産
                new CastleAgeGathererPercentages(),
                new BuildSiegeWorkshop(3),              //包囲攻撃訓練所の建設
                new BuildLumberCamp(3),                 //伐採所3つ目まで建てます
                new BuildBarracks(3),                   //戦士育成所の建設
                new TrainArcherLine(20),                //射手の生産
                new ResignTimeout("00:35:00", 5),       //指定の時間経過したら降参
                new BuildMonastery(1),                  //神殿の建設
                new TrainUniqueUnit(5),                 //ユニークユニットの生産
            };

            ///////////////////////////////////////////////////////////////////
            var internalAffairsInCastleAge = new CommandCollection(
                "城主の時代の内政 ~序盤中盤の内政展開~")
            {
                new ResearchImperialAge(),               //帝王の時代に進化

                new BuildTownCenter(4),                  //町の中心の増設
                new ResearchPikeman(),                   //長槍兵の研究
                new TrainKnight(20),                     //騎士の生産
                new ResearchCrossbow(),                  //石弓射手の研究

                new ResearchGoldShaftMining(),           //金の掘削
                new ResearchStoneShaftMining(),          //石の掘削

                new ExtendTownSizeForBuildings(20, 10),  //建物を建てるために町のサイズを拡張する
                new ExtendTownSizeForBuildings(30, 20),  //建物を建てるために町のサイズを拡張する
                new ExtendTownSizeForBuildings(45, 25),  //建物を建てるために町のサイズを拡張する
                new ExtendTownSizeForBuildings(60, 30),  //建物を建てるために町のサイズを拡張する
                new ExtendTownSizeForBuildings(75, 35),  //建物を建てるために町のサイズを拡張する
                new ExtendTownSizeForBuildings(90, 45),  //建物を建てるために町のサイズを拡張する
                new ExtendTownSizeForBuildings(100, 50), //建物を建てるために町のサイズを拡張する

                new StrategyForSoldierCount(50, 50),     //ユニットが増えてきたら町のサイズを拡張する
                new StrategyForSoldierCount(60, 60),     //ユニットが増えてきたら町のサイズを拡張する
                new StrategyForSoldierCount(70, 70),     //ユニットが増えてきたら町のサイズを拡張する
                new StrategyForSoldierCount(80, 80),     //ユニットが増えてきたら町のサイズを拡張する
                new StrategyForSoldierCount(100, 90),    //ユニットが増えてきたら町のサイズを拡張する
                new StrategyForSoldierCount(120, 100),   //ユニットが増えてきたら町のサイズを拡張する
            };

            ///////////////////////////////////////////////////////////////////
            var militaryInCastleAge = new CommandCollection(
                "城主の時代の軍事 ~軍の生産と攻撃~")
            {
                new ResearchBodkinArrow(),        //錐状矢じりの研究
                new ResearchEliteSkirmisher(),    //精鋭散兵の研究
                new ResearchThumbRing(),          //弓懸の研究

                new ResearchScaleMail(),          //歩兵用うろこの鎧
                new ResearchLeatherArcherArmor(), //射手用革の鎧
                new ResearchChainMail(),          //歩兵用鎖かたびら
                new ResearchTracking(),           //追跡術の研究
                new ResearchSquires(),            //武者修行の研究
                new TrainEagleWarrior(20),        //イーグルウォーリアの生産
                new ResearchLightCavalry(),       //騎兵の研究

                new TrainMonk(5),                 //聖職者の生産
                new ResearchSanctity(),           //神聖の研究

                new AttackNow(50, 100),           //兵がたまったら攻撃
                new AttackNow(60, 90),            //兵がたまったら攻撃
                new AttackNow(70, 90),            //兵がたまったら攻撃
                new TrainSkirmisher(15),          //散兵の生産
                new ResearchCaravan(),            //隊商
            };

            ///////////////////////////////////////////////////////////////////
            var endOfCastlelAge = new CommandCollection("城主の時代中終盤")
            {
                new BuildUniversity(1),      //学問所の建設
                new ResearchBallistics(),    //弾道学
                new ResearchMasonry(),       //石工技術
                new ResearchHeatedShot(),    //火砲学
                new ResearchMurderHoles(),   //迎撃用窓
                new ResearchFortifiedWall(), //強化壁

                new BuildCastle(),           //城の建設

                new ResearchTownWatch(),     //見張りの研究
                new ResearchTownPatrol(),    //巡回

                new ResearchManAtArms(),     //軍兵の研究
                new ResearchLongSwordsMan(), //長剣剣士の研究
            };

            ///////////////////////////////////////////////////////////////////

            var rulesInCastleAgeOrLater = new EachAgesCommandCollection(GroupType.CastleAgeOrLater,
                                                                        "城主の時代以降に適用するルール")
            {
                new BuildStable(4),                 //騎兵育成所の建設
                new BuildMill(),                    //粉引き所
                new BuildBarracks(),                //資源が余っていたら戦士育成所を生産
                new TrainSpearmanLine(30),          //槍兵の生産
                new TrainTradeCart(70),             //荷馬車の生産
                new BuildArcheryRange(),            //資源が余っていたら射手育成所を建設
                new TrainMilitiamanLine(),          //剣士を生産します。
                new BuildMiningCamp(4),             //採掘所を4つ目まで建てます
                new TrainMangonel(),                //投石器の生産
                new TrainRam(3),                    //破城槌の生産
                new BuildMill(4),                   //粉ひき所を建設
                new TrainScoutCavalryLine(20),      //斥候
                new TrainCamelLine(20),             //らくだ
                new BuildStable(),                  //騎兵育成所を建設
                new ResearchStoneMining(),          //石の切り出し
                new ResignCondition(                //降参する条件
                    new soldier_count(relop.eq, 1)  //兵士が指定人数以下で資源もなくなってきたら
                    & new food_amount(relop.lt, 50)
                    & new gold_amount(relop.lt, 100)
                    )
                {
                    Comment = "攻められた!"
                },
            };

            ///////////////////////////////////////////////////////////////////
            var rulesToCastlelAgeOnly = new EachAgesCommandCollection(GroupType.CastleAge,
                                                                      ResearchState.Researching,
                                                                      "帝王の時代進化中にのみ適用するルール")
            {
            };

            ///////////////////////////////////////////////////////////////////
            return(new CommandGroupCollection()
            {
                rulesInCastleAgeOnly,
                internalAffairsInCastleAge,
                militaryInCastleAge,
                endOfCastlelAge,
                rulesInCastleAgeOrLater,
                rulesToCastlelAgeOnly
            });
        }
コード例 #3
0
        protected override CommandGroupCollection GetCommandGroups()
        {
            ///////////////////////////////////////////////////////////////////
            var rulesInImperialAgeOnly = new EachAgesCommandCollection(GroupType.ImperialAge,
                                                                       "帝王の時代にのみ適用するルール")
            {
                new InitImperialAge(),                  //帝王の時代の初期設定
                new TrainVillager(200),                 //町の人を指定人数まで生産
                new BuildMonastery(5),                  //神殿の建設
                new BuildSiegeWorkshop(20),             //包囲攻撃訓練所の建設
                new TrainArcherLine(40),                //射手の生産
                new AttackNow(60, 90),                  //攻撃
                new ImperialAgeGathererPercentages(),   //帝王の時代の資源収集割合
                new ExtendTownSizeForBuildings(1, 100), //建物を建てるために町のサイズを拡張する
                new TrainScorpion(),                    //スコーピオンの生産
                new ResearchCoinage(),                  //貨幣制度の研究
                new ResearchBanking(),                  //銀行取引
                new ResearchGuilds(),                   //組合
                new ResearchSpiesTreason(),             //謀報/反逆の研究

                new ResearchFervor(),                   //篤信の研究
                new ResearchRedemption(),               //贖い
                new ResearchAtonement(),                //償い
                new ResearchHerbalMedicine(),           //薬草学
                new ResearchHeresy(),                   //異端
                new ResearchStonecutting(),             //人力起重機
                new ResearchGuardTower(),               //監視塔
            };

            ///////////////////////////////////////////////////////////////////
            var internalAffairsInImperial = new CommandCollection("帝王の時代の内政")
            {
                new ResearchTwoManSaw(),                               //両ひきのこぎりの研究
                new ResearchCropRotation(),                            //輪作の研究

                new SellSurplusCommodity(commodity.food, 1200, 1200),  //食料があまっていたら売る
                new SellSurplusCommodity(commodity.wood, 1200, 1200),  //木があまっていたら売る
                new SellSurplusCommodity(commodity.stone, 1200, 1200), //石があまっていたら売る
                //金が余ったら買う
                new BuyShortageCommodity(commodity.food, 1200, 1200),
                new BuyShortageCommodity(commodity.wood, 1200, 1200),
                new BuyShortageCommodity(commodity.stone, 1200, 650),
            };

            ///////////////////////////////////////////////////////////////////
            var militaryInCastleAge = new CommandCollection("帝王の時代の軍事")
            {
                new ResearchRingArcherArmor(),      //射手用鎖の鎧研究
                new ResearchBracer(),               //小手の研究
                new ResearchBlastFurnace(),         //高温溶鉱炉の研究
                new ResearchPlateBarding(),         //騎馬用甲冑の研究
                new ResearchPlateMail(),            //歩兵用甲冑の研究

                new TrainHandCannoneer(),           //砲撃手の生産
                new ResearchArbalest(),             //重石弓射手の研究
                new ResearchParthianTactics(),      //パルティアン戦術の研究

                new ResearchHalberdier(),           //矛槍兵の研究
                new ResearchTwoHandedSwordsman(),   //重剣剣士の研究
                new ResearchChanpion(),             //近衛剣士の研究

                new ResearchHussar(),               //ハサーの研究
                new ResearchCavalier(),             //重騎士の研究
                new ResearchPaladin(),              //近衛騎士の研究

                new TrainBombardCannon(),           //大砲の生産
                new ResearchCappedRam(),            //強化破城槌の研究
                new ResearchSiegeRam(),             //改良強化破城槌の研究
                new ResearchOnager(),               //改良型投石機の研究
                new ResearchSiegeOnager(),          //破城投石機の研究
                new ResearchHeavyScorpion(),        //ヘビースコーピオンの研究

                new ResearchFaith(),                //信仰の研究
                new ResearchIllumination(),         //啓蒙の研究
                new ResearchBlockPrinting(),        //活版印刷
                new ResearchTheocracy(),            //神政
            };

            ///////////////////////////////////////////////////////////////////
            var endOfInperialAge = new CommandCollection("帝王の時代中終盤")
            {
                new ResearchConscription(),         //徴用の研究
                new ResearchChemistry(),            //化学
                new ResearchArchitecture(),         //建築学
                new ResearchSiegeEngineers(),       //包囲攻撃技術
                new ResearchKeep(),                 //防御塔
                new ResearchBombardTower(),         //砲台

                new ResearchUniqueUnitUpgrade(),    //ユニークユニットの研究
                new ResearchUniqueResearch(),       //ユニークテクノロジの研究
                new TrainTrebuchet(),               //遠投投石機の生産
                new ResearchHoardings(),            //城壁強化の研究
                new ResearchSappers(),              //土木技術の研究
            };

            ///////////////////////////////////////////////////////////////////
            return(new CommandGroupCollection()
            {
                rulesInImperialAgeOnly,
                internalAffairsInImperial,
                militaryInCastleAge,
                endOfInperialAge
            });
        }
コード例 #4
0
        protected override CommandGroupCollection GetCommandGroups()
        {
            ///////////////////////////////////////////////////////////////////
            var feudalAgeIncludeResearching = new EachAgesCommandCollection(GroupType.FeudalAge,
                                                                            "領主の時代(城主進化中も含む)に適用するルール")
            {
                new InitFeudalAge(),                    //領主の時代の初期設定
                new BuildArcheryRange(3),               //射手育成所を2軒まで建設
                new BuildMill(2),                       //粉ひき所を建設
                new ResignTimeout("00:50:00"),          //指定の時間経過したら降参
                new FeudalAgeGathererPercentages(),     //領主の時代の資源収集割合
                new BuildMill(),                        //粉引き所
                new BuildBarracks(2),                   //戦士育成所2軒目の建設
            };

            ///////////////////////////////////////////////////////////////////
            var feudalAgeOnly = new EachAgesCommandCollection(
                GroupType.FeudalAge, ResearchState.Finished,
                "領主の時代にのみ適用するルール")
            {
                new TrainVillager(100, age.feudal_age),        //進化条件を満たすまで町の人の生産
                new TrainPerUnitPct(unit.spearman_line, 15,
                                    unit.skirmisher_line, 20), //槍兵の生産
                new TrainArcherLine(15),                       //射手生産
                new TrainSpearmanLine(10),                     //守備用に槍兵を生産
                new TrainSkirmisher(5),                        //散兵の生産
            };

            ///////////////////////////////////////////////////////////////////
            var internalAffairsInFeudalAge = new CommandCollection("領主の時代の内政")
            {
                new BuildBlackSmith(1, building.archery_range, 2), //射手育成所建設後に鉄工所を建設する
                new BuildMarket(1),                                //市場の建設
            };

            ///////////////////////////////////////////////////////////////////
            var militaryInFeudalAge = new CommandCollection("領主の時代の軍事")
            {
            };

            ///////////////////////////////////////////////////////////////////
            var endOfFeudalAge = new CommandCollection("領主の時代中終盤")
            {
                new ResearchCastleAge(),                    //城主の時代に進化
                new BuildMiningCamp(resource_type.stone),   //石の採掘所を作成
            };

            ///////////////////////////////////////////////////////////////////
            var ResearchingCastleAge = new EachAgesCommandCollection(
                GroupType.FeudalAgeOrLater, "領主の時代以降")
            {
                new BuildFarm(),        //畑の建設
                new BuildMiningCamp(),  //距離が空いたら採掘所を作成
            };

            ///////////////////////////////////////////////////////////////////
            var toCastleAge = new EachAgesCommandCollection(GroupType.FeudalAge,
                                                            ResearchState.Researching,
                                                            "城主の時代進化中にのみ適用するルール")
            {
                new BuildStable(2),         //騎兵育成所の建設
                new ResearchGoldMining(),   //金の採掘の研究
                new BuildMiningCamp(3),     //採掘所を3軒建設
            };

            return(new CommandGroupCollection()
            {
                feudalAgeIncludeResearching,
                feudalAgeOnly,
                internalAffairsInFeudalAge,
                militaryInFeudalAge,
                endOfFeudalAge,
                ResearchingCastleAge,
                toCastleAge
            });
        }