public override void Update(bool eu) { if (this.timeSinceSeenPlayer >= 0) { this.timeSinceSeenPlayer++; } this.restartConversationAfterCurrentDialoge = false; base.Update(eu); //Noting Important :P for (int j = 0; j < this.oracle.room.game.cameras.Length; j++) { if (this.oracle.room.game.cameras[j].room == this.oracle.room) { this.oracle.room.game.cameras[j].virtualMicrophone.volumeGroups[2] = 1f - this.oracle.room.gravity; } else { this.oracle.room.game.cameras[j].virtualMicrophone.volumeGroups[2] = 1f; } } this.currSubBehavior.Update(); if (!this.currSubBehavior.CurrentlyCommunicating) { this.pathProgression = Mathf.Min(1f, this.pathProgression + 1f / Mathf.Lerp(40f + this.pathProgression * 80f, Vector2.Distance(this.lastPos, this.nextPos) / 5f, 0.5f)); } //Debug.Log(string.Concat((this.oracle as MaxOracle).arm.cornerPositions[0], (this.oracle as MaxOracle).arm.cornerPositions[1], (this.oracle as MaxOracle).arm.cornerPositions[2], (this.oracle as MaxOracle).arm.cornerPositions[3])); this.currentGetTo = Custom.Bezier(this.lastPos, this.ClampVectorInRoom(this.lastPos + this.lastPosHandle), this.nextPos, this.ClampVectorInRoom(this.nextPos + this.nextPosHandle), this.pathProgression); this.floatyMovement = false; this.investigateAngle += this.invstAngSpeed; this.inActionCounter++; if (this.pathProgression >= 1f && this.consistentBasePosCounter > 100 && !this.oracle.arm.baseMoving) { this.allStillCounter++; } else { this.allStillCounter = 0; } this.lastKillFac = this.killFac; this.action = Action.General_Idle; switch (this.action) { case Action.General_Idle: if (this.movementBehavior != MovementBehavior.Idle && this.movementBehavior != MovementBehavior.Meditate) { this.movementBehavior = MovementBehavior.Idle; } this.throwOutCounter = 0; if (false) { this.discoverCounter++; if (this.oracle.room.GetTilePosition(this.player.mainBodyChunk.pos).y < 32 && (this.discoverCounter > 220 || Custom.DistLess(this.player.mainBodyChunk.pos, this.oracle.firstChunk.pos, 150f) || !Custom.DistLess(this.player.mainBodyChunk.pos, this.oracle.room.MiddleOfTile(this.oracle.room.ShortcutLeadingToNode(1).StartTile), 150f))) { this.SeePlayer(); } } break; case Action.General_GiveMark: this.movementBehavior = MovementBehavior.KeepDistance; if (this.inActionCounter > 30 && this.inActionCounter < 300) { this.player.Stun(20); this.player.mainBodyChunk.vel += Vector2.ClampMagnitude(this.oracle.room.MiddleOfTile(24, 14) - this.player.mainBodyChunk.pos, 40f) / 40f * 2.8f * Mathf.InverseLerp(30f, 160f, (float)this.inActionCounter); } if (this.inActionCounter == 30) { this.oracle.room.PlaySound(SoundID.SS_AI_Give_The_Mark_Telekenisis, 0f, 1f, 1f); } if (this.inActionCounter == 300) { this.player.mainBodyChunk.vel += Custom.RNV() * 10f; this.player.bodyChunks[1].vel += Custom.RNV() * 10f; this.player.Stun(40); (this.oracle.room.game.session as StoryGameSession).saveState.deathPersistentSaveData.theMark = true; if (this.player.slugcatStats.name == SlugcatStats.Name.Red) { this.oracle.room.game.GetStorySession.saveState.redExtraCycles = true; if (this.oracle.room.game.cameras[0].hud != null) { if (this.oracle.room.game.cameras[0].hud.textPrompt != null) { this.oracle.room.game.cameras[0].hud.textPrompt.cycleTick = 0; } if (this.oracle.room.game.cameras[0].hud.map != null && this.oracle.room.game.cameras[0].hud.map.cycleLabel != null) { this.oracle.room.game.cameras[0].hud.map.cycleLabel.UpdateCycleText(); } } if (this.player.redsIllness != null) { this.player.redsIllness.GetBetter(); } if (!this.oracle.room.game.GetStorySession.saveState.deathPersistentSaveData.pebblesHasIncreasedRedsKarmaCap) { this.oracle.room.game.GetStorySession.saveState.IncreaseKarmaCapOneStep(); this.oracle.room.game.GetStorySession.saveState.deathPersistentSaveData.pebblesHasIncreasedRedsKarmaCap = true; } else { Debug.Log("PEBBLES HAS ALREADY GIVEN RED ONE KARMA CAP STEP"); } } else { (this.oracle.room.game.session as StoryGameSession).saveState.deathPersistentSaveData.karmaCap = 9; } (this.oracle.room.game.session as StoryGameSession).saveState.deathPersistentSaveData.karma = (this.oracle.room.game.session as StoryGameSession).saveState.deathPersistentSaveData.karmaCap; for (int l = 0; l < this.oracle.room.game.cameras.Length; l++) { if (this.oracle.room.game.cameras[l].hud.karmaMeter != null) { this.oracle.room.game.cameras[l].hud.karmaMeter.UpdateGraphic(); } } for (int m = 0; m < 20; m++) { this.oracle.room.AddObject(new Spark(this.player.mainBodyChunk.pos, Custom.RNV() * UnityEngine.Random.value * 40f, new Color(1f, 1f, 1f), null, 30, 120)); } } if (this.inActionCounter > 300 && this.player.graphicsModule != null) { (this.player.graphicsModule as PlayerGraphics).markAlpha = Mathf.Max((this.player.graphicsModule as PlayerGraphics).markAlpha, Mathf.InverseLerp(500f, 300f, (float)this.inActionCounter)); } if (this.inActionCounter >= 500) { this.NewAction(this.afterGiveMarkAction); } break; } this.Move(); if (this.working != this.getToWorking) { this.working = Custom.LerpAndTick(this.working, this.getToWorking, 0.05f, 0.0333333351f); } if (!this.currSubBehavior.Gravity) { this.oracle.room.gravity = Custom.LerpAndTick(this.oracle.room.gravity, 0f, 0.05f, 0.02f); } else { this.oracle.room.gravity = 1f - this.working; } }