The schedules I've planned are very simple.
-Soldiers go on safe spots to reload and when there's a lot of danger.
-Soldiers will divide themselves into Squads for better strategies, basically, when Squad A is hiding behind sandbags, Squad B is firing from different angles, then, the Squads will alternate their schedules so that Squad A is in attack mode and Squad B is on retreat mode.
The problem here is that I can't figure out how to make the soldiers spawn being from a certain Squad. I'll use many PlayerSpawnTriggers and some of them will spawn soldiers from different Squads, I mean, they're fixed, no need of a soldier changing his Squad on mid-game.
I'll paste here my entire script, you'll see incomplete lines and methods that I was testing to see if it works, having no positive results.
Hope anyone can help me. Thanks!
// SQUAD SETTING & NPC FIGHTING private IProfileClothingItem Clh_Helmet = (Game.GetSingleObjectByCustomID("OpProfile") as IObjectPlayerProfileInfo).GetProfile().Head; public IPlayer[] GetSoldiers() { return (from Q in Game.GetPlayers() where (Q.IsAIControlled && !Q.IsDead && Q.GetTeam() == PlayerTeam.Team1 && Q != plr_player && Q.GetProfile().Head == Clh_Helmet) select Q).ToArray(); } public IObject CurrentTarget = null; public IObject[] AvailableSpots() { return Game.GetObjectsByCustomID("SafeSpot"); } // Squad Setting. public void SetSquad(TriggerArgs args, string squad) { (args.Sender as IObject) } // Soldier AI's. public void SetSquadA(TriggerArgs args) { IPlayer player = (args.Caller as IObjectPlayerSpawnTrigger).GetLastCreatedPlayer(); } // Update Soldiers to Retreat or Fight depending on circunstances. public void UpdateSoldiers(TriggerArgs args) { foreach (IPlayer soldier in GetSoldiers()) { BotBehaviorSet soldiersRetreatBehavior = soldier.GetBotBehaviorSet(); soldiersRetreatBehavior.EliminateEnemies = false; soldiersRetreatBehavior.SearchForItems = false; soldiersRetreatBehavior.AggroRange = 0f; soldiersRetreatBehavior.GuardRange = 30f; soldiersRetreatBehavior.ChaseRange = 45f; soldiersRetreatBehavior.TeamLineUp = true; soldiersRetreatBehavior.OffensiveDiveLevel = 0f; soldiersRetreatBehavior.OffensiveEnrageLevel = 0.35f; soldiersRetreatBehavior.OffensiveClimbingLevel = 0f; soldiersRetreatBehavior.SeekCoverWhileShooting = 1f; soldier.SetBotBehaviorSet(soldiersRetreatBehavior); IObject myTarget = (from Q in AvailableSpots() orderby Vector2.Distance(soldier.GetWorldPosition(), Q.GetWorldPosition()) ascending select Q).FirstOrDefault(); soldier.SetGuardTarget(myTarget); } }