Decompiled source of WarStrikes v0.9.2

Mods/WarStrikes.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Text;
using BoneLib;
using BoneLib.BoneMenu;
using BoneLib.Notifications;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSLZ.Marrow;
using Il2CppSLZ.Marrow.Data;
using Il2CppSLZ.Marrow.Warehouse;
using LabFusion.Marrow.Pool;
using LabFusion.Network;
using LabFusion.Network.Serialization;
using LabFusion.RPC;
using LabFusion.SDK.Modules;
using MelonLoader;
using MelonLoader.Preferences;
using MelonLoader.Utils;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.Rendering;
using WarStrikes;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(Main), "WarStrikes", "0.9.2", "you", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: MelonAdditionalDependencies(new string[] { "BoneLib" })]
[assembly: MelonOptionalDependencies(new string[] { "LabFusion" })]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("WarStrikes")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("WarStrikes")]
[assembly: AssemblyTitle("WarStrikes")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[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 WarStrikes
{
	public static class Fx
	{
		private class Ov
		{
			public GameObject Go;

			public Material Mat;

			public Texture2D Tex;

			public float Peak;

			public float Hold;

			public float Fade;

			public float T;

			public float Scale = 3.1f;

			public bool On;

			public bool Pulse;

			public Color Col;
		}

		public class DudState
		{
			public bool Done;
		}

		private class Dud
		{
			public GameObject Go;

			public Rigidbody Rb;

			public DudState St;

			public Action Boom;

			public int Id;

			public float Rest;

			public float Last;

			public float LastHit;

			public int Hits;

			public Vector3 LastPos;
		}

		private class Flame
		{
			public GameObject Go;

			public MeshFilter Mf;

			public Mesh Own;

			public Vector3[] V;

			public Vector2[] UV;

			public float Ph;

			public Vector3 Pos;

			public Vector3 Vel;

			public float T;

			public float Life;

			public float Size;

			public float Off;

			public float Fps;

			public float Delay;

			public float Sign;

			public bool Field;

			public Vector3 Center;

			public float Radius;

			public float FieldEnd;
		}

		private class Timer
		{
			public float T;

			public float Dur;

			public Action<float> Upd;

			public Action End;

			public bool Done;
		}

		private struct TrailStyle
		{
			public float Life;

			public float Life2;

			public float Size;

			public float Size2;

			public float Gray;

			public float Gray2;

			public float Alpha;

			public float PerMeter;

			public float Grow;

			public float Noise;

			public bool Glow;

			public Color GlowColor;

			public float GlowSize;
		}

		public static readonly List<Bomb> PendingBombs = new List<Bomb>();

		private static Shader _modelShader;

		private static ShaderMode _modelShaderFor = (ShaderMode)(-1);

		private static Material _plainModelMat;

		private static ShaderMode _plainFor = (ShaderMode)(-1);

		private static bool _warnedNoShader;

		private static Dictionary<string, Shader> _loadedShaders;

		private static Shader _flatShader;

		private static GameObject _sirenGo;

		private static int _sirenGen;

		private static LineRenderer _lr;

		private static GameObject _marker;

		private static readonly Color Fire0 = new Color(1f, 1f, 0.95f);

		private static readonly Color Fire1 = new Color(1f, 0.9f, 0.75f);

		private static readonly Color FireMid = new Color(1f, 0.72f, 0.5f);

		private static readonly Color FireEnd = new Color(0.2f, 0.09f, 0.07f);

		private static readonly Color Dirt0 = new Color(0.2f, 0.15f, 0.1f);

		private static readonly Color Dirt1 = new Color(0.43f, 0.33f, 0.22f);

		private static readonly Color Dust0 = new Color(0.56f, 0.49f, 0.39f);

		private static readonly Color Dust1 = new Color(0.72f, 0.65f, 0.54f);

		private static float _prevVol = -1f;

		private static int _hearGen;

		private static readonly Ov _ovVig = new Ov
		{
			Col = new Color(0f, 0f, 0f)
		};

		private static readonly Ov _ovBlood = new Ov
		{
			Col = new Color(1f, 1f, 1f),
			Pulse = true
		};

		private static readonly Ov _ovHaze = new Ov
		{
			Col = new Color(1f, 1f, 1f),
			Pulse = true
		};

		private static Material _depthMat;

		private static readonly List<GameObject> _craters3d = new List<GameObject>();

		private static Texture2D _craterTex;

		private static Material _craterMat;

		private static Material _rockMat;

		private static readonly float[] CraterRho = new float[12]
		{
			0f, 0.18f, 0.36f, 0.52f, 0.66f, 0.78f, 0.88f, 0.96f, 1.04f, 1.12f,
			1.2f, 1.3f
		};

		private const int CraterSeg = 40;

		public const int DudShotsToBlow = 7;

		private static readonly List<Dud> _duds = new List<Dud>();

		private static bool _ambientSaved;

		private static float _ambientOrig;

		private static int _ambGen;

		private static int _shardsAlive;

		private static readonly Dictionary<int, Material> _shardMats = new Dictionary<int, Material>();

		private static readonly Color SoilA = new Color(0.2f, 0.14f, 0.09f);

		private static readonly Color SoilB = new Color(0.42f, 0.33f, 0.22f);

		private static readonly Color MetalA = new Color(0.12f, 0.12f, 0.13f);

		private static readonly Color MetalB = new Color(0.38f, 0.37f, 0.35f);

		private static bool _flipbookBroken;

		private const int FireFrames = 32;

		private const int FireCols = 8;

		private const int FireRows = 4;

		private static Texture2D _fireSheet;

		private static Material _fireMat;

		private const int GX = 6;

		private const int GY = 9;

		private static int[] _gridTris;

		private static bool _fireTried;

		private static bool _fireOk;

		private static readonly List<Flame> _flames = new List<Flame>();

		public static readonly Quaternion Up = Quaternion.Euler(-90f, 0f, 0f);

		public static readonly Quaternion Flat = Quaternion.Euler(90f, 0f, 0f);

		private static readonly List<Timer> _timers = new List<Timer>();

		private static readonly Dictionary<int, Texture2D> _texCache = new Dictionary<int, Texture2D>();

		private static readonly Dictionary<int, Material> _matCache = new Dictionary<int, Material>();

		private static Shader _addShader;

		private static bool _addSearched;

		private static GameObject _flashGo;

		private static Material _flashMat;

		private static float _flashStrength;

		private static float _flashHold;

		private static float _flashFade;

		private static float _flashT;

		private static Color _flashColor = new Color(1f, 1f, 0.95f);

		public static bool LitModels
		{
			get
			{
				Shader val = PickModelShader();
				if ((Object)(object)val != (Object)null && ((Object)val).name.ToLowerInvariant().Contains("lit"))
				{
					return !((Object)val).name.ToLowerInvariant().Contains("unlit");
				}
				return false;
			}
		}

		public static bool IsPlayerPart(Transform t)
		{
			try
			{
				RigManager rigManager = Player.RigManager;
				if ((Object)(object)rigManager != (Object)null && t.IsChildOf(((Component)rigManager).transform))
				{
					return true;
				}
				PhysicsRig physicsRig = Player.PhysicsRig;
				return (Object)(object)physicsRig != (Object)null && t.IsChildOf(((Component)physicsRig).transform);
			}
			catch
			{
				return false;
			}
		}

		public static bool RayNearestNonPlayer(Vector3 origin, Vector3 dir, float maxDist, out Vector3 point)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: 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_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			point = default(Vector3);
			bool result = false;
			float num = float.MaxValue;
			foreach (RaycastHit item in (Il2CppArrayBase<RaycastHit>)(object)Physics.RaycastAll(origin, dir, maxDist))
			{
				RaycastHit current = item;
				Collider collider = ((RaycastHit)(ref current)).collider;
				if (!((Object)(object)collider == (Object)null) && !collider.isTrigger && !IsPlayerPart(((Component)collider).transform) && ((RaycastHit)(ref current)).distance < num)
				{
					num = ((RaycastHit)(ref current)).distance;
					point = ((RaycastHit)(ref current)).point;
					result = true;
				}
			}
			return result;
		}

		public static void ResetCaches()
		{
			_loadedShaders = null;
			_flatShader = null;
			_modelShader = null;
			_modelShaderFor = (ShaderMode)(-1);
			_plainModelMat = null;
			_plainFor = (ShaderMode)(-1);
			ResetParticleCaches();
			ResetFlames();
		}

		internal static Shader FindLoaded(string name)
		{
			Shader value = null;
			try
			{
				value = Shader.Find(name);
			}
			catch
			{
			}
			if ((Object)(object)value != (Object)null)
			{
				return value;
			}
			try
			{
				if (_loadedShaders == null)
				{
					_loadedShaders = new Dictionary<string, Shader>();
					foreach (Shader item in Resources.FindObjectsOfTypeAll<Shader>())
					{
						if ((Object)(object)item != (Object)null)
						{
							string key = ((Object)item).name.ToLowerInvariant();
							if (!_loadedShaders.ContainsKey(key))
							{
								_loadedShaders[key] = item;
							}
						}
					}
				}
				_loadedShaders.TryGetValue(name.ToLowerInvariant(), out value);
			}
			catch
			{
			}
			return value;
		}

		internal static Shader FindFirst(params string[] names)
		{
			for (int i = 0; i < names.Length; i++)
			{
				Shader val = FindLoaded(names[i]);
				if ((Object)(object)val != (Object)null)
				{
					return val;
				}
			}
			return null;
		}

		internal static Shader PickModelShader()
		{
			ShaderMode shader = Settings.Shader;
			if ((Object)(object)_modelShader != (Object)null && _modelShaderFor == shader)
			{
				return _modelShader;
			}
			Shader val = null;
			switch (shader)
			{
			case ShaderMode.InternalColored:
				val = FindFirst("Hidden/Internal-Colored");
				break;
			case ShaderMode.Sprites:
				val = FindFirst("Sprites/Default");
				break;
			case ShaderMode.UrpUnlit:
				val = FindFirst("Universal Render Pipeline/Unlit");
				break;
			case ShaderMode.UnlitColor:
				val = FindFirst("Unlit/Color");
				break;
			case ShaderMode.LitMAS:
				val = FindFirst("SLZ/LitMAS/LitMAS Opaque");
				break;
			case ShaderMode.Lit:
				val = FindFirst("Universal Render Pipeline/Lit", "Universal Render Pipeline/Lit (PBR Workflow)", "Universal Render Pipeline/Simple Lit");
				break;
			}
			if ((Object)(object)val == (Object)null && shader == ShaderMode.Auto)
			{
				val = FindFirst("Universal Render Pipeline/Lit", "Universal Render Pipeline/Lit (PBR Workflow)", "Universal Render Pipeline/Simple Lit");
			}
			if ((Object)(object)val == (Object)null)
			{
				val = FindFirst("Sprites/Default", "Hidden/Internal-Colored", "Universal Render Pipeline/Unlit", "Unlit/Color", "Universal Render Pipeline/Lit", "Standard");
			}
			if ((Object)(object)val == (Object)null)
			{
				if (!_warnedNoShader)
				{
					_warnedNoShader = true;
					MelonLogger.Warning("WarStrikes: no usable shader found, models will be pink.");
				}
				val = Shader.Find("Hidden/InternalErrorShader");
			}
			_modelShader = val;
			_modelShaderFor = shader;
			if ((Object)(object)val != (Object)null)
			{
				MelonLogger.Msg("WarStrikes: model shader = '" + ((Object)val).name + "' (mode " + shader.ToString() + ")");
			}
			return val;
		}

		private static Material BuildModelMaterial(Texture2D tex)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Expected O, but got Unknown
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			Material val = new Material(PickModelShader());
			if (val.HasProperty("_Color"))
			{
				val.color = Color.white;
			}
			if (val.HasProperty("_BaseColor"))
			{
				val.SetColor("_BaseColor", Color.white);
			}
			if ((Object)(object)tex != (Object)null)
			{
				val.mainTexture = (Texture)(object)tex;
				if (val.HasProperty("_BaseMap"))
				{
					val.SetTexture("_BaseMap", (Texture)(object)tex);
				}
			}
			if (val.HasProperty("_ZWrite"))
			{
				val.SetInt("_ZWrite", 1);
			}
			if (val.HasProperty("_Cull"))
			{
				val.SetInt("_Cull", 0);
			}
			if (val.HasProperty("_SrcBlend"))
			{
				val.SetInt("_SrcBlend", 1);
			}
			if (val.HasProperty("_DstBlend"))
			{
				val.SetInt("_DstBlend", 0);
			}
			if (val.HasProperty("_Smoothness"))
			{
				val.SetFloat("_Smoothness", 0.3f);
			}
			if (val.HasProperty("_Metallic"))
			{
				val.SetFloat("_Metallic", 0.12f);
			}
			((Object)val).hideFlags = (HideFlags)32;
			return val;
		}

		public static Material ModelMaterial(Texture2D tex, bool customUntextured)
		{
			if ((Object)(object)tex != (Object)null)
			{
				return BuildModelMaterial(tex);
			}
			ShaderMode shader = Settings.Shader;
			if ((Object)(object)_plainModelMat != (Object)null && _plainFor == shader)
			{
				return _plainModelMat;
			}
			_plainModelMat = BuildModelMaterial(null);
			_plainFor = shader;
			return _plainModelMat;
		}

		internal static Material FlatMat(Color c)
		{
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_flatShader == (Object)null)
			{
				_flatShader = FindFirst("Sprites/Default", "Hidden/Internal-Colored", "Unlit/Color");
			}
			Material val = new Material(((Object)(object)_flatShader != (Object)null) ? _flatShader : PickModelShader());
			if (val.HasProperty("_Color"))
			{
				val.color = c;
			}
			if (val.HasProperty("_BaseColor"))
			{
				val.SetColor("_BaseColor", c);
			}
			return val;
		}

		public static void LogShaders()
		{
			string[] array = new string[8] { "Sprites/Default", "Hidden/Internal-Colored", "Universal Render Pipeline/Unlit", "Universal Render Pipeline/Lit", "Universal Render Pipeline/Particles/Unlit", "Unlit/Color", "SLZ/LitMAS/LitMAS Opaque", "Standard" };
			foreach (string text in array)
			{
				MelonLogger.Msg("WarStrikes shader '" + text + "': " + (((Object)(object)Shader.Find(text) != (Object)null) ? "found" : "missing"));
			}
			Shader val = PickModelShader();
			MelonLogger.Msg("WarStrikes: models use '" + (((Object)(object)val != (Object)null) ? ((Object)val).name : "none") + "'");
		}

		public static string JetKey(StrikeType t)
		{
			return t switch
			{
				StrikeType.Precision => "engine_b1", 
				StrikeType.Carpet => "engine_b52", 
				StrikeType.Cluster => "engine_a10", 
				StrikeType.Napalm => "engine_prop", 
				_ => "engine_b2", 
			};
		}

		public static float JetVolume(StrikeType t)
		{
			if (t != StrikeType.Napalm)
			{
				return 0.85f;
			}
			return 1f;
		}

		public static int BoomLayers()
		{
			return Mathf.Clamp(Mathf.RoundToInt(Settings.BoomBoost.Value), 1, 4);
		}

		public static void PlayRadio(string key, float vol = 1f)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			try
			{
				AudioClip val = Sounds.Get(key);
				if (!((Object)(object)val == (Object)null))
				{
					Transform head = Player.Head;
					GameObject val2 = new GameObject("WS_Radio");
					val2.transform.position = (((Object)(object)head != (Object)null) ? head.position : Vector3.zero);
					AudioSource obj = val2.AddComponent<AudioSource>();
					obj.clip = val;
					obj.spatialBlend = 0f;
					obj.volume = Mathf.Clamp01(vol * Settings.Volume.Value);
					obj.Play();
					Object.Destroy((Object)val2, val.length + 0.5f);
				}
			}
			catch
			{
			}
		}

		public static void StartSiren(float vol = 0.55f)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Expected O, but got Unknown
			try
			{
				StopSirenNow();
				AudioClip val = Sounds.Get("siren");
				if ((Object)(object)val == (Object)null)
				{
					return;
				}
				Transform head = Player.Head;
				GameObject val2 = new GameObject("WS_Siren");
				val2.transform.position = (((Object)(object)head != (Object)null) ? head.position : Vector3.zero);
				AudioSource obj = val2.AddComponent<AudioSource>();
				obj.clip = val;
				obj.loop = true;
				obj.spatialBlend = 0f;
				obj.volume = Mathf.Clamp01(vol * Settings.Volume.Value);
				obj.Play();
				_sirenGo = val2;
				int gen = ++_sirenGen;
				After(120f, delegate
				{
					if (gen == _sirenGen)
					{
						StopSirenNow();
					}
				});
			}
			catch
			{
			}
		}

		private static void StopSirenNow()
		{
			_sirenGen++;
			if ((Object)(object)_sirenGo != (Object)null)
			{
				Object.Destroy((Object)(object)_sirenGo);
			}
			_sirenGo = null;
		}

		public static void StopSiren()
		{
			try
			{
				GameObject g = _sirenGo;
				if ((Object)(object)g == (Object)null)
				{
					return;
				}
				AudioSource a = g.GetComponent<AudioSource>();
				float v0 = (((Object)(object)a != (Object)null) ? a.volume : 0f);
				_sirenGo = null;
				Anim(1.5f, delegate(float t)
				{
					if ((Object)(object)a != (Object)null)
					{
						a.volume = v0 * (1f - t);
					}
				}, delegate
				{
					if ((Object)(object)g != (Object)null)
					{
						Object.Destroy((Object)(object)g);
					}
				});
			}
			catch
			{
			}
		}

		public static void PlayAt(Vector3 pos, AudioClip clip, float maxDist, float vol, bool delayed, float minDist = 10f, int layers = 1, float pitch = 1f)
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Expected O, but got Unknown
			if ((Object)(object)clip == (Object)null)
			{
				return;
			}
			try
			{
				float num = 0f;
				if (delayed && Settings.SoundDelay.Value)
				{
					Transform head = Player.Head;
					if ((Object)(object)head != (Object)null)
					{
						num = Mathf.Clamp(Vector3.Distance(head.position, pos) / 343f, 0f, 6f);
					}
				}
				for (int i = 0; i < layers; i++)
				{
					float num2 = pitch * (1f - 0.035f * (float)i);
					GameObject val = new GameObject("WS_Sfx");
					val.transform.position = pos;
					AudioSource val2 = val.AddComponent<AudioSource>();
					val2.clip = clip;
					val2.spatialBlend = 1f;
					val2.minDistance = minDist;
					val2.maxDistance = maxDist;
					val2.rolloffMode = (AudioRolloffMode)1;
					val2.dopplerLevel = 0f;
					val2.priority = 0;
					val2.pitch = num2;
					val2.volume = Mathf.Clamp01(vol * Settings.Volume.Value);
					if (num > 0.05f)
					{
						val2.PlayDelayed(num);
					}
					else
					{
						val2.Play();
					}
					Object.Destroy((Object)val, clip.length / Mathf.Max(0.3f, num2) + num + 1f);
				}
			}
			catch (Exception ex)
			{
				MelonLogger.Warning("WarStrikes: PlayAt failed: " + ex.Message);
			}
		}

		public static void Boom(Vector3 pos, string group, float maxDist, float minDist, float vol = 1f, bool thump = true)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			int num = BoomLayers();
			PlayAt(pos, Sounds.Get(Sounds.Variant(group)), maxDist, vol, delayed: true, minDist, num);
			if (thump)
			{
				PlayAt(pos, Sounds.Get("blast_thump"), maxDist * 0.8f, vol, delayed: true, minDist, Mathf.Max(1, num - 1));
			}
		}

		public static GameObject LoopSound(Vector3 pos, string key, float minDist, float maxDist, float vol, float seconds, float fadeIn, float fadeOut)
		{
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Expected O, but got Unknown
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			AudioClip val = Sounds.Get(key);
			if ((Object)(object)val == (Object)null)
			{
				return null;
			}
			GameObject g = new GameObject("WS_Loop");
			g.transform.position = pos;
			AudioSource a = g.AddComponent<AudioSource>();
			a.clip = val;
			a.loop = true;
			a.spatialBlend = 1f;
			a.minDistance = minDist;
			a.maxDistance = maxDist;
			a.rolloffMode = (AudioRolloffMode)1;
			a.dopplerLevel = 0f;
			a.volume = 0f;
			a.Play();
			Anim(seconds, delegate(float t)
			{
				if (!((Object)(object)a == (Object)null))
				{
					float num = t * seconds;
					float num2 = Mathf.Min(Mathf.Clamp01(num / Mathf.Max(0.01f, fadeIn)), Mathf.Clamp01((seconds - num) / Mathf.Max(0.01f, fadeOut)));
					a.volume = Mathf.Clamp01(vol * num2 * Settings.Volume.Value);
				}
			}, delegate
			{
				if ((Object)(object)g != (Object)null)
				{
					Object.Destroy((Object)(object)g);
				}
			});
			return g;
		}

		public static void LaserShow(Vector3 from, Vector3 to, bool ok)
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			Color val = (ok ? new Color(1f, 0.1f, 0.1f) : new Color(0.6f, 0.6f, 0.6f));
			if ((Object)(object)_lr == (Object)null)
			{
				_lr = new GameObject("WS_Laser").AddComponent<LineRenderer>();
				_lr.positionCount = 2;
				_lr.useWorldSpace = true;
				_lr.startWidth = 0.008f;
				_lr.endWidth = 0.008f;
				((Renderer)_lr).material = FlatMat(Color.white);
				_marker = GameObject.CreatePrimitive((PrimitiveType)0);
				Collider component = _marker.GetComponent<Collider>();
				if ((Object)(object)component != (Object)null)
				{
					Object.Destroy((Object)(object)component);
				}
				_marker.transform.localScale = Vector3.one * 0.25f;
				_marker.GetComponent<Renderer>().material = FlatMat(Color.white);
			}
			((Component)_lr).gameObject.SetActive(true);
			_marker.SetActive(true);
			_lr.startColor = val;
			_lr.endColor = val;
			_lr.SetPosition(0, from);
			_lr.SetPosition(1, to);
			_marker.transform.position = to;
			_marker.GetComponent<Renderer>().material.color = val;
		}

		public static void LaserHide()
		{
			if ((Object)(object)_lr != (Object)null)
			{
				((Component)_lr).gameObject.SetActive(false);
			}
			if ((Object)(object)_marker != (Object)null)
			{
				_marker.SetActive(false);
			}
		}

		private static Color G(float g)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return new Color(g, g * 0.98f, g * 0.95f, 1f);
		}

		private static void Glow(Vector3 p, float size, Color c, float life)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			Emit(p, new P
			{
				Tex = Tex.Glow,
				Add = true,
				Count = 1,
				Life = life,
				Size = size,
				Size2 = size,
				Radius = 0.01f,
				C0 = c,
				C1 = c,
				FadeIn = 0.04f,
				S0 = 0.55f,
				S1 = 1.25f,
				Scale = false,
				LifeScale = false
			});
		}

		private static void ShockRing(Vector3 p, float size, float life, Color c, float alpha = 0.8f)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			Emit(p + Vector3.up * 0.3f, new P
			{
				Tex = Tex.Ring,
				Count = 1,
				Life = life,
				Size = size,
				Size2 = size,
				Radius = 0.01f,
				C0 = c,
				C1 = c,
				Mode = (ParticleSystemRenderMode)2,
				S0 = 0.06f,
				S1 = 1f,
				Alpha = alpha,
				FadeIn = 0.03f,
				Scale = false,
				LifeScale = false
			});
		}

		private static void Scorch(Vector3 p, float size, float life)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			Emit(p + Vector3.up * 0.05f, new P
			{
				Tex = Tex.Puff,
				Count = 1,
				Life = life,
				Size = size,
				Size2 = size,
				Radius = 0.01f,
				C0 = G(0.02f),
				C1 = G(0.05f),
				Mode = (ParticleSystemRenderMode)2,
				S0 = 1f,
				S1 = 1f,
				Alpha = 0.6f,
				FadeIn = 0.02f,
				Scale = false,
				LifeScale = false
			});
		}

		private static void Sparks(Vector3 p, int count, float speed, float speed2, float life, float radius = 0.8f)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			Emit(p, new P
			{
				Tex = Tex.Spark,
				Add = true,
				Count = count,
				Life = life,
				Life2 = life * 1.9f,
				Size = 0.3f,
				Size2 = 0.8f,
				Speed = speed,
				Speed2 = speed2,
				Radius = radius,
				C0 = new Color(1f, 0.96f, 0.65f),
				C1 = new Color(1f, 0.55f, 0.15f),
				End = new Color(0.7f, 0.2f, 0.06f),
				S0 = 1f,
				S1 = 0.35f,
				Gravity = 0.9f,
				Drag = 0.15f,
				Stretch = 2.4f,
				FadeIn = 0.02f
			});
		}

		private static void DebrisRain(Vector3 p, float radius, int n, float t0, float t1)
		{
			//IL_000b: 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_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < n; i++)
			{
				Vector3 q = p + new Vector3(Random.Range(0f - radius, radius), 0.2f, Random.Range(0f - radius, radius));
				After(Random.Range(t0, t1), delegate
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0031: Unknown result type (might be due to invalid IL or missing references)
					//IL_0085: Unknown result type (might be due to invalid IL or missing references)
					//IL_008a: Unknown result type (might be due to invalid IL or missing references)
					//IL_0090: Unknown result type (might be due to invalid IL or missing references)
					//IL_0095: Unknown result type (might be due to invalid IL or missing references)
					PlayAt(q, Sounds.Get(Sounds.Variant("thud")), 220f, 0.6f, delayed: false, 8f);
					Emit(q, new P
					{
						Count = 5,
						Life = 1.4f,
						Life2 = 2.4f,
						Size = 0.8f,
						Size2 = 1.8f,
						Speed = 1.5f,
						Speed2 = 3.5f,
						C0 = Dust0,
						C1 = Dust1,
						Alpha = 0.55f,
						Gravity = -0.02f,
						Radius = 0.3f,
						S0 = 0.5f,
						S1 = 1.3f
					});
				});
			}
		}

		private static void Secondaries(Vector3 pos, float radius, int n, float t0, float t1)
		{
			//IL_000b: 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_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < n; i++)
			{
				Vector3 q = pos + new Vector3(Random.Range(0f - radius, radius), 0.4f, Random.Range(0f - radius, radius));
				After(Random.Range(t0, t1), delegate
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0006: Unknown result type (might be due to invalid IL or missing references)
					//IL_000b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0024: Unknown result type (might be due to invalid IL or missing references)
					//IL_0034: Unknown result type (might be due to invalid IL or missing references)
					//IL_0039: Unknown result type (might be due to invalid IL or missing references)
					//IL_0043: Unknown result type (might be due to invalid IL or missing references)
					//IL_0048: Unknown result type (might be due to invalid IL or missing references)
					//IL_005c: Unknown result type (might be due to invalid IL or missing references)
					//IL_007b: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
					//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
					//IL_0103: Unknown result type (might be due to invalid IL or missing references)
					//IL_0108: Unknown result type (might be due to invalid IL or missing references)
					//IL_014b: Unknown result type (might be due to invalid IL or missing references)
					//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
					//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
					//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
					//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
					//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
					//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
					//IL_0224: Unknown result type (might be due to invalid IL or missing references)
					//IL_0229: Unknown result type (might be due to invalid IL or missing references)
					//IL_0233: Unknown result type (might be due to invalid IL or missing references)
					//IL_0238: Unknown result type (might be due to invalid IL or missing references)
					//IL_0259: Unknown result type (might be due to invalid IL or missing references)
					Glow(q + Vector3.up, 6f, new Color(1f, 0.8f, 0.5f), 0.3f);
					FlashLight(q + Vector3.up * 2f, new Color(1f, 0.65f, 0.3f), 30f, 6f, 0.05f, 0.6f);
					Emit(q, new P
					{
						Add = true,
						Count = 12,
						Life = 0.9f,
						Life2 = 1.8f,
						Size = 2f,
						Size2 = 4f,
						Speed = 2f,
						Speed2 = 7f,
						Radius = 0.5f,
						C0 = Fire0,
						C1 = Fire1,
						Mid = FireMid,
						End = FireEnd,
						S0 = 0.4f,
						S1 = 1.2f,
						Gravity = -0.15f,
						Drag = 0.6f,
						FadeIn = 0.04f
					});
					Emit(q, new P
					{
						Count = 8,
						Life = 3f,
						Life2 = 6f,
						Size = 1.5f,
						Size2 = 3.5f,
						Speed = 1f,
						Speed2 = 4f,
						Shape = (ParticleSystemShapeType)4,
						Rot = Up,
						Radius = 0.4f,
						Angle = 14f,
						C0 = G(0.08f),
						C1 = G(0.22f),
						Alpha = 0.8f,
						S0 = 0.5f,
						S1 = 1.6f,
						Gravity = -0.04f,
						Noise = 0.6f
					});
					Sparks(q + Vector3.up * 0.5f, 18, 5f, 14f, 1f, 0.4f);
					PlayAt(q, Sounds.Get(Sounds.RandomPop()), 500f, 0.85f, delayed: true, 15f, 2);
				});
			}
		}

		private static void Push(Vector3 pos, float radius, float force)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			foreach (Collider item in (Il2CppArrayBase<Collider>)(object)Physics.OverlapSphere(pos, radius))
			{
				Rigidbody attachedRigidbody = item.attachedRigidbody;
				if (!((Object)(object)attachedRigidbody == (Object)null) && !attachedRigidbody.isKinematic && (Settings.ShockwavePushesPlayer.Value || !IsPlayerPart(((Component)attachedRigidbody).transform)))
				{
					attachedRigidbody.AddExplosionForce(force, pos, radius, 1.5f, (ForceMode)1);
				}
			}
		}

		public static void ImpactSmoke(Vector3 pos, float r)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_0168: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			Vector3 up = Vector3.up;
			Emit(pos + up * 0.5f, new P
			{
				Count = 40,
				Life = 5f,
				Life2 = 9f,
				Size = r * 0.35f,
				Size2 = r * 0.8f,
				Speed = r * 0.5f,
				Speed2 = r * 1.6f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = r * 0.2f,
				Angle = 35f,
				C0 = Dust0,
				C1 = Dust1,
				Alpha = 0.75f,
				S0 = 0.5f,
				S1 = 1.6f,
				Gravity = -0.02f,
				Drag = 0.7f,
				Noise = 0.4f
			});
			Emit(pos + up, new P
			{
				Dur = 3.5f,
				Count = 30,
				Life = 6f,
				Life2 = 10f,
				Size = r * 0.4f,
				Size2 = r * 0.9f,
				Speed = 1f,
				Speed2 = 4f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = r * 0.2f,
				Angle = 12f,
				C0 = G(0.25f),
				C1 = G(0.45f),
				Alpha = 0.7f,
				FadeIn = 0.15f,
				S0 = 0.5f,
				S1 = 1.5f,
				Gravity = -0.04f,
				Noise = 0.6f
			});
		}

		public static void HangSmoke(Vector3 pos, float r)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			r = Mathf.Clamp(r, 1.5f, 14f);
			Emit(pos + Vector3.up * (r * 0.4f), new P
			{
				Dur = 9f,
				Count = 70,
				Life = 10f,
				Life2 = 15f,
				Size = r * 0.55f,
				Size2 = r * 1.15f,
				Speed = 0.4f,
				Speed2 = 2.2f,
				Radius = r * 0.5f,
				C0 = G(0.1f),
				C1 = G(0.3f),
				Alpha = 0.72f,
				FadeIn = 0.15f,
				S0 = 0.7f,
				S1 = 1.6f,
				Gravity = -0.015f,
				Noise = 0.5f,
				Spin = 6f,
				Drag = 0.6f,
				LifeScale = false
			});
			After(1.5f, delegate
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
				Emit(pos + Vector3.up * (r * 1.4f), new P
				{
					Dur = 7f,
					Count = 40,
					Life = 9f,
					Life2 = 14f,
					Size = r * 0.7f,
					Size2 = r * 1.4f,
					Speed = 0.3f,
					Speed2 = 1.4f,
					Radius = r * 0.7f,
					C0 = G(0.16f),
					C1 = G(0.36f),
					Alpha = 0.6f,
					FadeIn = 0.2f,
					S0 = 0.8f,
					S1 = 1.5f,
					Gravity = -0.01f,
					Noise = 0.6f,
					Spin = 5f,
					Drag = 0.6f,
					LifeScale = false
				});
			});
		}

		public static void DudImpact(Vector3 pos)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			StopSiren();
			PlayAt(pos, Sounds.Get(Sounds.Variant("thud")), 350f, 0.9f, delayed: true, 15f, 1, 0.8f);
			Emit(pos + Vector3.up * 0.3f, new P
			{
				Count = 14,
				Life = 3.5f,
				Life2 = 5.5f,
				Size = 1.2f,
				Size2 = 2.4f,
				Speed = 1.5f,
				Speed2 = 4f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = 0.3f,
				Angle = 40f,
				C0 = Dust0,
				C1 = Dust1,
				Alpha = 0.6f,
				S0 = 0.5f,
				S1 = 1.5f,
				Gravity = -0.01f,
				Drag = 0.6f,
				Noise = 0.3f
			});
			Emit(pos + Vector3.up * 0.4f, new P
			{
				Dur = 14f,
				Count = 36,
				Life = 4f,
				Life2 = 7f,
				Size = 0.6f,
				Size2 = 1.4f,
				Speed = 0.6f,
				Speed2 = 1.6f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = 0.15f,
				Angle = 8f,
				C0 = G(0.55f),
				C1 = G(0.75f),
				Alpha = 0.5f,
				FadeIn = 0.2f,
				S0 = 0.5f,
				S1 = 2f,
				Gravity = -0.03f,
				Noise = 0.5f
			});
		}

		public static void TargetSmoke(Vector3 pos, float seconds, Color c)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			Emit(pos + Vector3.up * 0.2f, new P
			{
				Dur = seconds,
				Count = (int)(seconds * 14f),
				Life = 6f,
				Life2 = 9f,
				Size = 1.4f,
				Size2 = 3f,
				Speed = 2.5f,
				Speed2 = 5f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = 0.2f,
				Angle = 7f,
				C0 = c,
				C1 = Color.Lerp(c, Color.white, 0.25f),
				Alpha = 0.8f,
				FadeIn = 0.1f,
				S0 = 0.4f,
				S1 = 2.2f,
				Gravity = -0.02f,
				Noise = 0.5f,
				LifeScale = false
			});
		}

		public static void CrashBlast(StrikeType type, Vector3 pos, float r, Vector3 fwd)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			float num = ((type == StrikeType.Nuclear) ? 1.35f : 2f);
			Blast(type, pos, r * num, fwd);
			Secondaries(pos, r * num * 0.9f, 6, 0.3f, 5f);
			Vector3 up = Vector3.up;
			Emit(pos + up, new P
			{
				Tex = Tex.Flame,
				Add = true,
				Upright = true,
				Dur = 18f,
				Count = 200,
				Life = 0.9f,
				Life2 = 1.8f,
				Size = 2.5f,
				Size2 = 5f,
				Speed = 2f,
				Speed2 = 6f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = Mathf.Min(r * num * 0.5f, 25f),
				Angle = 14f,
				C0 = Fire0,
				C1 = Fire1,
				Mid = FireMid,
				End = FireEnd,
				S0 = 1f,
				S1 = 0.25f,
				Gravity = -0.2f,
				Noise = 0.5f,
				FadeIn = 0.1f
			});
			FlameField(pos, Mathf.Min(r * num * 0.35f, 14f), 18f, 8, 5f);
			Boom(pos, "boom_precision", 1400f, 80f);
			Push(pos, r * num * 2f, 150f);
		}

		public static List<GameObject> PlaneOnFire(GameObject plane)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			List<GameObject> list = new List<GameObject>();
			Vector3 position = plane.transform.position;
			GameObject val = Emit(position, new P
			{
				Dur = 30f,
				Count = 700,
				Life = 7f,
				Life2 = 11f,
				Size = 2f,
				Size2 = 4.5f,
				Speed = 0.5f,
				Speed2 = 2f,
				Radius = 0.8f,
				C0 = G(0.03f),
				C1 = G(0.1f),
				Alpha = 0.9f,
				FadeIn = 0.08f,
				S0 = 0.5f,
				S1 = 2.2f,
				Gravity = -0.02f,
				Noise = 0.5f,
				Spin = 15f
			});
			GameObject val2 = Emit(position, new P
			{
				Add = true,
				Dur = 30f,
				Count = 600,
				Life = 0.5f,
				Life2 = 1f,
				Size = 2.5f,
				Size2 = 4f,
				Speed = 0.5f,
				Speed2 = 2f,
				Radius = 0.7f,
				C0 = Fire0,
				C1 = Fire1,
				Mid = FireMid,
				End = FireEnd,
				S0 = 0.5f,
				S1 = 1.2f,
				Gravity = -0.05f,
				FadeIn = 0.05f
			});
			GameObject[] array = (GameObject[])(object)new GameObject[2] { val, val2 };
			foreach (GameObject val3 in array)
			{
				val3.transform.SetParent(plane.transform, true);
				list.Add(val3);
			}
			FlashLight(position, new Color(1f, 0.6f, 0.25f), 40f, 6f, 8f, 4f);
			return list;
		}

		public static void Blast(StrikeType type, Vector3 pos, float r, Vector3 fwd)
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_020c: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				switch (type)
				{
				case StrikeType.Precision:
					BlastPrecision(pos, r);
					break;
				case StrikeType.Napalm:
					BlastNapalm(pos, r, fwd);
					break;
				case StrikeType.Nuclear:
					BlastNuke(pos, r);
					break;
				default:
					BlastCarpet(pos, r);
					break;
				}
				float num = Mathf.Clamp(r * 0.45f, 1.8f, 12f);
				switch (type)
				{
				case StrikeType.Precision:
					FlameBurst(pos, 8, num, r * 0.35f, 3.2f);
					FlameField(pos, r * 0.5f, 12f, 6, num * 0.7f);
					break;
				case StrikeType.Napalm:
					FlameBurst(pos, 10, num, r * 0.5f, 3.5f);
					break;
				case StrikeType.Nuclear:
					FlameBurst(pos, 10, Mathf.Clamp(r * 0.12f, 6f, 16f), r * 0.3f, 5f);
					FlameField(pos, r * 0.3f, 25f, 14, Mathf.Clamp(r * 0.1f, 5f, 12f));
					break;
				default:
					FlameBurst(pos, 3, num, r * 0.25f, 2.4f);
					FlameField(pos, r * 0.4f, 7f, 3, num * 0.6f);
					break;
				}
				HangSmoke(pos, (type == StrikeType.Nuclear) ? Mathf.Min(r * 0.3f, 14f) : r);
				Concussion(pos, type switch
				{
					StrikeType.Napalm => Mathf.Max(90f, r * 6f), 
					StrikeType.Precision => Mathf.Max(110f, r * 8f), 
					StrikeType.Nuclear => r * 14f, 
					_ => Mathf.Max(80f, r * 7f), 
				}, type != StrikeType.Nuclear);
				bool flag = type == StrikeType.Nuclear;
				Crater(pos, flag ? (r * 3.4f) : (type switch
				{
					StrikeType.Napalm => r * 1.5f, 
					StrikeType.Precision => r * 2.4f, 
					_ => r * 1.9f, 
				}));
				BlastDebris(pos + Vector3.up * 0.5f, flag ? 90 : (type switch
				{
					StrikeType.Napalm => 20, 
					StrikeType.Precision => 36, 
					_ => 26, 
				}), Mathf.Clamp(r * 1.2f, 9f, 30f), flag ? 0.28f : 0.14f);
				if (flag)
				{
					WorldFlash(2.6f, 0.9f, 7f);
				}
				else
				{
					WorldFlash((type == StrikeType.Precision) ? 1f : 0.65f, 0.08f, 1.3f);
				}
			}
			catch (Exception ex)
			{
				MelonLogger.Warning("WarStrikes: explosion effect failed: " + ex);
			}
		}

		private static void BlastPrecision(Vector3 pos, float r)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: 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_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0167: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_0289: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_030a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_031a: Unknown result type (might be due to invalid IL or missing references)
			//IL_031f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0383: Unknown result type (might be due to invalid IL or missing references)
			//IL_0389: Unknown result type (might be due to invalid IL or missing references)
			//IL_038e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0403: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Unknown result type (might be due to invalid IL or missing references)
			//IL_0413: Unknown result type (might be due to invalid IL or missing references)
			//IL_0418: Unknown result type (might be due to invalid IL or missing references)
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_048d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0492: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04de: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_055d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0563: Unknown result type (might be due to invalid IL or missing references)
			//IL_0568: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_061a: Unknown result type (might be due to invalid IL or missing references)
			//IL_061f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0625: Unknown result type (might be due to invalid IL or missing references)
			//IL_062a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0630: Unknown result type (might be due to invalid IL or missing references)
			//IL_0635: Unknown result type (might be due to invalid IL or missing references)
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0640: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0673: Unknown result type (might be due to invalid IL or missing references)
			//IL_067d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0682: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0700: Unknown result type (might be due to invalid IL or missing references)
			//IL_0718: Unknown result type (might be due to invalid IL or missing references)
			//IL_071d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0723: Unknown result type (might be due to invalid IL or missing references)
			//IL_0728: Unknown result type (might be due to invalid IL or missing references)
			//IL_076b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0771: Unknown result type (might be due to invalid IL or missing references)
			//IL_077b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0780: Unknown result type (might be due to invalid IL or missing references)
			//IL_0805: Unknown result type (might be due to invalid IL or missing references)
			//IL_080a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0815: Unknown result type (might be due to invalid IL or missing references)
			//IL_081a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0868: Unknown result type (might be due to invalid IL or missing references)
			//IL_086e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0878: Unknown result type (might be due to invalid IL or missing references)
			//IL_087d: Unknown result type (might be due to invalid IL or missing references)
			//IL_090c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0911: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_092b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0963: Unknown result type (might be due to invalid IL or missing references)
			//IL_0988: Unknown result type (might be due to invalid IL or missing references)
			//IL_0998: Unknown result type (might be due to invalid IL or missing references)
			//IL_09bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a0b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a4d: Unknown result type (might be due to invalid IL or missing references)
			Vector3 up = Vector3.up;
			Glow(pos + up * 2f, r * 4.2f, new Color(1f, 0.92f, 0.72f), 0.55f);
			FlashLight(pos + up * 4f, new Color(1f, 0.82f, 0.58f), r * 7f, 14f, 0.12f, 1.8f);
			Emit(pos + up * 1.5f, new P
			{
				Add = true,
				Count = 45,
				Life = 1.4f,
				Life2 = 2.7f,
				Size = r * 0.55f,
				Size2 = r * 1f,
				Speed = r * 0.4f,
				Speed2 = r * 1.3f,
				Radius = 1.2f,
				C0 = Fire0,
				C1 = Fire1,
				Mid = FireMid,
				End = FireEnd,
				S0 = 0.35f,
				S1 = 1.15f,
				Gravity = -0.12f,
				Drag = 0.75f,
				Noise = 0.4f,
				Spin = 40f,
				FadeIn = 0.04f
			});
			Sparks(pos + up, 70, r * 2.2f, r * 5f, 1.2f);
			Emit(pos + up * 0.3f, new P
			{
				Count = 80,
				Life = 3f,
				Life2 = 5.5f,
				Size = 0.9f,
				Size2 = 2.6f,
				Speed = r * 1.2f,
				Speed2 = r * 3.2f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = r * 0.25f,
				Angle = 28f,
				C0 = Dirt0,
				C1 = Dirt1,
				S0 = 1f,
				S1 = 0.85f,
				Gravity = 0.85f,
				Drag = 0.1f,
				Alpha = 0.95f,
				Spin = 60f
			});
			Emit(pos + up * 0.3f, new P
			{
				Count = 40,
				Life = 2f,
				Life2 = 3.6f,
				Size = 0.25f,
				Size2 = 0.6f,
				Speed = r * 1.5f,
				Speed2 = r * 4f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = r * 0.15f,
				Angle = 40f,
				C0 = G(0.05f),
				C1 = G(0.14f),
				S0 = 1f,
				S1 = 1f,
				Gravity = 1.4f,
				Alpha = 1f
			});
			Emit(pos + up * 0.5f, new P
			{
				Dur = 6f,
				Count = 100,
				Life = 9f,
				Life2 = 14f,
				Size = r * 0.6f,
				Size2 = r * 1.2f,
				Speed = 3f,
				Speed2 = 9f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = r * 0.2f,
				Angle = 9f,
				C0 = new Color(0.09f, 0.085f, 0.08f),
				C1 = new Color(0.3f, 0.28f, 0.26f),
				Alpha = 0.85f,
				FadeIn = 0.12f,
				S0 = 0.35f,
				S1 = 1.5f,
				Gravity = -0.045f,
				Noise = 0.9f,
				Spin = 12f,
				Drag = 0.6f
			});
			After(2.2f, delegate
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00be: Unknown result type (might be due to invalid IL or missing references)
				Emit(pos + up * r * 2.6f, new P
				{
					Count = 40,
					Life = 7f,
					Life2 = 11f,
					Size = r * 0.7f,
					Size2 = r * 1.3f,
					Speed = r * 0.25f,
					Speed2 = r * 0.6f,
					Radius = r * 0.4f,
					C0 = G(0.2f),
					C1 = G(0.38f),
					Alpha = 0.8f,
					S0 = 0.5f,
					S1 = 1.4f,
					Gravity = -0.03f,
					Noise = 0.5f,
					Spin = 8f,
					Drag = 0.7f
				});
			});
			Emit(pos + up, new P
			{
				Tex = Tex.Flame,
				Add = true,
				Upright = true,
				Dur = 3f,
				Count = 30,
				Life = 1f,
				Life2 = 1.8f,
				Size = r * 0.3f,
				Size2 = r * 0.6f,
				Speed = 2f,
				Speed2 = 6f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = r * 0.3f,
				Angle = 15f,
				C0 = Fire0,
				C1 = Fire1,
				Mid = FireMid,
				End = FireEnd,
				S0 = 1f,
				S1 = 0.3f,
				Gravity = -0.2f
			});
			Emit(pos + up * 0.8f, new P
			{
				Count = 70,
				Life = 4f,
				Life2 = 7f,
				Size = r * 0.45f,
				Size2 = r * 0.9f,
				Speed = r * 1.2f,
				Speed2 = r * 3f,
				Shape = (ParticleSystemShapeType)10,
				Rot = Flat,
				Radius = r * 0.3f,
				C0 = Dust0,
				C1 = Dust1,
				Alpha = 0.6f,
				S0 = 0.5f,
				S1 = 1.6f,
				Drag = 0.85f,
				Noise = 0.3f
			});
			Emit(pos + up * 1.5f, new P
			{
				Dur = 8f,
				Count = 60,
				Life = 8f,
				Life2 = 13f,
				Size = r * 0.5f,
				Size2 = r * 1f,
				Speed = 0.5f,
				Speed2 = 2.5f,
				Radius = r * 0.5f,
				C0 = G(0.28f),
				C1 = G(0.45f),
				Alpha = 0.55f,
				FadeIn = 0.15f,
				S0 = 0.6f,
				S1 = 1.3f,
				Gravity = -0.01f,
				Noise = 0.6f
			});
			Emit(pos + up * 2f, new P
			{
				Tex = Tex.Spark,
				Add = true,
				Dur = 6f,
				Count = 60,
				Life = 2f,
				Life2 = 5f,
				Size = 0.15f,
				Size2 = 0.35f,
				Speed = 2f,
				Speed2 = 7f,
				Radius = r * 0.6f,
				C0 = new Color(1f, 0.8f, 0.4f),
				C1 = new Color(1f, 0.45f, 0.1f),
				S0 = 1f,
				S1 = 0.3f,
				Gravity = -0.1f,
				Noise = 1.2f
			});
			ShockRing(pos, r * 5f, 0.7f, new Color(1f, 0.95f, 0.85f), 0.9f);
			ShockRing(pos, r * 9f, 1.5f, new Color(0.95f, 0.9f, 0.8f));
			Scorch(pos, r * 1.8f, 70f);
			DebrisRain(pos, r * 2.2f, 7, 0.8f, 4.5f);
			Secondaries(pos, r * 1.4f, 4, 1.2f, 6f);
			Boom(pos, "boom_precision", 1200f, 70f);
			Push(pos, r * 2.4f, 130f);
		}

		private static void BlastCarpet(Vector3 pos, float r0)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0209: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0214: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_0296: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0306: Unknown result type (might be due to invalid IL or missing references)
			//IL_030b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0338: Unknown result type (might be due to invalid IL or missing references)
			//IL_033d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0352: Unknown result type (might be due to invalid IL or missing references)
			//IL_0357: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0425: Unknown result type (might be due to invalid IL or missing references)
			//IL_042b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0430: Unknown result type (might be due to invalid IL or missing references)
			//IL_0443: Unknown result type (might be due to invalid IL or missing references)
			//IL_0448: Unknown result type (might be due to invalid IL or missing references)
			//IL_044e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0453: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0512: Unknown result type (might be due to invalid IL or missing references)
			Vector3 up = Vector3.up;
			float num = r0 * Random.Range(0.85f, 1.2f);
			Glow(pos + up * 1.5f, num * 3.2f, new Color(1f, 0.85f, 0.6f), 0.4f);
			FlashLight(pos + up * 3f, new Color(1f, 0.72f, 0.42f), num * 5f, 8f, 0.08f, 1f);
			Emit(pos + up, new P
			{
				Add = true,
				Count = 26,
				Life = 1f,
				Life2 = 1.9f,
				Size = num * 0.4f,
				Size2 = num * 0.8f,
				Speed = num * 0.3f,
				Speed2 = num * 1f,
				Radius = 0.8f,
				C0 = Fire0,
				C1 = Fire1,
				Mid = FireMid,
				End = FireEnd,
				S0 = 0.4f,
				S1 = 1.1f,
				Gravity = -0.1f,
				Drag = 0.7f,
				Noise = 0.3f,
				Spin = 30f,
				FadeIn = 0.04f
			});
			Sparks(pos + up, 30, num * 1.6f, num * 3.6f, 1f);
			Emit(pos + up * 0.3f, new P
			{
				Count = 50,
				Life = 2.5f,
				Life2 = 4.2f,
				Size = 0.7f,
				Size2 = 2f,
				Speed = num * 1f,
				Speed2 = num * 2.4f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = num * 0.2f,
				Angle = 30f,
				C0 = Dirt0,
				C1 = Dirt1,
				S0 = 1f,
				S1 = 0.85f,
				Gravity = 0.9f,
				Drag = 0.1f,
				Alpha = 0.95f,
				Spin = 50f
			});
			Emit(pos + up * 0.5f, new P
			{
				Dur = 2.5f,
				Count = 40,
				Life = 6f,
				Life2 = 10f,
				Size = num * 0.5f,
				Size2 = num * 1f,
				Speed = 2f,
				Speed2 = 7f,
				Shape = (ParticleSystemShapeType)4,
				Rot = Up,
				Radius = num * 0.2f,
				Angle = 10f,
				C0 = new Color(0.16f, 0.14f, 0.12f),
				C1 = new Color(0.36f, 0.32f, 0.28f),
				Alpha = 0.8f,
				FadeIn = 0.12f,
				S0 = 0.4f,
				S1 = 1.4f,
				Gravity = -0.04f,
				Noise = 0.8f,
				Spin = 10f,
				Drag = 0.6f
			});
			Emit(pos + up * 0.6f, new P
			{
				Count = 30,
				Life = 3f,
				Life2 = 5.5f,
				Size = num * 0.4f,
				Size2 = num * 0.8f,
				Speed = num * 1f,
				Speed2 = num * 2.4f,
				Shape = (ParticleSystemShapeType)10,
				Rot = Flat,
				Radius = num * 0.25f,
				C0 = Dust0,
				C1 = Dust1,
				Alpha = 0.55f,
				S0 = 0.5f,
				S1 = 1.5f,
				Drag = 0.85f
			});
			ShockRing(pos, num * 6.5f, 1.1f, new Color(0.9f, 0.84f, 0.74f), 0.7f);
			Scorch(pos, num * 1.4f, 50f);
			DebrisRain(pos, num * 1.6f, 2, 0.5f, 2.5f);
			Secondaries(pos, num * 1.1f, 1, 0.8f, 3f);
			Boom(pos, "boom_carpet", 1000f, 50f);
			Push(pos, num * 2.2f, 85f);
		}

		private static void BlastNapalm(Vector3 pos, float r, Vector3 fwd)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0252: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0281: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0306: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_0314: Unknown result type (might be due to invalid IL or missing references)
			//IL_0319: Unknown result type (might be due to invalid IL or missing references)
			//IL_031e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0349: Unknown result type (might be due to invalid IL or missing references)
			//IL_034e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0353: Unknown result type (might be due to invalid IL or missing references)
			//IL_03af: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0400: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Unknown result type (might be due to invalid IL or missing references)
			//IL_0424: Unknown result type (might be due to invalid IL or missing references)
			//IL_0429: Unknown result type (might be due to invalid IL or missing references)
			//IL_042e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0476: Unknown result type (might be due to invalid IL or missing references)
			//IL_0480: Expected O, but got Unknown
			//IL_048b: Unknown result type (might be due to invalid IL or missing references)
			//IL_048c: Unknown result type (might be due to invalid IL or missing references)
			//IL_048e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0498: Unknown result type (might be due to invalid IL or missing references)
			//IL_049d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_0500: Unknown result type (might be due to invalid IL or missing references)
			//IL_052d: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0530: Unknown result type (might be due to invalid IL or missing references)
			//IL_053a: Unknown result type (might be due to invalid IL or missing references)
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_056e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0589: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05bd: Unknown result type (might be due to invalid IL or missing references)
			Vector3 up = Vector3.up;
			fwd.y = 0f;
			if (((Vector3)(ref fwd)).sqrMagnitude < 0.01f)
			{
				fwd = Vector3.forward;
			}
			((Vector3)(ref fwd)).Normalize();
			Vector3 val = Vector3.Cross(up, fwd);
			float num = r * 3.4f;
			Vector3 val2 = pos - fwd * num * 0.2f;
			float num2 = Mathf.Clamp(Settings.EffectLife.Value, 0.25f, 4f);
			Glow(pos + up * 3f, r * 4.5f, new Color(1f, 0.8f, 0.5f), 0.8f);
			FlashLight(pos + up * 4f, new Color(1f, 0.6f, 0.25f), r * 6f, 12f, 0.4f, 2.4f);
			for (int i = 0; i < 5; i++)
			{
				Vector3 q = val2 + fwd * (num * (float)i / 4f) + val * Random.Range((0f - r) * 0.2f, r * 0.2f) + up * 1.5f;
				After((float)i * 0.12f, delegate
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
					//IL_00af: Unknown result type (might be due to invalid IL or missing references)
					//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
					//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
					Emit(q, new P
					{
						Add = true,
						Count = 22,
						Life = 1.8f,
						Life2 = 3.2f,
						Size = r * 0.45f,
						Size2 = r * 0.9f,
						Speed = r * 0.3f,
						Speed2 = r * 1f,
						Radius = r * 0.2f,
						C0 = Fire0,
						C1 = Fire1,
						Mid = FireMid,
						End = FireEnd,
						S0 = 0.3f,
						S1 = 1.3f,
						Gravity = -0.15f,
						Drag = 0.6f,
						Noise = 0.5f,
						Spin = 25f,
						FadeIn = 0.05f
					});
				});
			}
			Emit(pos + up * 1.5f, new P
			{
				Tex = Tex.Flame,
				Add = true,
				Upright = true,
				Count = 70,
				Life = 1.6f,
				Life2 = 3.2f,
				Size = 0.9f,
				Size2 = 2.2f,
				Speed = r * 0.8f,
				Speed2 = r * 2.2f,
				Radius = r * 0.4f,
				C0 = new Color(1f, 0.9f, 0.4f),
				C1 = new Color(1f, 0.45f, 0.1f),
				End = new Color(0.4f, 0.05f, 0f),
				S0 = 1f,
				S1 = 0.35f,
				Gravity = 0.6f,
				Drag = 0.15f
			});
			Sparks(pos + up, 90, r * 1.2f, r * 3.2f, 1.4f, 1.5f);
			for (int num3 = 0; num3 < 9; num3++)
			{
				Vector3 q2 = val2 + fwd * (num * (float)num3 / 8f) + val * Random.Range((0f - r) * 0.35f, r * 0.35f);
				float dur = Random.Range(14f, 30f);
				bool smoke = num3 % 2 == 0;
				After((float)num3 * 0.08f + Random.Range(0f, 0.4f), delegate
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_0083: Unknown result type (might be due to invalid IL or missing references)
					//IL_0089: Unknown result type (might be due to invalid IL or missing references)
					//IL_008e: Unknown result type (might be due to invalid IL or missing references)
					//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
					//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
					//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
					//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
					//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
					//IL_0126: Unknown result type (might be due to invalid IL or missing references)
					//IL_0282: Unknown result type (might be due to invalid IL or missing references)
					//IL_0287: Unknown result type (might be due to invalid IL or missing references)
					//IL_0291: Unknown result type (might be due to invalid IL or missing references)
					//IL_0296: Unknown result type (might be due to invalid IL or missing references)
					//IL_0336: Unknown result type (might be due to invalid IL or missing references)
					//IL_033b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0350: Unknown result type (might be due to invalid IL or missing references)
					//IL_0355: Unknown result type (might be due to invalid IL or missing references)
					//IL_015a: Unknown result type (might be due to invalid IL or missing references)
					//IL_015f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0164: Unknown result type (might be due to invalid IL or missing references)
					//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
					//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
					//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
					//IL_0209: Unknown result type (might be due to invalid IL or missing references)
					//IL_020e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0219: Unknown result type (might be due to invalid IL or missing references)
					//IL_021e: Unknown result type (might be due to invalid IL or missing references)
					Emit(q2, new P
					{
						Tex = Tex.Flame,
						Add = true,
						Upright = true,
						Dur = dur,
						Count = (int)(dur * 12f),
						Life = 0.8f,
						Life2 = 1.5f,
						Size = 1.6f,
						Size2 = 3.8f,
						Speed = 2f,
						Speed2 = 5.5f,
						Shape = (ParticleSystemShapeType)4,
						Rot = Up,
						Radius = r * 0.2f,
						Angle = 10f,
						C0 = Fire0,
						C1 = Fire1,
						Mid = FireMid,
						End = FireEnd,
						S0 = 1f,
						S1 = 0.2f,
						Gravity = -0.25f,
						Noise = 0.5f,
						FadeIn = 0.1f,
						LifeScale = true
					});
					FlameField(q2, r * 0.3f, dur, 3, 3.2f);
					if (smoke)
					{
						Emit(q2 + Vector3.up, new P
						{
							Dur = dur + 4f,
							Count = (int)((dur + 4f) * 2.4f),
							Life = 9f,
							Life2 = 14f,
							Size = 2f,
							Size2 = 5f,
							Speed = 4f,
							Speed2 = 8f,
							Shape = (ParticleSystemShapeType)4,
							Rot = Up,
							Radius = 1.5f,
							Angle = 12f,
							C0 = G(0.04f),
							C1 = G(0.12f),
							Alpha = 0.85f,
							FadeIn = 0.1f,
							S0 = 0.5f,
							S1 = 2f,
							Gravity = -0.03f,
							Noise = 0.8f,
							Spin = 10f,
							Drag = 0.5f
						});
					}
					Emit(q2 + Vector3.up * 0.3f, new P
					{
						Tex = Tex.Spark,
						Add = true,
						Dur = dur,
						Count = (int)(dur * 4f),
						Life = 1.5f,
						Life2 = 4f,
						Size = 0.12f,
						Size2 = 0.3f,
						Speed = 1f,
						Speed2 = 5f,
						Radius = r * 0.15f,
						C0 = new Color(1f, 0.8f, 0.4f),
						C1 = new Color(1f, 0.4f, 0.08f),
						S0 = 1f,
						S1 = 0.3f,
						Gravity = -0.15f,
						Noise = 1f
					});
				});
				if (num3 % 3 == 0)
				{
					Scorch(q2, r * 1.3f, 100f);
				}
			}
			for (int num4 = 0; num4 < 4; num4++)
			{
				Vector3 q3 = val2 + fwd * Random.Range(0f, num) + val * Random.Range((0f - r) * 0.3f, r * 0.3f);
				After(2.5f + (float)num4 * 3.5f * num2, delegate
				{
					//IL_0001: Unknown result type (might be due to invalid IL or missing references)
					//IL_006c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0072: Unknown result type (might be due to invalid IL or missing references)
					//IL_0077: Unknown result type (might be due to invalid IL or missing references)
					//IL_0093: Unknown result type (might be due to invalid IL or missing references)
					//IL_0098: Unknown result type (might be due to invalid IL or missing references)
					//IL_009e: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
					//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
					//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
					//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
					//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
					//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
					//IL_0111: Unknown result type (might be due to invalid IL or missing references)
					Emit(q3, new P
					{
						Tex = Tex.Flame,
						Add = true,
						Upright = true,
						Count = 18,
						Life = 1.2f,
						Life2 = 2f,
						Size = 2f,
						Size2 = 4.5f,
						Speed = 4f,
						Speed2 = 9f,
						Shape = (ParticleSystemShapeType)4,
						Rot = Up,
						Radius = 1.2f,
						Angle = 14f,
						C0 = Fire0,
						C1 = Fire1,
						Mid = FireMid,
						End = FireEnd,
						S0 = 0.8f,
						S1 = 0.3f,
						Gravity = -0.2f
					});
					Sparks(q3 + Vector3.up, 14, 4f, 12f, 1.2f);
					PlayAt(q3, Sounds.Get(Sounds.Variant("pop")), 150f, 0.35f, delayed: false);
				});
			}
			float D = 26f * num2;
			GameObject lg = new GameObject("WS_FireLight");
			lg.transform.position = pos + fwd * num * 0.3f + up * 2.5f;
			Light li = lg.AddComponent<Light>();
			li.type = (LightType)2;
			li.range = r * 3.2f;
			li.color = new Color(1f, 0.55f, 0.18f);
			Anim(D, delegate(float t)
			{
				if (!((Object)(object)li == (Object)null))
				{
					float num5 = ((t < 0.85f) ? 1f : ((1f - t) / 0.15f));
					float num6 = t * D;
					li.intensity = (3.2f + 1.2f * Mathf.Sin(num6 * 9f) + 0.8f * Mathf.Sin(num6 * 23f)) * num5;
				}
			}, delegate
			{
				if ((Object)(object)lg != (Object)null)
				{
					Object.Destroy((Object)(object)lg);
				}
			});
			LoopSound(pos + fwd * num * 0.3f, "fire_loop", 20f, 220f, 0.95f, D, 1.5f, 5f);
			Boom(pos, "napalm_ignite", 1000f, 55f);
			Scorch(pos, r * 1.6f, 100f);
			DebrisRain(pos, r * 1.5f, 3, 0.8f, 3f);
			Push(pos, r * 1.5f, 55f);
		}

		private static void BlastNuke(Vector3 pos, float r)
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_015b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_024c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_031d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0376: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0433: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_044d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0452: Unknown result type (might be due to invalid IL or missing references)
			//IL_0467: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_0486: Unknown result type (might be due to invalid IL or missing references)
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_057b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0581: Unknown result type (might be due to invalid IL or missing references)
			//IL_0586: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0614: Unknown result type (might be due to invalid IL or missing references)
			//IL_0619: Unknown result type (might be due to invalid IL or missing references)
			//IL_066e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0697: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0701: Unknown result type (might be due to invalid IL or missing references)
			//IL_0706: Unknown result type (might be due to invalid IL or missing references)
			//IL_070c: Unknown result type (might be due to invalid IL or missing references)