Exemplo n.º 1
0
 private void Advance()
 {
     if (team.IsPlayerTeam && !team.IsPlayerGeneral && team.IsPlayerSergeant)
     {
         SoundTacticalHorn(TacticComponent.MoveHornSoundIndex);
     }
     if (_skirmishers != null)
     {
         _skirmishers.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_skirmishers);
         //_skirmishers.AI.SetBehaviorWeight<BehaviorRegroup>(1.75f);
         if (side == 0)
         {
             _skirmishers.AI.SetBehaviorWeight <RBMBehaviorForwardSkirmish>(1f).FlankSide = FormationAI.BehaviorSide.Left;
         }
         else
         {
             _skirmishers.AI.SetBehaviorWeight <RBMBehaviorForwardSkirmish>(1f).FlankSide = FormationAI.BehaviorSide.Right;
         }
     }
     if (_mainInfantry != null)
     {
         _mainInfantry.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_mainInfantry);
         _mainInfantry.AI.SetBehaviorWeight <BehaviorAdvance>(1f);
         _mainInfantry.AI.SetBehaviorWeight <BehaviorRegroup>(1.75f);
     }
     if (_archers != null)
     {
         _archers.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_archers);
         _archers.AI.SetBehaviorWeight <BehaviorSkirmishLine>(0f);
         _archers.AI.SetBehaviorWeight <BehaviorSkirmish>(0f);
         _archers.AI.SetBehaviorWeight <BehaviorScreenedSkirmish>(1f);
         _archers.AI.SetBehaviorWeight <BehaviorRegroup>(1.75f);
     }
     if (_leftCavalry != null)
     {
         _leftCavalry.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_leftCavalry);
         _leftCavalry.AI.SetBehaviorWeight <BehaviorProtectFlank>(1f).FlankSide = FormationAI.BehaviorSide.Left;
         _leftCavalry.AI.SetBehaviorWeight <BehaviorMountedSkirmish>(1f);
     }
     if (_rightCavalry != null)
     {
         _rightCavalry.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_rightCavalry);
         _rightCavalry.AI.SetBehaviorWeight <BehaviorProtectFlank>(1f).FlankSide = FormationAI.BehaviorSide.Right;
         _rightCavalry.AI.SetBehaviorWeight <BehaviorMountedSkirmish>(1f);
     }
     if (_rangedCavalry != null)
     {
         _rangedCavalry.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_rangedCavalry);
         _rangedCavalry.AI.SetBehaviorWeight <BehaviorMountedSkirmish>(1f);
         _rangedCavalry.AI.SetBehaviorWeight <BehaviorHorseArcherSkirmish>(1f);
     }
 }
