Advertisement
283375

SandwormAI - Updating

Feb 10th, 2024
1,087
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.38 KB | Source Code | 0 0
  1. public override void DoAIInterval()
  2. {
  3.     base.DoAIInterval();
  4.     if (StartOfRound.Instance.livingPlayers == 0 || isEnemyDead)
  5.     {
  6.         return;
  7.     }
  8.     PlayerControllerB playerControllerB = null;
  9.     switch (currentBehaviourStateIndex)
  10.     {
  11.     case 0:
  12.         if (!emerged && !inEmergingState)
  13.         {
  14.             if (!roamMap.inProgress)
  15.             {
  16.                 StartSearch(base.transform.position, roamMap);
  17.             }
  18.             agent.speed = 4f;
  19.             playerControllerB = GetClosestPlayer(requireLineOfSight: false, cannotBeInShip: true, cannotBeNearShip: true);
  20.             if (playerControllerB != null && mostOptimalDistance < 15f)
  21.             {
  22.                 SetMovingTowardsTargetPlayer(playerControllerB);
  23.                 SwitchToBehaviourState(1);
  24.                 chaseTimer = 0f;
  25.             }
  26.         }
  27.         break;
  28.     case 1:
  29.         if (roamMap.inProgress)
  30.         {
  31.             StopSearch(roamMap);
  32.         }
  33.         targetPlayer = GetClosestPlayer(requireLineOfSight: false, cannotBeInShip: true, cannotBeNearShip: true);
  34.         if (mostOptimalDistance > 19f)
  35.         {
  36.             targetPlayer = null;
  37.         }
  38.         if (targetPlayer == null)
  39.         {
  40.             SwitchToBehaviourState(0);
  41.             break;
  42.         }
  43.         SetMovingTowardsTargetPlayer(targetPlayer);
  44.         if (chaseTimer < 1.5f && Vector3.Distance(base.transform.position, targetPlayer.transform.position) < 4f && !(Vector3.Distance(StartOfRound.Instance.shipInnerRoomBounds.ClosestPoint(base.transform.position), base.transform.position) < 9f) && UnityEngine.Random.Range(0, 100) < 17)
  45.         {
  46.             StartEmergeAnimation();
  47.         }
  48.         break;
  49.     }
  50. }
  51.  
  52. public override void Update()
  53. {
  54.     base.Update();
  55.     if (isEnemyDead)
  56.     {
  57.         return;
  58.     }
  59.     if (stateLastFrame != currentBehaviourStateIndex)
  60.     {
  61.         stateLastFrame = currentBehaviourStateIndex;
  62.         chaseTimer = 0f;
  63.     }
  64.     switch (currentBehaviourStateIndex)
  65.     {
  66.     case 0:
  67.         if (creatureSFX.isPlaying)
  68.         {
  69.             creatureSFX.Stop();
  70.         }
  71.         break;
  72.     case 1:
  73.         if (!creatureSFX.isPlaying && !inEmergingState && !emerged)
  74.         {
  75.             int num = UnityEngine.Random.Range(0, ambientRumbleSFX.Length);
  76.             creatureSFX.clip = ambientRumbleSFX[num];
  77.             creatureSFX.Play();
  78.         }
  79.         if (!base.IsOwner)
  80.         {
  81.             break;
  82.         }
  83.         if (targetPlayer == null)
  84.         {
  85.             SwitchToBehaviourState(0);
  86.             break;
  87.         }
  88.         if (!PlayerIsTargetable(targetPlayer, cannotBeInShip: true) || Vector3.Distance(targetPlayer.transform.position, base.transform.position) > 22f)
  89.         {
  90.             chaseTimer += Time.deltaTime;
  91.         }
  92.         else
  93.         {
  94.             chaseTimer = 0f;
  95.         }
  96.         if (chaseTimer > 6f)
  97.         {
  98.             SwitchToBehaviourState(0);
  99.         }
  100.         break;
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement