/// <summary> /// Causes the squad to move to hack the context indicator target. /// One squad member is randomly chosen to hack while the others occupy cover points /// near the target. /// </summary> /// <param name="_context"></param> void SquadHackCommand(CurrentContext _context) { HackableConsole console = _context.indicator_hit.GetComponent <HackableConsole>(); if (console.hacked) { return; } order_target_bobber.SetTarget(console.transform); squad_sense.hacker_squaddie = squad_sense.squaddies[Random.Range(0, num_squaddies)]; for (int i = 0; i < num_squaddies; ++i) { SquaddieAI squaddie = squad_sense.squaddies[i]; squaddie.knowledge.order_console = console; if (squaddie == squad_sense.hacker_squaddie) { // Hacker squaddie moves to hack. squaddie.knowledge.current_order = OrderType.HACK; squaddie.nav.destination = console.hack_point.position; } else { // The other squaddies move to defend. Vector3 pos = JHelper.PosToCirclePos(console.hack_point.position, num_squaddies, i, 5); squaddie.knowledge.current_order = OrderType.GUARD; squaddie.MoveToCoverNearPosition(pos); } } }
void UpdateHackPosition(SquaddieAI _squaddie) { if (_squaddie.knowledge.current_order == OrderType.HACK) { HackableConsole console = _squaddie.knowledge.order_console; float dist = Vector3.Distance(_squaddie.transform.position, console.transform.position); if (dist > _squaddie.nav.stoppingDistance) { _squaddie.nav.destination = console.hack_point.position; _squaddie.nav.isStopped = false; } } }