Exemplo n.º 2
0
        public static bool TickOccasionally_Prefix(TacticComponent ____currentTactic)
        {
            if (____currentTactic == null)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
 private void Attack()
 {
     if (team.IsPlayerTeam && !team.IsPlayerGeneral && team.IsPlayerSergeant)
     {
         SoundTacticalHorn(TacticComponent.AttackHornSoundIndex);
     }
     if (_mainInfantry != null)
     {
         _mainInfantry.AI.ResetBehaviorWeights();
         _mainInfantry.AI.SetBehaviorWeight <BehaviorCharge>(1f);
     }
     if (_skirmishers != null)
     {
         _skirmishers.AI.ResetBehaviorWeights();
         _skirmishers.AI.SetBehaviorWeight <BehaviorCharge>(1f);
         //if (side == 0)
         //{
         //	_skirmishers.AI.SetBehaviorWeight<RBMBehaviorForwardSkirmish>(1f).FlankSide = FormationAI.BehaviorSide.Left;
         //}
         //else
         //{
         //	_skirmishers.AI.SetBehaviorWeight<RBMBehaviorForwardSkirmish>(1f).FlankSide = FormationAI.BehaviorSide.Right;
         //}
     }
     if (_archers != null)
     {
         _archers.AI.ResetBehaviorWeights();
         _archers.AI.SetBehaviorWeight <BehaviorSkirmish>(1f);
         _archers.AI.SetBehaviorWeight <BehaviorSkirmishLine>(0f);
         _archers.AI.SetBehaviorWeight <BehaviorScreenedSkirmish>(0f);
     }
     if (_leftCavalry != null)
     {
         _leftCavalry.AI.ResetBehaviorWeights();
         _leftCavalry.AI.SetBehaviorWeight <BehaviorMountedSkirmish>(1f);
         _leftCavalry.AI.SetBehaviorWeight <BehaviorCharge>(1f);
     }
     if (_rightCavalry != null)
     {
         _rightCavalry.AI.ResetBehaviorWeights();
         _rightCavalry.AI.SetBehaviorWeight <BehaviorMountedSkirmish>(1f);
         _rightCavalry.AI.SetBehaviorWeight <BehaviorCharge>(1f);
     }
     if (_rangedCavalry != null)
     {
         _rangedCavalry.AI.ResetBehaviorWeights();
         TacticComponent.SetDefaultBehaviorWeights(_rangedCavalry);
         _rangedCavalry.AI.SetBehaviorWeight <BehaviorMountedSkirmish>(1f);
         _rangedCavalry.AI.SetBehaviorWeight <BehaviorHorseArcherSkirmish>(1f);
     }
 }
Exemplo n.º 4
0
            static void Postfix(Team __instance)
            {
                if (__instance.Banner != null)
                {
                    if (i == 500)
                    {
                        if (__instance.IsAttacker)
                        {
                            FieldInfo _currentTacticField = typeof(TeamAIComponent).GetField("_currentTactic", BindingFlags.NonPublic | BindingFlags.Instance);
                            _currentTacticField.DeclaringType.GetField("_currentTactic");
                            TacticComponent _currentTactic = (TacticComponent)_currentTacticField.GetValue(__instance.TeamAI);

                            InformationManager.DisplayMessage(new InformationMessage("Attacker: " + _currentTactic));
                            foreach (Formation formation in __instance.Formations)
                            {
                                if (formation.QuerySystem.IsMeleeFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("infantry: " + formation.AI.ActiveBehavior));
                                }
                                else if (formation.QuerySystem.IsCavalryFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("cavalry: " + formation.AI.ActiveBehavior));
                                }
                                else if (formation.QuerySystem.IsRangedCavalryFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("ranged cavalry: " + formation.AI.ActiveBehavior));
                                }
                                else if (formation.QuerySystem.IsRangedFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("ranged: " + formation.AI.ActiveBehavior));
                                }
                            }
                        }
                        else
                        {
                            FieldInfo _currentTacticField = typeof(TeamAIComponent).GetField("_currentTactic", BindingFlags.NonPublic | BindingFlags.Instance);
                            _currentTacticField.DeclaringType.GetField("_currentTactic");
                            TacticComponent _currentTactic = (TacticComponent)_currentTacticField.GetValue(__instance.TeamAI);

                            InformationManager.DisplayMessage(new InformationMessage("Defender: " + _currentTactic));
                            foreach (Formation formation in __instance.Formations)
                            {
                                if (formation.QuerySystem.IsMeleeFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("infantry: " + formation.AI.ActiveBehavior));
                                }
                                else if (formation.QuerySystem.IsCavalryFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("cavalry: " + formation.AI.ActiveBehavior));
                                }
                                else if (formation.QuerySystem.IsRangedCavalryFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("ranged cavalry: " + formation.AI.ActiveBehavior));
                                }
                                else if (formation.QuerySystem.IsRangedFormation)
                                {
                                    InformationManager.DisplayMessage(new InformationMessage("ranged: " + formation.AI.ActiveBehavior));
                                }
                            }
                        }
                        i = 0;
                    }
                    else
                    {
                        i++;
                    }
                }
            }