public static IEnumerator Strike(float initialDelay, float delayBetweenStrikes, int strikeCount, float damageIntensity, int range, Vector3 startPoint) { const float DAMAGE = 200; // timer Airstrikes.Instance.Vectors.Add(startPoint); if (Airstrikes.Instance.Configuration.Instance.GlobalMessageColor.StartsWith("#")) { Color?hexColor = UnturnedChat.GetColorFromHex(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor); UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike_sec", startPoint.ToString(), initialDelay), hexColor ?? default(Color)); } else { UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike_sec", startPoint.ToString(), initialDelay), UnturnedChat.GetColorFromName(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor, Color.green)); } yield return(new WaitForSeconds(initialDelay)); if (Airstrikes.Instance.Configuration.Instance.GlobalMessageColor.StartsWith("#")) { Color?hexColor = UnturnedChat.GetColorFromHex(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor); UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike_now", startPoint.ToString()), hexColor ?? default(Color)); } else { UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike_now", startPoint.ToString()), UnturnedChat.GetColorFromName(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor, Color.green)); } yield return(new WaitForSeconds(3f)); Airstrikes.Instance.Vectors.Remove(startPoint); // strike... for (int i = 0; i < (strikeCount + 1); i++) { yield return(new WaitForSeconds(delayBetweenStrikes)); Ray impactRay = new Ray(new Vector3(UnityEngine.Random.Range(startPoint.x - range, startPoint.x + range), startPoint.y + 50, UnityEngine.Random.Range(startPoint.z - range, startPoint.z + range)), Vector3.down); if (Physics.Raycast(impactRay, out RaycastHit hit)) { EffectManager.sendEffect(20, EffectManager.INSANE, hit.point); DamageTool.explode(hit.point, damageIntensity, EDeathCause.MISSILE, CSteamID.Nil, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE); Airstrikes.WriteDebug(hit.point.ToString()); } } }
public static IEnumerator AutoStrike() { const float DAMAGE = 200; while (Airstrikes.Instance.Configuration.Instance.AutoAirstrike == true) { foreach (Config.Location Preset in Airstrikes.Instance.Configuration.Instance.Locations) { Vector3 centerPoint = new API().StringToVector3(Preset.Coords); string centerPointName = Preset.Name; int minutes = Airstrikes.Instance.Configuration.Instance.MinutesBetweenAirstrikes - 1; int amt = Airstrikes.Instance.Configuration.Instance.MinutesBetweenAirstrikes + 1; // x minutes left... for (int i = 0; i < minutes; i++) { amt--; if (Airstrikes.Instance.Configuration.Instance.GlobalMessageColor.StartsWith("#")) { Color?hexColor = UnturnedChat.GetColorFromHex(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor); UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike", centerPointName, amt), hexColor ?? default(Color)); } else { UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike", centerPointName, amt), UnturnedChat.GetColorFromName(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor, Color.green)); } yield return(new WaitForSeconds(60f)); } // 1 minute left... Airstrikes.Instance.Vectors.Add(centerPoint); if (Airstrikes.Instance.Configuration.Instance.GlobalMessageColor.StartsWith("#")) { Color?hexColor = UnturnedChat.GetColorFromHex(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor); UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike", centerPointName, 1), hexColor ?? default(Color)); } else { UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike", centerPointName, 1), UnturnedChat.GetColorFromName(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor, Color.green)); } yield return(new WaitForSeconds(60f)); // times up... if (Airstrikes.Instance.Configuration.Instance.GlobalMessageColor.StartsWith("#")) { Color?hexColor = UnturnedChat.GetColorFromHex(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor); UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike_now", centerPointName), hexColor ?? default(Color)); } else { UnturnedChat.Say(Airstrikes.Instance.Translate("global_airstrike_now", centerPointName), UnturnedChat.GetColorFromName(Airstrikes.Instance.Configuration.Instance.GlobalMessageColor, Color.green)); } yield return(new WaitForSeconds(3f)); Airstrikes.Instance.Vectors.Remove(centerPoint); // strike... for (int i = 0; i < (Preset.StrikeCount + 1); i++) { yield return(new WaitForSeconds(Preset.StrikeSpeed)); Ray impactRay = new Ray(new Vector3(UnityEngine.Random.Range(centerPoint.x - Preset.Range, centerPoint.x + Preset.Range), centerPoint.y + 50, UnityEngine.Random.Range(centerPoint.z - Preset.Range, centerPoint.z + Preset.Range)), Vector3.down); if (Physics.Raycast(impactRay, out RaycastHit hit)) { EffectManager.sendEffect(20, EffectManager.INSANE, hit.point); DamageTool.explode(hit.point, Preset.DamageIntensity, EDeathCause.MISSILE, CSteamID.Nil, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE, DAMAGE); Airstrikes.WriteDebug(hit.point.ToString()); } } } } }