Example #1
0
        protected override void SpawnAgents()
        {
            BasicCultureObject cultureTeam  = MBMultiplayerOptionsAccessor.GetCultureTeam1(MBMultiplayerOptionsAccessor.MultiplayerOptionsAccessMode.CurrentMapOptions);
            BasicCultureObject cultureTeam2 = MBMultiplayerOptionsAccessor.GetCultureTeam2(MBMultiplayerOptionsAccessor.MultiplayerOptionsAccessMode.CurrentMapOptions);
            var availableCultures           = MBObjectManager.Instance.GetObjectTypeList <BasicCultureObject>()
                                              .Where(x => x.IsMainCulture).ToList();

            foreach (MissionPeer missionPeer in VirtualPlayer.Peers <MissionPeer>())
            {
                NetworkCommunicator networkPeer = missionPeer.GetNetworkPeer();
                if (networkPeer.IsSynchronized && missionPeer.ControlledAgent == null && !missionPeer.HasSpawnedAgentVisuals && missionPeer.Team != null && missionPeer.Team != base.Mission.SpectatorTeam && missionPeer.SpawnTimer.Check(MBCommon.GetTime(MBCommon.TimeType.Mission)))
                {
                    BasicCultureObject basicCultureObject = (missionPeer.Team.Side == BattleSideEnum.Attacker) ? cultureTeam : cultureTeam2;
                    MultiplayerClassDivisions.MPHeroClass mpheroClassForPeer =
                        MultiplayerClassDivisions.GetMPHeroClasses().GetRandomElement();                        // MultiplayerClassDivisions.GetMPHeroClassForPeer(missionPeer);


                    BasicCharacterObject heroCharacter = mpheroClassForPeer.HeroCharacter;

                    AgentBuildData agentBuildData = new AgentBuildData(heroCharacter);
                    agentBuildData.MissionPeer(missionPeer);

                    agentBuildData.EquipmentSeed(
                        this.MissionLobbyComponent.GetRandomFaceSeedForCharacter(heroCharacter, 0));
                    agentBuildData.Equipment(Equipment.GetRandomEquipmentElements(heroCharacter, true, false, agentBuildData.AgentEquipmentSeed));
                    agentBuildData.Team(missionPeer.Team);
                    agentBuildData.IsFemale(missionPeer.Peer.IsFemale);
                    agentBuildData.BodyProperties(base.GetBodyProperties(missionPeer, (missionPeer.Team == base.Mission.AttackerTeam) ? cultureTeam : cultureTeam2));
                    agentBuildData.VisualsIndex(0);
                    agentBuildData.ClothingColor1(availableCultures.GetRandomElement().Color);
                    agentBuildData.ClothingColor2(availableCultures.GetRandomElement().Color2);

                    agentBuildData.TroopOrigin(new BasicBattleAgentOrigin(heroCharacter));
                    if (this.GameMode.ShouldSpawnVisualsForServer(networkPeer))
                    {
                        base.AgentVisualSpawnComponent.SpawnAgentVisualsForPeer(missionPeer, agentBuildData, missionPeer.SelectedTroopIndex, false, 0);
                    }
                    this.GameMode.HandleAgentVisualSpawning(networkPeer, agentBuildData, 0);
                }
            }
            if (base.Mission.AttackerTeam != null)
            {
                int num = 0;
                foreach (Agent agent in base.Mission.AttackerTeam.ActiveAgents)
                {
                    if (agent.Character != null && agent.MissionPeer == null)
                    {
                        num++;
                    }
                }
                if (num < MBMultiplayerOptionsAccessor.GetNumberOfBotsTeam1(MBMultiplayerOptionsAccessor.MultiplayerOptionsAccessMode.CurrentMapOptions))
                {
                    base.SpawnBot(base.Mission.AttackerTeam, cultureTeam);
                }
            }
            if (base.Mission.DefenderTeam != null)
            {
                int num2 = 0;
                foreach (Agent agent2 in base.Mission.DefenderTeam.ActiveAgents)
                {
                    if (agent2.Character != null && agent2.MissionPeer == null)
                    {
                        num2++;
                    }
                }
                if (num2 < MBMultiplayerOptionsAccessor.GetNumberOfBotsTeam2(MBMultiplayerOptionsAccessor.MultiplayerOptionsAccessMode.CurrentMapOptions))
                {
                    var agent = SpawnBot(base.Mission.DefenderTeam, cultureTeam2);
                }
            }
        }