void Cover() { if (nodetype == -1) { EnemyPathing.TakeCover(player, transform, lastseenposition, blacklistnode, ViewRange, out nodetype, out node); } if (Vector3.Distance(enemyposition, movetoposition) < agent.stoppingDistance) { if ((waittime == -1) && (nodetype == 1)) { Crouching(true); } if (currtime == 0) { float scale = 1f; if (behaviour == 4) { scale = 1f; } else if (behaviour == 5) { if (coverout == true) { scale = 2f; } else { scale = 0.5f; } } else if (behaviour == 6) { if (coverout == true) { scale = 0.5f; } else { scale = 2f; } } waittime = Random.Range(4, 8) * scale; } cover = true; blacklistnode.Clear(); } if (cover == true) { if (playerseen == true) { if (EnemyPathing.CoverOK(player, node, nodetype) == false) { if (nodetype == 1) { Crouching(false); } EnemyPathing.TakeCover(player, transform, lastseenposition, blacklistnode, ViewRange, out nodetype, out node); if (nodetype == 1) { movetoposition = EnemyPathing.CNode[node]; } else if (nodetype == 2) { movetoposition = EnemyPathing.WNode[node]; } else { agent.stoppingDistance = 5f; movetoposition = lastseenposition; } waittime = -1f; currtime = 0f; cover = false; coverplayerseen = false; coverout = false; } else { coverplayerseen = true; } } if (currtime < waittime) { currtime += Time.deltaTime; } else if (waittime != -1) { currtime = 0; if (coverout == true) { if (coverplayerseen == false) { if (nodetype == 1) { Crouching(false); } node = -1; nodetype = -1; if (behaviour == 4) { behaviour = 1; Wait(5, 60); } else if (behaviour == 5) { behaviour = 1; } else if (behaviour == 6) { behaviour = 1; Wait(10, 60); } } else { coverout = false; if (nodetype == 1) { Crouching(true); } else { movetoposition = EnemyPathing.WallNode.GetChild(node).position; } } } else { if (behaviour == 4) { ignorenearbycover = false; } coverplayerseen = false; coverout = true; if (nodetype == 1) { Crouching(false); } else { movetoposition = EnemyPathing.WallNode.GetChild(node).GetChild(1).position; } } } } else { if (updatetime < 0.3f) { updatetime += Time.deltaTime; } else { updatetime = 0f; EnemyPathing.TakeCover(player, transform, lastseenposition, blacklistnode, ViewRange, out nodetype, out node); if (nodetype == 1) { movetoposition = EnemyPathing.CNode[node]; } else if (nodetype == 2) { movetoposition = EnemyPathing.WNode[node]; } else { agent.stoppingDistance = 5f; movetoposition = lastseenposition; } } } }