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); } }
public static bool TickOccasionally_Prefix(TacticComponent ____currentTactic) { if (____currentTactic == null) { return(false); } return(true); }
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); } }
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++; } } }