// Token: 0x06003848 RID: 14408 public static void Tick() { long tick = DateTime.Now.Ticks % 10000000L; if (tick < Randomizer.LastTick) { if (ResetVolume == 1) { ResetVolume = 0; GameSettings.Instance.SoundEffectsVolume = CachedVolume; } else if (ResetVolume > 1) { ResetVolume--; } if (RepeatableCooldown > 0) { RepeatableCooldown--; } if (RandomizerStatsManager.StatsTimer > 0) { RandomizerStatsManager.StatsTimer--; } RandomizerStatsManager.IncTime(); if (Scenes.Manager.CurrentScene != null) { string scene = Scenes.Manager.CurrentScene.Scene; if (scene == "titleScreenSwallowsNest") { ResetTrackerCount++; if (ResetTrackerCount > 10) { RandomizerTrackedDataManager.Reset(); ResetTrackerCount = 0; } if (RandomizerCreditsManager.CreditsDone) { RandomizerCreditsManager.CreditsDone = false; } } else if (scene == "creditsScreen") { if (!CreditsActive && !RandomizerCreditsManager.CreditsDone) { CreditsActive = true; RandomizerCreditsManager.Initialize(); } } else if (scene == "theSacrifice" && RandomizerStatsManager.Active) { foreach (SceneManagerScene sms in Scenes.Manager.ActiveScenes) { if (sms.MetaData.Scene == "creditsScreen" && sms.CurrentState == SceneManagerScene.State.Loading) { RandomizerStatsManager.Finish(); } } } } if (CreditsActive && !RandomizerCreditsManager.CreditsDone) { RandomizerCreditsManager.Tick(); } if (Characters.Sein) { if (JustSpawned && SpawnWith != "" && Characters.Sein.Inventory) { JustSpawned = false; RandomizerAction spawnItem; if (Randomizer.StringKeyPickupTypes.Contains(SpawnWith.Substring(0, 2))) { spawnItem = new RandomizerAction(SpawnWith.Substring(0, 2), SpawnWith.Substring(2)); } else { spawnItem = new RandomizerAction(SpawnWith.Substring(0, 2), int.Parse(SpawnWith.Substring(2))); } RandomizerSwitch.GivePickup(spawnItem, 2, true); } if (!Characters.Sein.IsSuspended && Scenes.Manager.CurrentScene != null) { ResetTrackerCount = 0; RandomizerTrackedDataManager.UpdateBitfields(); RandomizerColorManager.UpdateHotColdTarget(); if (Characters.Sein.Position.y > 937f && Sein.World.Events.WarmthReturned && Scenes.Manager.CurrentScene.Scene == "ginsoTreeWaterRisingEnd") { if (Characters.Sein.Abilities.Bash.IsBashing) { Characters.Sein.Abilities.Bash.BashGameComplete(0f); } Characters.Sein.Position = new Vector3(750f, -120f); return; } if (Scenes.Manager.CurrentScene.Scene == "catAndMouseResurrectionRoom" && !Randomizer.canFinalEscape()) { if (Randomizer.Entrance) { Randomizer.EnterDoor(new Vector3(-242f, 489f)); return; } Characters.Sein.Position = new Vector3(20f, 105f); return; } else if (!Characters.Sein.Controller.CanMove && Scenes.Manager.CurrentScene.Scene == "moonGrottoGumosHideoutB") { Randomizer.LockedCount++; if (Randomizer.LockedCount >= 4) { GameController.Instance.ResetInputLocks(); return; } } else { Randomizer.LockedCount = 0; } } } } Randomizer.LastTick = tick; }
public static void ActivateBonusSkill(int ab) { if (!Characters.Sein || Characters.Sein.IsSuspended || ab == 0 || RandomizerBonusSkill.get(ab) == 0) { return; } switch (ab) { case 101: if (Characters.Sein.Energy.Current > 0f) { float amount = Characters.Sein.Energy.Current * 4f; Characters.Sein.Energy.SetCurrent(Characters.Sein.Mortality.Health.Amount / 4f); Characters.Sein.Mortality.Health.SetAmount(amount); return; } UI.SeinUI.ShakeEnergyOrbBar(); Characters.Sein.Energy.NotifyOutOfEnergy(); return; case 102: case 103: case 109: if (IsActive(ab)) { Deactivate(ab); BonusSkillText(BonusSkillNames[ab] + " off"); RandomizerBonusSkill.EnergyDrainRate -= DrainRates[ab]; } else if (Characters.Sein.Energy.Current > 5 * DrainRates[ab]) { Activate(ab); BonusSkillText(BonusSkillNames[ab] + " on"); RandomizerBonusSkill.EnergyDrainRate += DrainRates[ab]; } else { UI.SeinUI.ShakeEnergyOrbBar(); Characters.Sein.Energy.NotifyOutOfEnergy(); return; } if (ab == 102) { if (IsActive(ab) || Characters.Sein.Abilities.Carry.IsCarrying) { Characters.Sein.PlatformBehaviour.Gravity.BaseSettings.GravityAngle += 180f; } else { Characters.Sein.PlatformBehaviour.Gravity.BaseSettings.GravityAngle = 0f; } Characters.Sein.PlatformBehaviour.LeftRightMovement.PlatformMovement.LocalSpeedX *= -1; } break; case 104: if (!CanWarpTo(LastAltR)) { return; } if (Characters.Sein.Energy.Current >= 0.5f) { Characters.Sein.Energy.Spend(0.5f); Randomizer.WarpTo(LastAltR, 0); return; } UI.SeinUI.ShakeEnergyOrbBar(); Characters.Sein.Energy.NotifyOutOfEnergy(); return; case 105: if (!CanWarpTo(LastSoulLink)) { return; } if (Characters.Sein.Energy.Current >= 0.5f) { Characters.Sein.Energy.Spend(0.5f); Randomizer.WarpTo(LastSoulLink, 0); return; } UI.SeinUI.ShakeEnergyOrbBar(); Characters.Sein.Energy.NotifyOutOfEnergy(); return; case 106: if (!Characters.Sein.SoulFlame.InsideCheckpointMarker) { BonusSkillText("You can only Respec on a Soul Link!"); return; } { int apToGain = RandomizerBonus.ResetAP(); if (apToGain == 0) { BonusSkillText("No AP to refund"); return; } BonusSkillText("Respec successful. " + apToGain.ToString() + " AP refunded!"); CharacterAbility[] abilities = Characters.Sein.PlayerAbilities.Abilities; List <CharacterAbility> actuallySkills = new List <CharacterAbility>() { Characters.Sein.PlayerAbilities.WallJump, Characters.Sein.PlayerAbilities.ChargeFlame, Characters.Sein.PlayerAbilities.DoubleJump, Characters.Sein.PlayerAbilities.Bash, Characters.Sein.PlayerAbilities.Stomp, Characters.Sein.PlayerAbilities.Climb, Characters.Sein.PlayerAbilities.Glide, Characters.Sein.PlayerAbilities.ChargeJump, Characters.Sein.PlayerAbilities.Dash, Characters.Sein.PlayerAbilities.Grenade, Characters.Sein.PlayerAbilities.SpiritFlame }; for (int i = 0; i < abilities.Length; i++) { if (!actuallySkills.Contains(abilities[i])) { abilities[i].HasAbility = false; } } Characters.Sein.Prefabs.EnsureRightPrefabsAreThereForAbilities(); Characters.Sein.Inventory.SkillPointsCollected += apToGain; Characters.Sein.Level.SkillPoints += apToGain; } return; case 107: if (LevelExplosionCooldown > 0) { return; } if (Characters.Sein.Energy.Current >= 1f) { Characters.Sein.Energy.Spend(1f); OldHealth = Characters.Sein.Mortality.Health.Amount; OldEnergy = Characters.Sein.Energy.Current; Characters.Sein.Level.AttemptInstantiateLevelUp(); LevelExplosionCooldown = 15; return; } UI.SeinUI.ShakeEnergyOrbBar(); Characters.Sein.Energy.NotifyOutOfEnergy(); return; case 108: if (IsActive(ab)) { Deactivate(ab); BonusSkillText("Movement Bonuses on"); } else { Activate(ab); BonusSkillText("Movement Bonuses off"); } return; case 110: if (IsActive(ab)) { Deactivate(ab); BonusSkillText(BonusSkillNames[ab] + " off"); RandomizerBonusSkill.EnergyDrainRate -= DrainRates[ab]; } else if (Characters.Sein.Energy.Current > 1f) { Activate(ab); Characters.Sein.Energy.Spend(0.5f); BonusSkillText(BonusSkillNames[ab] + " on"); RandomizerBonusSkill.EnergyDrainRate += DrainRates[ab]; } else { UI.SeinUI.ShakeEnergyOrbBar(); Characters.Sein.Energy.NotifyOutOfEnergy(); return; } break; case 111: Characters.Sein.Mortality.DamageReciever.OnRecieveDamage(new Damage(9000f, new Vector2(0, 0), Characters.Sein.Position, DamageType.Lava, Characters.Sein.GameObject)); break; case 112: if (CapturedEnemy == null) { BonusSkillNames[112] = "Pokeball (empty)"; Characters.Sein.Abilities.SpiritFlameTargetting.UpdateClosestAttackables(); foreach (ISpiritFlameAttackable target in Characters.Sein.Abilities.SpiritFlameTargetting.ClosestAttackables) { string logMessage = target.GetType().ToString(); if (target is EntityTargetting) { var enemyTarget = target as EntityTargetting; var entity = enemyTarget.Entity; if (entity is JumperEnemy) { CapturedName = "Fronkey"; } else if (entity is FishEnemy) { CapturedName = "Fish"; } else if (entity is SpitterEnemy) { CapturedName = "Frog"; } else if (entity is KamikazeSootEnemy) { CapturedName = "Baneling"; } else if (entity is DashOwlEnemy) { CapturedName = "Bird"; } else { return; } CapturedEnemy = entity as Enemy; Randomizer.LogError(CapturedEnemy.BoundingBox.ToString()); CapturedOffset = CapturedEnemy.PositionToPlayerPosition; CapturedLeft = Characters.Sein.FaceLeft; CapturedEnemy.gameObject.SetActiveRecursively(false); //Events.Scheduler.OnSceneRootDisabled.Remove(new Action<SceneRoot>(CapturedEnemy.OnSceneUnloaded)); BonusSkillNames[112] = "Pokeball (" + CapturedName + ")"; } } } else { if (CapturedLeft != Characters.Sein.FaceLeft) { CapturedOffset.x *= -1; } CapturedEnemy.Position = Characters.Sein.Position + CapturedOffset; CapturedEnemy.gameObject.SetActiveRecursively(true); CapturedEnemy = null; BonusSkillNames[112] = "Pokeball (empty)"; } break; case 114: if (IsActive(ab)) { Deactivate(ab); BonusSkillText("Ori"); } else { Activate(ab); BonusSkillText("Naru"); } return; break; case 1587: if (!Characters.Sein.Controller.CanMove || !Characters.Sein.Active) { return; } Randomizer.WarpTo(new Vector3(-2478, -593, 0), 0); GameController.Instance.RemoveGameplayObjects(); RandomizerStatsManager.Active = false; RandomizerCreditsManager.Initialize(); break; case 113: if (IsActive(ab)) { Deactivate(ab); BonusSkillText("Bash/Stomp Damage on"); } else { Activate(ab); BonusSkillText("Bash/Stomp Damage off"); } break; default: return; } }