Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Pikmoons v3.2.5
BepInEx/plugins/PikMoons.dll
Decompiled 5 days agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalMin; using Microsoft.CodeAnalysis; using PikMoons; using UnityEngine; using itolib.Behaviours.Grabbables; using itolib.Behaviours.Networking; using itolib.Behaviours.Props; using itolib.Enums; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: IgnoresAccessChecksTo("NoteBoxz.LethalMin")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("PikMoons")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Plugin for PF1MIL's PikMoons.")] [assembly: AssemblyFileVersion("3.2.5.0")] [assembly: AssemblyInformationalVersion("3.2.5+c0d14c0aafe8df251dcd592bdb9cbbe6d66f8c80")] [assembly: AssemblyProduct("PikMoons")] [assembly: AssemblyTitle("PikMoons")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("3.2.5.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace PikMoons { public class Config { public ConfigEntry<bool> PIKMIN_MUSIC { get; private set; } public ConfigEntry<float> MUSIC_VOLUME { get; private set; } public Config(ConfigFile cfg) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown cfg.SaveOnConfigSet = false; PIKMIN_MUSIC = cfg.Bind<bool>("Audio", "PikminMusic", true, "Enable Pikmin music and ambience."); MUSIC_VOLUME = cfg.Bind<float>("Audio", "MusicVolume", 1f, new ConfigDescription("Change volume of outdoor Pikmin music.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 2f), Array.Empty<object>())); ClearOrphanedEntries(cfg); cfg.SaveOnConfigSet = true; cfg.Save(); } private void ClearOrphanedEntries(ConfigFile config) { PropertyInfo propertyInfo = AccessTools.Property(typeof(ConfigFile), "OrphanedEntries"); ((Dictionary<ConfigDefinition, string>)propertyInfo.GetValue(config))?.Clear(); } } [BepInPlugin("PF1MIL.PikMoons", "PikMoons", "3.2.5")] public class Plugin : BaseUnityPlugin { internal const string GUID = "PF1MIL.PikMoons"; internal const string PLUGIN_NAME = "PikMoons"; internal const string VERSION = "3.2.5"; internal static ManualLogSource? StaticLogger { get; private set; } public static Config Settings { get; private set; } private void Awake() { StaticLogger = ((BaseUnityPlugin)this).Logger; try { Settings = new Config(((BaseUnityPlugin)this).Config); ManualLogSource? staticLogger = StaticLogger; if (staticLogger != null) { staticLogger.LogInfo((object)"'PikMoons' loaded!"); } } catch (Exception arg) { StaticLogger.LogError((object)string.Format("Error while initializing '{0}': {1}", "PikMoons", arg)); } } } } namespace PikMoons.Behaviours { public class ChangeSettings : MonoBehaviour { [SerializeField] private AudioSource? musicSource; [SerializeField] private GameObject? brambleGates; [SerializeField] private GameObject? stoneGates; [SerializeField] private GameObject? electricGates; [SerializeField] private GameObject? waterDrains; [SerializeField] private GameObject? crushableBags; [SerializeField] private GameObject? clamclamps; [SerializeField] private GameObject? bombRocks; [SerializeField] private GameObject? pushableBox; [SerializeField] private GameObject? pelletPosies; [SerializeField] private GameObject? defaultFieldPellets; [SerializeField] private GameObject? customFieldPellets; [SerializeField] private GameObject? nectarGrassPatches; [SerializeField] private GameObject? nectarRockPatches; [SerializeField] private GameObject? eggs; [SerializeField] private GameObject? honeyWisps; [SerializeField] private GameObject? unmarkedSpectralids; [SerializeField] private GameObject? shovels; [SerializeField] private GameObject? extraParticles; [SerializeField] private GameObject? betaTrees; [SerializeField] private GameObject? snagretHoleOldTreeModel; [SerializeField] private GameObject? snagretHoleNewTreeModel; [SerializeField] private GameObject? waterGeysers; [SerializeField] private GameObject? fireGeysers; [SerializeField] private GameObject? gasPipes; [SerializeField] private GameObject? burgeoningSpiderwort; [SerializeField] private GameObject? easterEggs; [SerializeField] private GameObject? lightRayMeshes; private float defaultVolume = 1f; private void Start() { if ((Object)(object)musicSource != (Object)null) { defaultVolume = musicSource.volume; musicSource.mute = !Plugin.Settings.PIKMIN_MUSIC.Value; AudioSource? obj = musicSource; obj.volume *= Plugin.Settings.MUSIC_VOLUME.Value; Plugin.Settings.PIKMIN_MUSIC.SettingChanged += ChangeMusicMute; Plugin.Settings.MUSIC_VOLUME.SettingChanged += ChangeMusicVolume; } } private void OnDestroy() { Plugin.Settings.PIKMIN_MUSIC.SettingChanged -= ChangeMusicMute; Plugin.Settings.MUSIC_VOLUME.SettingChanged -= ChangeMusicVolume; } private void ChangeMusicMute(object sender, EventArgs args) { if ((Object)(object)musicSource != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { musicSource.mute = !val2.Value; } } } private void ChangeMusicVolume(object sender, EventArgs args) { if ((Object)(object)musicSource != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<float> val2) { musicSource.volume = defaultVolume * val2.Value; } } } private void ChangeBrambleGatesOn(object sender, EventArgs args) { if ((Object)(object)brambleGates != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { brambleGates.SetActive(!val2.Value); } } } private void ChangeStoneGatesOn(object sender, EventArgs args) { if ((Object)(object)stoneGates != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { stoneGates.SetActive(!val2.Value); } } } private void ChangeElectricGatesOn(object sender, EventArgs args) { if ((Object)(object)electricGates != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { electricGates.SetActive(!val2.Value); } } } private void ChangeWaterDrainsOn(object sender, EventArgs args) { if ((Object)(object)waterDrains != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { waterDrains.SetActive(!val2.Value); } } } private void ChangeCrushableBagsOn(object sender, EventArgs args) { if ((Object)(object)crushableBags != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { crushableBags.SetActive(!val2.Value); } } } private void ChangeClamclampsOn(object sender, EventArgs args) { if ((Object)(object)clamclamps != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { clamclamps.SetActive(!val2.Value); } } } private void ChangeBombRocksOn(object sender, EventArgs args) { if ((Object)(object)bombRocks != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { bombRocks.SetActive(!val2.Value); } } } private void ChangePushableBoxesOn(object sender, EventArgs args) { if ((Object)(object)pushableBox != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { pushableBox.SetActive(!val2.Value); } } } private void ChangePelletPosiesOn(object sender, EventArgs args) { if ((Object)(object)pelletPosies != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { pelletPosies.SetActive(!val2.Value); } } } private void ChangeDefaultFieldPelletsOn(object sender, EventArgs args) { if ((Object)(object)defaultFieldPellets != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { defaultFieldPellets.SetActive(!val2.Value); } } } private void ChangeCustomFieldPelletsOn(object sender, EventArgs args) { if ((Object)(object)customFieldPellets != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { customFieldPellets.SetActive(!val2.Value); } } } private void ChangeNectarGrassPatchesOn(object sender, EventArgs args) { if ((Object)(object)nectarGrassPatches != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { nectarGrassPatches.SetActive(!val2.Value); } } } private void ChangeNectarRockPatchesOn(object sender, EventArgs args) { if ((Object)(object)nectarRockPatches != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { nectarRockPatches.SetActive(!val2.Value); } } } private void ChangeEggsOn(object sender, EventArgs args) { if ((Object)(object)eggs != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { eggs.SetActive(!val2.Value); } } } private void ChangeHoneywispsOn(object sender, EventArgs args) { if ((Object)(object)honeyWisps != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { honeyWisps.SetActive(!val2.Value); } } } private void ChangeUnmarkedSpectralidsOn(object sender, EventArgs args) { if (!((Object)(object)unmarkedSpectralids != (Object)null)) { return; } SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null) { ConfigEntry<bool> val2 = val.ChangedSetting as ConfigEntry<bool>; if (val2 == null) { } } } private void ChangeBonusShovelsOn(object sender, EventArgs args) { if ((Object)(object)shovels != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); ScrapSpawner val3 = default(ScrapSpawner); if (val != null && val.ChangedSetting is ConfigEntry<bool> && ((Component)this).TryGetComponent<ScrapSpawner>(ref val3)) { ((NetworkedSpawner<GrabbableObject>)(object)val3).ActivationTime = (ActivationTime)4; } } } private void ChangeExtraParticlesOn(object sender, EventArgs args) { if ((Object)(object)extraParticles != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { extraParticles.SetActive(!val2.Value); } } } private void ChangeBetaTreesOn(object sender, EventArgs args) { if ((Object)(object)betaTrees != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { betaTrees.SetActive(!val2.Value); } } } private void ChangeWaterGeysersOn(object sender, EventArgs args) { if ((Object)(object)waterGeysers != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { waterGeysers.SetActive(!val2.Value); } } } private void ChangeFireGeysersOn(object sender, EventArgs args) { if ((Object)(object)fireGeysers != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { fireGeysers.SetActive(!val2.Value); } } } private void ChangeGasPipesOn(object sender, EventArgs args) { if ((Object)(object)gasPipes != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { gasPipes.SetActive(!val2.Value); } } } private void ChangeBerryPlantsOn(object sender, EventArgs args) { if (!((Object)(object)burgeoningSpiderwort != (Object)null)) { return; } SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null) { ConfigEntry<bool> val2 = val.ChangedSetting as ConfigEntry<bool>; if (val2 == null) { } } } private void ChangeEasterEggLocationsOn(object sender, EventArgs args) { if (!((Object)(object)easterEggs != (Object)null)) { return; } SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null) { ConfigEntry<bool> val2 = val.ChangedSetting as ConfigEntry<bool>; if (val2 == null) { } } } private void ChangeLightRayMeshesOn(object sender, EventArgs args) { if ((Object)(object)lightRayMeshes != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { lightRayMeshes.SetActive(!val2.Value); } } } private void NewSnagretHoleGeometry(object sender, EventArgs args) { if ((Object)(object)snagretHoleNewTreeModel != (Object)null && (Object)(object)snagretHoleOldTreeModel != (Object)null) { SettingChangedEventArgs val = (SettingChangedEventArgs)(object)((args is SettingChangedEventArgs) ? args : null); if (val != null && val.ChangedSetting is ConfigEntry<bool> val2) { snagretHoleNewTreeModel.SetActive(!val2.Value); snagretHoleOldTreeModel.SetActive(val2.Value); } } } } } namespace Pikmoons.Behaviours { public class CaveMusicManager : MonoBehaviour { [Serializable] public class CaveMusic { public AudioClip? defaultMusic; public AudioClip? nearEnemyMusic; public AudioClip? inBattleMusic; public AudioClip? workingMusic; public AudioClip? carryingTreasureMusic; } public MoonMusicManager currentMoonManager; public AudioSource caveMusicSource; internal PlayerControllerB localPlayerController; internal bool isInCave; public CaveMusic caveMusicClips; public void Start() { localPlayerController = GameNetworkManager.Instance.localPlayerController; } public void Update() { } public void SwapTrack() { int timeSamples = caveMusicSource.timeSamples; caveMusicSource.Stop(); if (currentMoonManager.isInBattle) { caveMusicSource.clip = caveMusicClips.inBattleMusic; } else if (currentMoonManager.isNearEnemy) { caveMusicSource.clip = caveMusicClips.nearEnemyMusic; } else if (currentMoonManager.isCarryingTreasure) { caveMusicSource.clip = caveMusicClips.carryingTreasureMusic; } else if (currentMoonManager.isWorking) { caveMusicSource.clip = caveMusicClips.workingMusic; } else { caveMusicSource.clip = caveMusicClips.defaultMusic; } caveMusicSource.Play(); caveMusicSource.timeSamples = timeSamples; } public void PlayCaveMusic(bool playMusic) { if (playMusic) { currentMoonManager.pikminMusicSource.mute = true; SwapTrack(); isInCave = true; } else { caveMusicSource.Stop(); currentMoonManager.pikminMusicSource.mute = false; isInCave = false; } } } public class GrabbableToEnemiesDisabler : MonoBehaviour { private ItemGrabbable thisItem; public void Awake() { thisItem = ((Component)this).GetComponent<ItemGrabbable>(); } public void EnableGrabbableToEnemies(bool grabbable) { ((GrabbableObject)thisItem).grabbableToEnemies = grabbable; } } public class MoonMusicManager : MonoBehaviour { public enum TimeOfDay { Morning, Day, Night } [Serializable] public class MorningMusic { public AudioClip? defaultMusic; public AudioClip? nearEnemyMusic; public AudioClip? inBattleMusic; public AudioClip? workingMusic; public AudioClip? carryingTreasureMusic; public AudioClip? nearSpiderwortMusic; } [Serializable] public class DayMusic { public AudioClip? defaultMusic; public AudioClip? nearEnemyMusic; public AudioClip? inBattleMusic; public AudioClip? workingMusic; public AudioClip? carryingTreasureMusic; public AudioClip? nearSpiderwortMusic; } [Serializable] public class NightMusic { public AudioClip? defaultMusic; public AudioClip? nearEnemyMusic; public AudioClip? inBattleMusic; public AudioClip? workingMusic; public AudioClip? carryingTreasureMusic; public AudioClip? nearSpiderwortMusic; } [Serializable] public class RainMusic { public AudioClip? defaultMusic; public AudioClip? inBattleMusic; public AudioClip? workingMusic; public AudioClip? carryingTreasureMusic; public AudioClip? nightMusic; } public AudioSource pikminMusicSource; internal TimeOfDay currentTOD = TimeOfDay.Morning; public bool useMorningMusic; internal bool isNearEnemy; internal bool isInBattle; internal bool isWorking; internal bool isCarryingTreasure; internal bool isNearSpiderwort; internal bool hasScrap; internal bool isRaining; internal PlayerControllerB localPlayerController; [SerializeField] private GameObject carriedScrapSensorPrefab; internal GameObject spawnedCarriedScrapSensor; internal float timer; [SerializeField] private List<CaveMusicManager> easterEggCaves; public MorningMusic morningMusicClips; public DayMusic dayMusicClips; public NightMusic nightMusicClips; public RainMusic rainMusicClips; public void Start() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Invalid comparison between Unknown and I4 //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Invalid comparison between Unknown and I4 localPlayerController = GameNetworkManager.Instance.localPlayerController; LevelWeatherType currentWeather = RoundManager.Instance.currentLevel.currentWeather; if ((currentWeather - 1 <= 1 || (int)currentWeather == 4) ? true : false) { isRaining = true; } if (useMorningMusic) { pikminMusicSource.clip = morningMusicClips.defaultMusic; Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: Use Morning Music is set to true, setting clip to default morning music."); } else { currentTOD = TimeOfDay.Day; pikminMusicSource.clip = dayMusicClips.defaultMusic; Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: Use Morning Music is set to false, setting clip to default day music."); } SwapTrack(); Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: Starting music."); if (Object.op_Implicit((Object)(object)((Component)localPlayerController).gameObject.GetComponentInChildren<PikminCarriedScrapSensor>())) { spawnedCarriedScrapSensor = ((Component)((Component)localPlayerController).gameObject.GetComponentInChildren<PikminCarriedScrapSensor>()).gameObject; return; } SpawnCarriedScrapSensor(); spawnedCarriedScrapSensor.GetComponent<PikminCarriedScrapSensor>().SetMusicManager(((Component)this).gameObject.GetComponent<MoonMusicManager>()); } public void Update() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) if (timer < 10f) { timer += Time.deltaTime; } else { spawnedCarriedScrapSensor.transform.position = ((Component)localPlayerController).transform.position; } int num = 0; for (int i = 0; i < localPlayerController.ItemSlots.Length; i++) { if ((Object)(object)localPlayerController.ItemSlots[i] != (Object)null && localPlayerController.ItemSlots[i].itemProperties.isScrap) { num++; } } if (num > 0) { if (!isWorking) { isWorking = true; SwapTrack(); } } else if (isWorking) { isWorking = false; SwapTrack(); } if (StartOfRound.Instance.fearLevel >= 0.5f && !isInBattle) { isInBattle = true; SwapTrack(); return; } float fearLevel = StartOfRound.Instance.fearLevel; if (fearLevel >= 0.01f && fearLevel <= 0.5f && !isNearEnemy) { isInBattle = false; isNearEnemy = true; SwapTrack(); } else if (StartOfRound.Instance.fearLevel < 0.01f && (isInBattle || isNearEnemy)) { isInBattle = false; isNearEnemy = false; SwapTrack(); } } public void IncrementTimeOfDay() { TimeOfDay timeOfDay = currentTOD; switch (currentTOD) { case TimeOfDay.Morning: currentTOD = TimeOfDay.Day; break; case TimeOfDay.Day: currentTOD = TimeOfDay.Night; break; case TimeOfDay.Night: Plugin.StaticLogger.LogError((object)"PIKMOONS MUSIC MANAGER: Time of Day was already night, and cannot be incremented further."); return; } Plugin.StaticLogger.LogMessage((object)("PIKMOONS MUSIC MANAGER: Time of Day has been incremented from " + timeOfDay.ToString() + " to " + currentTOD.ToString() + ". Swapping music track accordingly.")); SwapTrack(); } public void DecrementTimeOfDay() { TimeOfDay timeOfDay = currentTOD; switch (currentTOD) { case TimeOfDay.Morning: Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: Time of Day was already set to Morning, and cannot be decremented further."); break; case TimeOfDay.Day: if (!useMorningMusic) { Plugin.StaticLogger.LogError((object)"PIKMOONS MUSIC MANAGER: Time of Day cannot be decremented to Morning, due to UseMorning bool state."); return; } currentTOD = TimeOfDay.Morning; break; case TimeOfDay.Night: currentTOD = TimeOfDay.Day; return; } Plugin.StaticLogger.LogMessage((object)("PIKMOONS MUSIC MANAGER: Time of Day has been decremented from " + timeOfDay.ToString() + " to " + currentTOD.ToString() + ". Swapping music track accordingly.")); SwapTrack(); } public void FlagInBattle(bool inBattle) { if (inBattle) { if (isInBattle) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'in battle' was already flagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'in battle' has been flagged."); } else if (!inBattle) { if (!isInBattle) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'in battle' was already unflagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'in battle' has been unflagged."); } isInBattle = inBattle; SwapTrack(); } public void FlagNearEnemy(bool nearEnemy) { if (nearEnemy) { if (isNearEnemy) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near enemy' was already flagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near enemy' has been flagged."); } else if (!nearEnemy) { if (!isNearEnemy) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near enemy' was already unflagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near enemy' has been unflagged."); } isNearEnemy = nearEnemy; SwapTrack(); } public void FlagNearSpiderwort(bool nearSpiderwort) { if (nearSpiderwort) { if (isNearSpiderwort) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near spiderwort' was already flagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near spiderwort' has been flagged."); } else if (!nearSpiderwort) { if (!isNearSpiderwort) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near spiderwort' was already unflagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'near spiderwort' has been unflagged."); } isNearSpiderwort = nearSpiderwort; SwapTrack(); } public void FlagCarryingTreasure(bool carryingTreasure) { if (carryingTreasure) { if (isCarryingTreasure) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'carrying treasure' was already flagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'carrying treasure' has been flagged."); } else if (!carryingTreasure) { if (!isCarryingTreasure) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'carrying treasure' was already unflagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'carrying treasure' has been unflagged."); } isCarryingTreasure = carryingTreasure; SwapTrack(); } public void FlagWorking(bool working) { if (working) { if (isWorking) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'working' was already flagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'working' has been flagged."); } else if (!working) { if (!isWorking) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'working' was already unflagged."); return; } Plugin.StaticLogger.LogMessage((object)"PIKMOONS MUSIC MANAGER: 'working' has been unflagged."); } isWorking = working; SwapTrack(); } public void SwapTrack() { int timeSamples = pikminMusicSource.timeSamples; pikminMusicSource.Stop(); if (isInBattle) { if (isRaining) { TimeOfDay timeOfDay = currentTOD; if ((uint)timeOfDay <= 1u) { pikminMusicSource.clip = rainMusicClips.inBattleMusic; } else { pikminMusicSource.clip = rainMusicClips.nightMusic; } } else { switch (currentTOD) { case TimeOfDay.Morning: pikminMusicSource.clip = morningMusicClips.inBattleMusic; break; case TimeOfDay.Day: pikminMusicSource.clip = dayMusicClips.inBattleMusic; break; case TimeOfDay.Night: pikminMusicSource.clip = nightMusicClips.inBattleMusic; break; } } } else if (isNearEnemy) { if (isRaining) { TimeOfDay timeOfDay = currentTOD; if ((uint)timeOfDay <= 1u) { pikminMusicSource.clip = rainMusicClips.inBattleMusic; } else { pikminMusicSource.clip = rainMusicClips.nightMusic; } } else { switch (currentTOD) { case TimeOfDay.Morning: pikminMusicSource.clip = morningMusicClips.nearEnemyMusic; break; case TimeOfDay.Day: pikminMusicSource.clip = dayMusicClips.nearEnemyMusic; break; case TimeOfDay.Night: pikminMusicSource.clip = nightMusicClips.nearEnemyMusic; break; } } } else if (isNearSpiderwort) { if (isRaining) { TimeOfDay timeOfDay = currentTOD; if ((uint)timeOfDay <= 1u) { pikminMusicSource.clip = rainMusicClips.carryingTreasureMusic; } else { pikminMusicSource.clip = rainMusicClips.nightMusic; } } else { switch (currentTOD) { case TimeOfDay.Morning: pikminMusicSource.clip = morningMusicClips.nearSpiderwortMusic; break; case TimeOfDay.Day: pikminMusicSource.clip = dayMusicClips.nearSpiderwortMusic; break; case TimeOfDay.Night: pikminMusicSource.clip = nightMusicClips.nearSpiderwortMusic; break; } } } else if (isCarryingTreasure) { if (isRaining) { TimeOfDay timeOfDay = currentTOD; if ((uint)timeOfDay <= 1u) { pikminMusicSource.clip = rainMusicClips.carryingTreasureMusic; } else { pikminMusicSource.clip = rainMusicClips.nightMusic; } } else { switch (currentTOD) { case TimeOfDay.Morning: pikminMusicSource.clip = morningMusicClips.carryingTreasureMusic; break; case TimeOfDay.Day: pikminMusicSource.clip = dayMusicClips.carryingTreasureMusic; break; case TimeOfDay.Night: pikminMusicSource.clip = nightMusicClips.carryingTreasureMusic; break; } } } else if (isWorking) { if (isRaining) { TimeOfDay timeOfDay = currentTOD; if ((uint)timeOfDay <= 1u) { pikminMusicSource.clip = rainMusicClips.workingMusic; } else { pikminMusicSource.clip = rainMusicClips.nightMusic; } } else { switch (currentTOD) { case TimeOfDay.Morning: pikminMusicSource.clip = morningMusicClips.workingMusic; break; case TimeOfDay.Day: pikminMusicSource.clip = dayMusicClips.workingMusic; break; case TimeOfDay.Night: pikminMusicSource.clip = nightMusicClips.workingMusic; break; } } } else if (isRaining) { TimeOfDay timeOfDay = currentTOD; if ((uint)timeOfDay <= 1u) { pikminMusicSource.clip = rainMusicClips.defaultMusic; } else { pikminMusicSource.clip = rainMusicClips.nightMusic; } } else { switch (currentTOD) { case TimeOfDay.Morning: pikminMusicSource.clip = morningMusicClips.defaultMusic; break; case TimeOfDay.Day: pikminMusicSource.clip = dayMusicClips.defaultMusic; break; case TimeOfDay.Night: pikminMusicSource.clip = nightMusicClips.defaultMusic; break; } } pikminMusicSource.Play(); pikminMusicSource.timeSamples = timeSamples; if (easterEggCaves == null) { return; } foreach (CaveMusicManager easterEggCafe in easterEggCaves) { if (easterEggCafe.isInCave) { easterEggCafe.SwapTrack(); } } } public void SpawnCarriedScrapSensor() { spawnedCarriedScrapSensor = Object.Instantiate<GameObject>(carriedScrapSensorPrefab); spawnedCarriedScrapSensor.transform.parent = ((Component)localPlayerController).transform; } } public class PikminCarriedScrapSensor : MonoBehaviour { internal MoonMusicManager localMoonMusicManager; internal int carriedInRangeCount; internal List<PikminItem> itemsInRange; public void Start() { } public void Update() { int num = 0; if (itemsInRange != null) { foreach (PikminItem item in itemsInRange) { if (item.IsBeingCarried) { num++; } } } if (carriedInRangeCount > 0 && !localMoonMusicManager.isCarryingTreasure) { localMoonMusicManager.isCarryingTreasure = true; localMoonMusicManager.SwapTrack(); } else if (carriedInRangeCount == 0 && localMoonMusicManager.isCarryingTreasure) { localMoonMusicManager.isCarryingTreasure = false; localMoonMusicManager.SwapTrack(); } } public void OnTriggerEnter(Collider other) { GrabbableObject val = default(GrabbableObject); if (((Component)other).TryGetComponent<GrabbableObject>(ref val)) { itemsInRange.Add(((Component)val).GetComponent<PikminItem>()); Plugin.StaticLogger.LogMessage((object)"PIKMOONS CARRY SENSOR: Nearby PikminItem added to list."); } } public void OnTriggerExit(Collider other) { GrabbableObject val = default(GrabbableObject); if (((Component)other).TryGetComponent<GrabbableObject>(ref val) && itemsInRange.Contains(((Component)val).GetComponent<PikminItem>())) { if (itemsInRange.Remove(((Component)val).GetComponent<PikminItem>())) { Plugin.StaticLogger.LogMessage((object)"PIKMOONS CARRY SENSOR: Nearby PikminItem left sensor range; removed from list."); } else { Plugin.StaticLogger.LogError((object)"PIKMOONS CARRY SENSOR: Nearby PikminItem that left sensor range was not in list, or removal has failed."); } } } public void SetMusicManager(MoonMusicManager manager) { localMoonMusicManager = manager; } } public class ReceiveShadowsOff : MonoBehaviour { public void Awake() { MeshRenderer val = default(MeshRenderer); if (((Component)((Component)this).transform).TryGetComponent<MeshRenderer>(ref val)) { ((Renderer)val).receiveShadows = false; } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }