예제 #1
0
        public virtual void Init(string hudLabelText, MyMwcObjectBuilder_SmallShip_Bot objectBuilder)
        {
            System.Diagnostics.Debug.Assert(objectBuilder.Faction != 0);

            //StringBuilder label = new StringBuilder(hudLabelText);
            TotalAliveBots++;

            string fixedHudLabelText = hudLabelText;
            if (string.IsNullOrEmpty(hudLabelText) || hudLabelText == GetFriendlyName())
            {
                fixedHudLabelText = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.Ship);
            }

            base.Init(fixedHudLabelText, objectBuilder);

            Faction = objectBuilder.Faction;
            m_aiTemplate = MyBotAITemplates.GetTemplate(objectBuilder.AITemplate);
            Aggressivity = objectBuilder.Aggressivity;
            SeeDistance = objectBuilder.SeeDistance == 0 ? 1000 : objectBuilder.SeeDistance;
            SleepDistance = objectBuilder.SleepDistance == 0 ? 1000 : objectBuilder.SleepDistance;
            PatrolMode = objectBuilder.PatrolMode;
            ActiveAI = true;
            m_leaderId = objectBuilder.Leader;
            AITemplate.SetIdleBehavior(objectBuilder.IdleBehavior);
            LeaderLostEnabled = objectBuilder.LeaderLostEnabled;
            ActiveAI = ActiveAI;

            SetupWeapons(objectBuilder);

            SetupDifficulty();

            //if (hudLabelText == GetFriendlyName())
            //{
            //    label = new StringBuilder("");
            //}

            //if (string.IsNullOrEmpty(hudLabelText) || hudLabelText == GetFriendlyName())
            //{
            //    DisplayName = MyTextsWrapper.GetFormatString(MyTextsWrapperEnum.Ship);
            //}

            //MyHud.ChangeText(this, label, null, 10000, MyHudIndicatorFlagsEnum.SHOW_ALL);


            MyModelDummy dummy;
            if (GetModelLod0().Dummies.TryGetValue("destruction", out dummy))
            {
                m_biochemEffectLocalMatrix = dummy.Matrix;
            }

            m_shock_time = -1;

            MyBotCoordinator.AddBot(this);
            
            InitSpoiledHolograms();

            MyEntities.OnEntityRemove += MyEntities_OnEntityRemove;

            m_dangerZoneId = MyDangerZones.Instance.Register(this);
            
            MySession.Static.LinkEntities += OnLinkEntities;
        }
예제 #2
0
 public void SetAITemplate(MyAITemplateEnum template)
 {
     MyBotAITemplate oldTemplate = m_aiTemplate;
     m_aiTemplate = MyBotAITemplates.GetTemplate(template);
     m_aiTemplate.SetIdleBehavior(oldTemplate.GetBehaviorType(BotDesireType.IDLE));
 }