C#:
using Oxide.Core;
using System;
using Oxide.Core.Libraries.Covalence;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using ConVar;
using System.IO;
using System.Text;
using Network;
using UnityEngine;
using Oxide.Game.Rust.Cui;
namespace Oxide.Plugins
{
[Info("TopF", "sdapro", "1.0.0")]
//YouTube https://www.youtube.com/channel/UCaatLYzqycP6He7TEbK-IDA
//https://t.me/+jb13FvJyK4o5MTli
public class TopF : CovalencePlugin
{
int bigRocketCount = 20;
int littleRocketCount = 12;
bool jerichoBlowUp = true;
bool heatSeekerBlowUp = false;
bool followBlowUp = false;
bool javalinBlowUp = false;
int xSize = 100;
int ySize = 1;
int maxRange = 250;
int scatterSize = 3;
float flashDuration = 4.0f;
ulong javalin = 2657315108;
ulong medSkin = 1637846750;
ulong extramSkin = 2425947331;
ulong extrasSkin = 2489546178;
ulong extraSkin = 2842283317;
ulong defaultSkin = 2790782587;
ulong chSkin = 2333017465;
int instaHealAmount = 15;
int passiveHealAmount = 50;
bool spawnFlares = true;
int stunDuration = 4;
HashSet<ulong> skins = new HashSet<ulong>();
#region Config
private void Init()
{
permission.RegisterPermission("topf.rs", this);
permission.RegisterPermission("topf.nrs", this);
javalinBlowUp = (bool)Config["javalinDestroyOnShoot"];
javalin = ulong.Parse(Config["javalinSkin"].ToString());
extramSkin = ulong.Parse(Config["extramSkin"].ToString());
medSkin = ulong.Parse(Config["medSkin"].ToString());
extrasSkin = ulong.Parse(Config["extrasSkin"].ToString());
extraSkin = ulong.Parse(Config["extraSkin"].ToString());
defaultSkin = ulong.Parse(Config["defaultSkin"].ToString());
chSkin = ulong.Parse(Config["chSkin"].ToString());
if (Config["SpawnFlares"] == null)
{
Config["SpawnFlares"] = true;
SaveConfig();
}
spawnFlares = (bool)Config["SpawnFlares"];
skins.Add(javalin);
skins.Add(extramSkin);
skins.Add(extrasSkin);
skins.Add(medSkin);
skins.Add(extraSkin);
skins.Add(defaultSkin);
skins.Add(chSkin);
}
protected override void LoadDefaultConfig()
{
Config["javalinDestroyOnShoot"] = true;
Config["javalinSkin"] = 2657315108;
Config["extramSkin"] = 2425947331;
Config["extrasSkin"] = 2489546178;
Config["extraSkin"] = 2842283317;
Config["defaultSkin"] = 2790782587;
Config["medSkin"] = 1637846750;
Config["chSkin"] = 2333017465;
}
#endregion
#region Commands
[Command("ch"), Permission("topf.ch")]
private void ch(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, chSkin),
player.inventory.containerBelt);
}
[Command("med"), Permission("topf.med")]
private void med(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("syringe.medical", 1, medSkin),
player.inventory.containerBelt);
}
[Command("Jav"), Permission("topf.jav")]
private void Jav(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("rocket.launcher", 1, javalin),
player.inventory.containerBelt);
}
[Command("extram"), Permission("topf.admin")]
private void extram(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, extramSkin),
player.inventory.containerBelt);
}
[Command("extras"), Permission("topf.admin")]
private void extras(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, extrasSkin),
player.inventory.containerBelt);
}
[Command("extrad"), Permission("topf.admin")]
private void extrad(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, defaultSkin),
player.inventory.containerBelt);
}
[Command("extra"), Permission("topf.extra")]
private void extra(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, extraSkin),
player.inventory.containerBelt);
}
[Command("givetop"), Permission("topf.admin")]
private void giveallnades(IPlayer iplayer, string command, string[] args)
{
BasePlayer player = iplayer.Object as BasePlayer;
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, extramSkin),
player.inventory.containerBelt);
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, extrasSkin),
player.inventory.containerBelt);
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, extraSkin),
player.inventory.containerBelt);
player.inventory.GiveItem(ItemManager.CreateByName("grenade.f1", 1, defaultSkin),
player.inventory.containerBelt);
}
#endregion
#region Hooks
void OnRocketLaunched(BasePlayer player, BaseEntity entity)
{
HeldEntity item = player.GetHeldEntity();
Item invItem = item.GetItem();
if(permission.UserHasPermission(player.userID.ToString(), "topf.rs"))
{
if(invItem.skin == javalin)
{
entity.Kill();
JavalinRocket(player.IPlayer);
if(!permission.UserHasPermission(player.userID.ToString(), "topf.nrs"))
{
if(javalinBlowUp)
invItem.DoRemove();
}
}
}
return;
}
private object OnExplosiveFuseSet(TimedExplosive ent, float fuseLength)
{
if(ent.skinID == extrasSkin)
{
ulong ownerId = ent.OwnerID;
timer.Once(fuseLength - 1.0f, () =>
{
Vector3 location = ent.transform.position;
Vector3 entityRight = ent.transform.right;
Vector3 entityForward = ent.transform.forward;
Quaternion rotation = ent.transform.rotation;
//grenade in a grenade
timer.Repeat(0.3f, 6, () => {
int randomRight = UnityEngine.Random.Range(scatterSize * 1, scatterSize);
int radonomForward = UnityEngine.Random.Range(scatterSize * 0, scatterSize);
BaseEntity entity = GameManager.server.CreateEntity("assets/content/vehicles/mlrs/rocket_mlrs.prefab", location + (Vector3.forward) + (Vector3.up * 300f), rotation);
TimedExplosive newNade = entity as TimedExplosive;
entity.OwnerID = ownerId;
entity.creatorEntity = (BaseEntity)ent;
entity.Spawn();
newNade.SetFuse(20.1f);
});
});
}
else if(ent.skinID == extraSkin)
{
ulong ownerId = ent.OwnerID;
timer.Once(fuseLength - 0.05f, () =>
{
Vector3 location = ent.transform.position;
Vector3 entityRight = ent.transform.right;
Vector3 entityForward = ent.transform.forward;
Quaternion rotation = ent.transform.rotation;
//grenade in a grenade
timer.Repeat(0.001f, 1, () => {
int randomRight = UnityEngine.Random.Range(scatterSize * 1, scatterSize);
int radonomForward = UnityEngine.Random.Range(scatterSize * 0, scatterSize);
BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", location + (Vector3.forward) + (Vector3.up * 1), rotation);
TimedExplosive newNade = entity as TimedExplosive;
entity.OwnerID = ownerId;
entity.creatorEntity = (BaseEntity)ent;
entity.Spawn();
newNade.SetFuse(0.001f);
Effect.server.Run("assets/content/effects/explosions/underwater/explosion_underwater.prefab", location);
Effect.server.Run("assets/bundled/prefabs/fx/kill_notify.prefab", location);
});
});
}
else if(ent.skinID == chSkin)
{
ulong ownerId = ent.OwnerID;
timer.Once(fuseLength - 0.05f, () =>
{
Vector3 location = ent.transform.position;
Vector3 entityRight = ent.transform.right;
Vector3 entityForward = ent.transform.forward;
//grenade in a grenade
timer.Repeat(0.001f, 1, () => {
int randomRight = UnityEngine.Random.Range(scatterSize * 1, scatterSize);
int radonomForward = UnityEngine.Random.Range(scatterSize * 0, scatterSize);
BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/npc/ch47/ch47.entity.prefab", location + (Vector3.up * 1));
TimedExplosive newNade = entity as TimedExplosive;
entity.OwnerID = ownerId;
entity.creatorEntity = (BaseEntity)ent;
entity.Spawn();
});
});
}
else if(ent.skinID == extramSkin)
{
ulong ownerId = ent.OwnerID;
timer.Once(fuseLength - 0.05f, () =>
{
Vector3 location = ent.transform.position;
Vector3 entityRight = ent.transform.right;
Vector3 entityForward = ent.transform.forward;
Quaternion rotation = ent.transform.rotation;
//grenade in a grenade
timer.Repeat(0.001f, 1, () => {
int randomRight = UnityEngine.Random.Range(scatterSize * 1, scatterSize);
int radonomForward = UnityEngine.Random.Range(scatterSize * 0, scatterSize);
BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", location + (Vector3.forward) + (Vector3.up * 1), rotation);
TimedExplosive newNade = entity as TimedExplosive;
entity.OwnerID = ownerId;
entity.creatorEntity = (BaseEntity)ent;
entity.Spawn();
newNade.SetFuse(0.001f);
Effect.server.Run("assets/content/effects/explosions/underwater/explosion_underwater.prefab", location);
});
});
}
else if(ent.skinID == defaultSkin)
{
ulong ownerId = ent.OwnerID;
timer.Once(fuseLength - 0.05f, () =>
{
Vector3 location = ent.transform.position;
Vector3 entityRight = ent.transform.right;
Vector3 entityForward = ent.transform.forward;
Quaternion rotation = ent.transform.rotation;
//grenade in a grenade
timer.Repeat(0.0001f, 1, () => {
int randomRight = UnityEngine.Random.Range(scatterSize * 1, scatterSize);
int radonomForward = UnityEngine.Random.Range(scatterSize * 0, scatterSize);
BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/npc/patrol helicopter/rocket_heli.prefab", location + (Vector3.forward) + (Vector3.up * 0), rotation);
TimedExplosive newNade = entity as TimedExplosive;
entity.OwnerID = ownerId;
entity.creatorEntity = (BaseEntity)ent;
entity.Spawn();
newNade.SetFuse(0.1f);
Effect.server.Run("assets/content/effects/explosions/underwater/explosion_underwater.prefab", location);
});
});
}
return null;
}
object CanCombineDroppedItem(DroppedItem item, DroppedItem targetItem)
{
if (skins.Contains(targetItem.item.skin) || skins.Contains(item.item.skin) && item.item.skin == targetItem.item.skin)
{
return false;
}
return null;
}
object CanStackItem(Item item, Item targetItem)
{
if ((skins.Contains(targetItem.skin) || skins.Contains(item.skin)) && item.skin != targetItem.skin)
{
return false;
}
return null;
}
#endregion
private void JavalinRocket(IPlayer iplayer)
{
BasePlayer player = iplayer.Object as BasePlayer;
Vector3 firingDir = player.GetNetworkRotation() * Vector3.forward;
RaycastHit hitInfo;
Vector3 firingPos = player.eyes.transform.position + Vector3.up + Vector3.up;
Vector3 target;
if (UnityEngine.Physics.Raycast(firingPos, firingDir, out hitInfo, maxRange, 1236478737))
{
target = hitInfo.point;
}
else
{
target = firingPos + (firingDir.normalized * maxRange);
}
BaseEntity entitys = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entity = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityq = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityw = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entitye = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityr = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityt = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityy = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityu = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityi = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityo = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityp = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityz = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityx = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityc = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityv = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityb = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
BaseEntity entityn = GameManager.server.CreateEntity("assets/prefabs/ammo/rocket/rocket_basic.prefab", firingPos + firingDir);
ServerProjectile projectileq = entityq.GetComponent<ServerProjectile>();
ServerProjectile projectilew = entityw.GetComponent<ServerProjectile>();
ServerProjectile projectilee = entitye.GetComponent<ServerProjectile>();
ServerProjectile projectiler = entityr.GetComponent<ServerProjectile>();
ServerProjectile projectilet = entityt.GetComponent<ServerProjectile>();
ServerProjectile projectiley = entityy.GetComponent<ServerProjectile>();
ServerProjectile projectileu = entityu.GetComponent<ServerProjectile>();
ServerProjectile projectilei = entityi.GetComponent<ServerProjectile>();
ServerProjectile projectileo = entityo.GetComponent<ServerProjectile>();
ServerProjectile projectilep = entityp.GetComponent<ServerProjectile>();
ServerProjectile projectilez = entityz.GetComponent<ServerProjectile>();
ServerProjectile projectilex = entityx.GetComponent<ServerProjectile>();
ServerProjectile projectilec = entityc.GetComponent<ServerProjectile>();
ServerProjectile projectilev = entityv.GetComponent<ServerProjectile>();
ServerProjectile projectileb = entityb.GetComponent<ServerProjectile>();
ServerProjectile projectilen = entityn.GetComponent<ServerProjectile>();
ServerProjectile projectile = entity.GetComponent<ServerProjectile>();
ServerProjectile projectiles = entitys.GetComponent<ServerProjectile>();
Vector3 vector3q = projectileq.initialVelocity + firingDir * 1;
Vector3 vector3w = projectilew.initialVelocity + firingDir * 1;
Vector3 vector3e = projectilee.initialVelocity + firingDir * 1;
Vector3 vector3r = projectiler.initialVelocity + firingDir * 1;
Vector3 vector3t = projectilet.initialVelocity + firingDir * 1;
Vector3 vector3y = projectiley.initialVelocity + firingDir * 1;
Vector3 vector3u = projectileu.initialVelocity + firingDir * 1;
Vector3 vector3i = projectilei.initialVelocity + firingDir * 1;
Vector3 vector3o = projectileo.initialVelocity + firingDir * 1;
Vector3 vector3p = projectilep.initialVelocity + firingDir * 1;
Vector3 vector3z = projectilez.initialVelocity + firingDir * 1;
Vector3 vector3x = projectilex.initialVelocity + firingDir * 1;
Vector3 vector3c = projectilec.initialVelocity + firingDir * 1;
Vector3 vector3v = projectilev.initialVelocity + firingDir * 1;
Vector3 vector3b = projectileb.initialVelocity + firingDir * 1;
Vector3 vector3n = projectilen.initialVelocity + firingDir * 1;
Vector3 vector3 = projectile.initialVelocity + firingDir * 1;
Vector3 vectors3 = projectiles.initialVelocity + firingDir * 1;
//projectile.speed
projectileq.gravityModifier = 0;
projectileq.InitializeVelocity(vector3);
projectilew.gravityModifier = 0;
projectilew.InitializeVelocity(vector3);
projectilee.gravityModifier = 0;
projectilee.InitializeVelocity(vector3);
projectiler.gravityModifier = 0;
projectiler.InitializeVelocity(vector3);
projectilet.gravityModifier = 0;
projectilet.InitializeVelocity(vector3);
projectiley.gravityModifier = 0;
projectiley.InitializeVelocity(vector3);
projectileu.gravityModifier = 0;
projectileu.InitializeVelocity(vector3);
projectilei.gravityModifier = 0;
projectilei.InitializeVelocity(vector3);
projectileo.gravityModifier = 0;
projectileo.InitializeVelocity(vector3);
projectilep.gravityModifier = 0;
projectilep.InitializeVelocity(vector3);
projectilez.gravityModifier = 0;
projectilez.InitializeVelocity(vector3);
projectilex.gravityModifier = 0;
projectilex.InitializeVelocity(vector3);
projectilec.gravityModifier = 0;
projectilec.InitializeVelocity(vector3);
projectilev.gravityModifier = 0;
projectilev.InitializeVelocity(vector3);
projectileb.gravityModifier = 0;
projectileb.InitializeVelocity(vector3);
projectilen.gravityModifier = 0;
projectilen.InitializeVelocity(vector3);
projectile.gravityModifier = 0;
projectile.InitializeVelocity(vector3);
projectiles.gravityModifier = 0;
projectiles.InitializeVelocity(vectors3);
entityq.creatorEntity = (BaseEntity)player;
entityq.OwnerID = player.userID;
entityw.creatorEntity = (BaseEntity)player;
entityw.OwnerID = player.userID;
entitye.creatorEntity = (BaseEntity)player;
entitye.OwnerID = player.userID;
entityr.creatorEntity = (BaseEntity)player;
entityr.OwnerID = player.userID;
entityt.creatorEntity = (BaseEntity)player;
entityt.OwnerID = player.userID;
entityy.creatorEntity = (BaseEntity)player;
entityy.OwnerID = player.userID;
entityu.creatorEntity = (BaseEntity)player;
entityu.OwnerID = player.userID;
entityi.creatorEntity = (BaseEntity)player;
entityi.OwnerID = player.userID;
entityo.creatorEntity = (BaseEntity)player;
entityo.OwnerID = player.userID;
entityp.creatorEntity = (BaseEntity)player;
entityp.OwnerID = player.userID;
entityz.creatorEntity = (BaseEntity)player;
entityz.OwnerID = player.userID;
entityx.creatorEntity = (BaseEntity)player;
entityx.OwnerID = player.userID;
entityc.creatorEntity = (BaseEntity)player;
entityc.OwnerID = player.userID;
entityv.creatorEntity = (BaseEntity)player;
entityv.OwnerID = player.userID;
entityb.creatorEntity = (BaseEntity)player;
entityb.OwnerID = player.userID;
entityn.creatorEntity = (BaseEntity)player;
entityn.OwnerID = player.userID;
entity.creatorEntity = (BaseEntity)player;
entity.OwnerID = player.userID;
entitys.creatorEntity = (BaseEntity)player;
entitys.OwnerID = player.userID;
entity.Spawn();
entityq.Spawn();
entityw.Spawn();
entitye.Spawn();
entityr.Spawn();
entityt.Spawn();
entityy.Spawn();
entityu.Spawn();
entityi.Spawn();
entityo.Spawn();
entityp.Spawn();
entityz.Spawn();
entityx.Spawn();
entityc.Spawn();
entityv.Spawn();
entityb.Spawn();
entityn.Spawn();
entitys.Spawn();
timer.Once(0.3f, () => // Start up motion
{
if (entityq == null || projectileq == null || entityq.IsDestroyed) return;
PlayEffect("assets/content/vehicles/mlrs/effects/pfx_mlrs_backfire.prefab", entityq);
projectileq.gravityModifier = 0.1f;
Vector3 newVel = projectileq.initialVelocity + firingDir * 100;
projectileq.InitializeVelocity(newVel);
});
timer.Once(0.4f, () => // Start up motion
{
if (entityw == null || projectilew == null || entityw.IsDestroyed) return;
projectilew.gravityModifier = 0.1f;
Vector3 newVel = projectilew.initialVelocity + firingDir * 100;
projectilew.InitializeVelocity(newVel);
});
timer.Once(0.5f, () => // Start up motion
{
if (entitye == null || projectilee == null || entitye.IsDestroyed) return;
projectilee.gravityModifier = 0.1f;
Vector3 newVel = projectilee.initialVelocity + firingDir * 100;
projectilee.InitializeVelocity(newVel);
});
timer.Once(0.6f, () => // Start up motion
{
if (entityr == null || projectiler == null || entityr.IsDestroyed) return;
projectiler.gravityModifier = 0.1f;
Vector3 newVel = projectiler.initialVelocity + firingDir * 100;
projectiler.InitializeVelocity(newVel);
});
timer.Once(0.7f, () => // Start up motion
{
if (entityt == null || projectilet == null || entityt.IsDestroyed) return;
projectilet.gravityModifier = 0.1f;
Vector3 newVel = projectilet.initialVelocity + firingDir * 100;
projectilet.InitializeVelocity(newVel);
});
timer.Once(0.8f, () => // Start up motion
{
if (entityy == null || projectiley == null || entityy.IsDestroyed) return;
projectiley.gravityModifier = 0.1f;
Vector3 newVel = projectiley.initialVelocity + firingDir * 100;
projectiley.InitializeVelocity(newVel);
});
timer.Once(0.9f, () => // Start up motion
{
if (entityu == null || projectileu == null || entityu.IsDestroyed) return;
projectileu.gravityModifier = 0.1f;
Vector3 newVel = projectileu.initialVelocity + firingDir * 100;
projectileu.InitializeVelocity(newVel);
});
timer.Once(0.10f, () => // Start up motion
{
if (entityi == null || projectilei == null || entityi.IsDestroyed) return;
projectilei.gravityModifier = 0.1f;
Vector3 newVel = projectilei.initialVelocity + firingDir * 100;
projectilei.InitializeVelocity(newVel);
});
timer.Once(0.11f, () => // Start up motion
{
if (entityo == null || projectileo == null || entityo.IsDestroyed) return;
projectileo.gravityModifier = 0.1f;
Vector3 newVel = projectileo.initialVelocity + firingDir * 100;
projectileo.InitializeVelocity(newVel);
});
timer.Once(0.12f, () => // Start up motion
{
if (entityp == null || projectilep == null || entityp.IsDestroyed) return;
projectilep.gravityModifier = 0.1f;
Vector3 newVel = projectilep.initialVelocity + firingDir * 100;
projectilep.InitializeVelocity(newVel);
});
timer.Once(0.13f, () => // Start up motion
{
if (entityz == null || projectilez == null || entityz.IsDestroyed) return;
projectilez.gravityModifier = 0.1f;
Vector3 newVel = projectilez.initialVelocity + firingDir * 100;
projectilez.InitializeVelocity(newVel);
});
timer.Once(0.14f, () => // Start up motion
{
if (entityx == null || projectilex == null || entityx.IsDestroyed) return;
projectilex.gravityModifier = 0.1f;
Vector3 newVel = projectilex.initialVelocity + firingDir * 100;
projectilex.InitializeVelocity(newVel);
});
timer.Once(0.15f, () => // Start up motion
{
if (entityc == null || projectilec == null || entityc.IsDestroyed) return;
projectilec.gravityModifier = 0.1f;
Vector3 newVel = projectilec.initialVelocity + firingDir * 100;
projectilec.InitializeVelocity(newVel);
});
timer.Once(0.16f, () => // Start up motion
{
if (entityv == null || projectilev == null || entityv.IsDestroyed) return;
projectilev.gravityModifier = 0.1f;
Vector3 newVel = projectilev.initialVelocity + firingDir * 100;
projectilev.InitializeVelocity(newVel);
});
timer.Once(0.17f, () => // Start up motion
{
if (entityb == null || projectileb == null || entityb.IsDestroyed) return;
projectileb.gravityModifier = 0.1f;
Vector3 newVel = projectileb.initialVelocity + firingDir * 100;
projectileb.InitializeVelocity(newVel);
});
timer.Once(0.18f, () => // Start up motion
{
if (entityn == null || projectilen == null || entityn.IsDestroyed) return;
projectilen.gravityModifier = 0.1f;
Vector3 newVel = projectilen.initialVelocity + firingDir * 100;
projectilen.InitializeVelocity(newVel);
});
timer.Once(0.19f, () => // Start up motion
{
if (entity == null || projectile == null || entity.IsDestroyed) return;
projectile.gravityModifier = 0.1f;
Vector3 newVel = projectile.initialVelocity + firingDir * 100;
projectile.InitializeVelocity(newVel);
});
timer.Once(0.20f, () => // Start up motion
{
if (entitys == null || projectiles == null || entitys.IsDestroyed) return;
projectiles.gravityModifier = 0.1f;
Vector3 newVel = projectiles.initialVelocity + firingDir * 100;
projectiles.InitializeVelocity(newVel);
});
}
private List<BasePlayer> FindAllPlayersNear(Vector3 pos, float radius)
{
Collider[] cast = UnityEngine.Physics.OverlapSphere(pos, radius);
List<BasePlayer> ents = new List<BasePlayer>();
foreach (Collider item in cast)
{
BaseEntity entity = item.gameObject.ToBaseEntity();
if (entity.IsValid() && entity is BasePlayer && entity is ScientistNPC == false && entity.IsVisible(pos))
{
ents.Add(entity as BasePlayer);
}
}
return ents;
}
private static void PlayEffect(string effect, BaseEntity entity)
{
BaseEntity playerEntity = entity;
Effect reusableInstance = new Effect();
reusableInstance.Clear();
reusableInstance.Init(Effect.Type.Generic, playerEntity, 0, new Vector3(0, 0, 0), new Vector3(0, 0, 0), null);
reusableInstance.scale = false ? 0.0f : 1f;
reusableInstance.pooledString = effect;
EffectNetwork.Send(reusableInstance);
}
public class OnCollisionExplode : MonoBehaviour
{
public TimedExplosive ent { get; set; }
void OnCollisionEnter(Collision collision)
{
ent.Explode();
Destroy(this);
}
}
}
}