private void StartRainOfFire(Vector3 origin, ConfigData.Settings setting) { float radius = setting.Radius; int numberOfRockets = setting.RocketAmount; float duration = setting.Duration; bool dropsItems = setting.ItemDropControl.EnableItemDrop; ItemDrop[] itemDrops = setting.ItemDropControl.ItemsToDrop; float intervals = duration / numberOfRockets; if (configData.Options.NotifyEvent) { if (PopupNotifications) { PopupNotifications.Call("CreatePopupNotification", msg("incoming")); } else { PrintToChat(msg("incoming")); } } timer.Repeat(intervals, numberOfRockets, () => RandomRocket(origin, radius, setting)); }
private bool StartOnPlayer(string playerName, ConfigData.Settings setting) { BasePlayer player = GetPlayerByName(playerName); if (player == null) { return(false); } StartRainOfFire(player.transform.position, setting); return(true); }
private void RandomRocket(Vector3 origin, float radius, ConfigData.Settings setting) { bool isFireRocket = false; Vector2 rand = UnityEngine.Random.insideUnitCircle; Vector3 offset = new Vector3(rand.x * radius, 0, rand.y * radius); Vector3 direction = (Vector3.up * -2.0f + Vector3.right).normalized; Vector3 launchPos = origin + offset - direction * 200; if (RandomRange(1, setting.FireRocketChance) == 1) { isFireRocket = true; } BaseEntity rocket = CreateRocket(launchPos, direction, isFireRocket); if (setting.ItemDropControl.EnableItemDrop) { var comp = rocket.gameObject.AddComponent <ItemCarrier>(); comp.SetCarriedItems(setting.ItemDropControl.ItemsToDrop); comp.SetDropMultiplier(configData.Options.GlobalDropMultiplier); } }