public static void Prefix(byte amount, Vector3 newRagdoll, EDeathCause newCause, ELimb newLimb, CSteamID newKiller, ref EPlayerKill kill, bool trackKill, ERagdollEffect newRagdollEffect, bool canCauseBleeding, PlayerLife __instance) { Player ply = __instance.channel.owner.player; if (ply is null) { return; } if (amount >= ply.life.health && ply.clothing.vest == 1013) { ply.clothing.askWearVest(0, 0, new byte[0], true); InventorySearch foundVest = ply.inventory.has(1013); if (foundVest is null) { return; } ply.inventory.removeItem(foundVest.page, ply.inventory.getIndex(foundVest.page, foundVest.jar.x, foundVest.jar.y)); ExplosionParameters explodParams = new ExplosionParameters(ply.transform.position, 10f, EDeathCause.KILL, CSteamID.Nil); explodParams.penetrateBuildables = true; explodParams.playerDamage = 150; explodParams.damageRadius = 32; explodParams.barricadeDamage = 1000; List <EPlayerKill> deadPlayers = new List <EPlayerKill>(); EffectManager.sendEffect(45, byte.MaxValue, byte.MaxValue, byte.MaxValue, ply.transform.position); DamageTool.explode(explodParams, out deadPlayers); } }
private void OnPluginKeyTick(Player player, uint simulation, byte key, bool state) { if (!state || key != 1) { return; } if (player.clothing.vest == 1013) { // Refactor this into explode function player.clothing.askWearVest(0, 0, new byte[0], true); InventorySearch foundVest = player.inventory.has(1013); if (foundVest is null) { return; } player.inventory.removeItem(foundVest.page, player.inventory.getIndex(foundVest.page, foundVest.jar.x, foundVest.jar.y)); ExplosionParameters explodParams = new ExplosionParameters(player.transform.position, 10f, EDeathCause.KILL, CSteamID.Nil); explodParams.penetrateBuildables = true; explodParams.playerDamage = 150; explodParams.damageRadius = 32; explodParams.barricadeDamage = 1000; List <EPlayerKill> deadPlayers = new List <EPlayerKill>(); EffectManager.sendEffect(45, byte.MaxValue, byte.MaxValue, byte.MaxValue, player.transform.position); DamageTool.explode(explodParams, out deadPlayers); } }
/// <summary> /// Sets up the parameters of this explosion with the inputed explosion parameters. /// </summary> /// <param name="newExplosionParameters"></param> public void SetUpExplosionParameters(ExplosionParameters newExplosionParameters) { currentExplosionParameters = newExplosionParameters; currentExplosionParameters.SetUpDurations(); gameObject.SetActive(true); explosionHitbox.gameObject.SetActive(true); explosionHitbox.transform.localScale = Vector3.zero; /*if (particlesParent != null) * particlesParent.localScale = currentExplosionParameters.explosionMaxSize * Vector3.one;*/ if (explosionParticleSystem != null) { explosionParticleSystem.transform.localScale = normalizedParticlesSize * currentExplosionParameters.explosionMaxSize; explosionParticleSystem.Play(); } if (audioSource != null) { audioSource.PlaySound(explosionSound); } }
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously #endregion #region Coroutines private IEnumerator C4DetonateCoroutine() { EffectManager.sendEffect(45, byte.MaxValue, byte.MaxValue, byte.MaxValue, Drop.model.position); ExplosionParameters parameters = new ExplosionParameters(Drop.model.position, 150f, EDeathCause.KILL, CSteamID.Nil); parameters.penetrateBuildables = true; parameters.playerDamage = 150; parameters.damageRadius = 64; parameters.barricadeDamage = 1000; List <EPlayerKill> deadPlayers = new List <EPlayerKill>(); DamageTool.explode(parameters, out deadPlayers); byte x; byte y; ushort plant; ushort index; BarricadeRegion region; if (!BarricadeManager.tryGetInfo(Drop.model.transform, out x, out y, out plant, out index, out region)) { yield return(null); } BarricadeManager.destroyBarricade(region, x, y, plant, index); Defused = true; // quick fix to prevent time ticking C4Manager.ActiveC4.Remove(this); yield return(null); }
public ProjectileSpecialParameters(ShipSpeedModifier speedModifier, ProjectilePiercingParameters piercingParameters, ProjectileSkeweringParameters skeweringParameters, ExplosionParameters explParameters, SmokeZoneParameters smokeZoneParams, SlowingZoneParameters slowingZoneParams) { shipSpeedModifier = speedModifier; projectilePiercingParameters = piercingParameters; projectileSkeweringParameters = skeweringParameters; explosionParameters = explParameters; smokeZoneParameters = smokeZoneParams; slowingZoneParameters = slowingZoneParams; }
public Mine(int playerId, Vec2Double position, Vec2Double size, MineState state, double?timer, double triggerRadius, ExplosionParameters explosionParameters) { PlayerId = playerId; Position = position; Size = size; State = state; Timer = timer; TriggerRadius = triggerRadius; ExplosionParameters = explosionParameters; }
public Bullet(WeaponType weaponType, int unitId, int playerId, Vec2Double position, Vec2Double velocity, int damage, double size, ExplosionParameters explosionParameters) { WeaponType = weaponType; UnitId = unitId; PlayerId = playerId; Position = position ?? throw new System.ArgumentNullException(nameof(position)); Velocity = velocity ?? throw new System.ArgumentNullException(nameof(velocity)); Damage = damage; Size = size; ExplosionParameters = explosionParameters; }
public static Properties ReadFrom(System.IO.BinaryReader reader) { var result = new Properties(); result.MaxTickCount = reader.ReadInt32(); result.TeamSize = reader.ReadInt32(); result.TicksPerSecond = reader.ReadDouble(); result.UpdatesPerTick = reader.ReadInt32(); result.LootBoxSize = Vec2Double.ReadFrom(reader); result.UnitSize = Vec2Double.ReadFrom(reader); result.UnitMaxHorizontalSpeed = reader.ReadDouble(); result.UnitFallSpeed = reader.ReadDouble(); result.UnitJumpTime = reader.ReadDouble(); result.UnitJumpSpeed = reader.ReadDouble(); result.JumpPadJumpTime = reader.ReadDouble(); result.JumpPadJumpSpeed = reader.ReadDouble(); result.UnitMaxHealth = reader.ReadInt32(); result.HealthPackHealth = reader.ReadInt32(); int WeaponParametersSize = reader.ReadInt32(); result.WeaponParameters = new System.Collections.Generic.Dictionary <WeaponType, WeaponParameters>(WeaponParametersSize); for (int i = 0; i < WeaponParametersSize; i++) { WeaponType WeaponParametersKey; switch (reader.ReadInt32()) { case 0: WeaponParametersKey = WeaponType.Pistol; break; case 1: WeaponParametersKey = WeaponType.AssaultRifle; break; case 2: WeaponParametersKey = WeaponType.RocketLauncher; break; default: throw new System.Exception("Unexpected discriminant value"); } WeaponParameters WeaponParametersValue; WeaponParametersValue = Model.WeaponParameters.ReadFrom(reader); result.WeaponParameters.Add(WeaponParametersKey, WeaponParametersValue); } result.MineSize = Vec2Double.ReadFrom(reader); result.MineExplosionParameters = ExplosionParameters.ReadFrom(reader); result.MinePrepareTime = reader.ReadDouble(); result.MineTriggerTime = reader.ReadDouble(); result.MineTriggerRadius = reader.ReadDouble(); result.KillScore = reader.ReadInt32(); return(result); }
public WeaponParameters(int magazineSize, double fireRate, double reloadTime, double minSpread, double maxSpread, double recoil, double aimSpeed, BulletParameters bullet, ExplosionParameters explosion) { MagazineSize = magazineSize; FireRate = fireRate; ReloadTime = reloadTime; MinSpread = minSpread; MaxSpread = maxSpread; Recoil = recoil; AimSpeed = aimSpeed; Bullet = bullet ?? throw new System.ArgumentNullException(nameof(bullet)); Explosion = explosion; }
public Explosion CreateExplosion(ExplosionParameters explosionParameters, Vector3 explosionPosition, Color explosionColor, Color sparksMinColor, Color sparksMaxColor, Color ringColor) { Explosion newExplosion = explosionsPool.Dequeue(); newExplosion.transform.position = explosionPosition; newExplosion.SetUpExplosionParameters(explosionParameters); newExplosion.gameObject.SetActive(true); explosionsPool.Enqueue(newExplosion); /*GameManager.gameManager.ScreenShkManager.StartScreenshake(GetExplosionScreenshakeParameters(explosionParameters.explosionMaxSize)); * GameManager.gameManager.FlshManager.StartFlash(GetExplosionFlashParameters(explosionParameters.explosionMaxSize));*/ return(newExplosion); }
public static WeaponParameters ReadFrom(System.IO.BinaryReader reader) { if (reader == null) { throw new System.ArgumentNullException(nameof(reader)); } var magazineSize = reader.ReadInt32(); var fireRate = reader.ReadDouble(); var reloadTime = reader.ReadDouble(); var minSpread = reader.ReadDouble(); var maxSpread = reader.ReadDouble(); var recoil = reader.ReadDouble(); var aimSpeed = reader.ReadDouble(); var bullet = BulletParameters.ReadFrom(reader); var explosionParameters = reader.ReadBoolean() ? ExplosionParameters.ReadFrom(reader) : null; return(new WeaponParameters(magazineSize, fireRate, reloadTime, minSpread, maxSpread, recoil, aimSpeed, bullet, explosionParameters)); }
public static WeaponParameters ReadFrom(System.IO.BinaryReader reader) { var result = new WeaponParameters(); result.MagazineSize = reader.ReadInt32(); result.FireRate = reader.ReadDouble(); result.ReloadTime = reader.ReadDouble(); result.MinSpread = reader.ReadDouble(); result.MaxSpread = reader.ReadDouble(); result.Recoil = reader.ReadDouble(); result.AimSpeed = reader.ReadDouble(); result.Bullet = BulletParameters.ReadFrom(reader); if (reader.ReadBoolean()) { result.Explosion = ExplosionParameters.ReadFrom(reader); } else { result.Explosion = null; } return(result); }
public Properties(int maxTickCount, int teamSize, double ticksPerSecond, int updatesPerTick, Vec2Double lootBoxSize, Vec2Double unitSize, double unitMaxHorizontalSpeed, double unitFallSpeed, double unitJumpTime, double unitJumpSpeed, double jumpPadJumpTime, double jumpPadJumpSpeed, int unitMaxHealth, int healthPackHealth, System.Collections.Generic.IDictionary <WeaponType, WeaponParameters> weaponParameters, Vec2Double mineSize, ExplosionParameters mineExplosionParameters, double minePrepareTime, double mineTriggerTime, double mineTriggerRadius, int killScore) { MaxTickCount = maxTickCount; TeamSize = teamSize; TicksPerSecond = ticksPerSecond; UpdatesPerTick = updatesPerTick; LootBoxSize = lootBoxSize; UnitSize = unitSize; UnitMaxHorizontalSpeed = unitMaxHorizontalSpeed; UnitFallSpeed = unitFallSpeed; UnitJumpTime = unitJumpTime; UnitJumpSpeed = unitJumpSpeed; JumpPadJumpTime = jumpPadJumpTime; JumpPadJumpSpeed = jumpPadJumpSpeed; UnitMaxHealth = unitMaxHealth; HealthPackHealth = healthPackHealth; WeaponParameters = weaponParameters; MineSize = mineSize; MineExplosionParameters = mineExplosionParameters; MinePrepareTime = minePrepareTime; MineTriggerTime = mineTriggerTime; MineTriggerRadius = mineTriggerRadius; KillScore = killScore; }
public static Properties ReadFrom(System.IO.BinaryReader reader) { if (reader == null) { throw new System.ArgumentNullException(nameof(reader)); } var maxTickCount = reader.ReadInt32(); var teamSize = reader.ReadInt32(); var ticksPerSecond = reader.ReadDouble(); var updatesPerTick = reader.ReadInt32(); var lootBoxSize = Vec2Double.ReadFrom(reader); var unitSize = Vec2Double.ReadFrom(reader); var unitMaxHorizontalSpeed = reader.ReadDouble(); var unitFallSpeed = reader.ReadDouble(); var unitJumpTime = reader.ReadDouble(); var unitJumpSpeed = reader.ReadDouble(); var jumpPadJumpTime = reader.ReadDouble(); var jumpPadJumpSpeed = reader.ReadDouble(); var unitMaxHealth = reader.ReadInt32(); var healthPackHealth = reader.ReadInt32(); var weaponParametersSize = reader.ReadInt32(); var weaponParameters = new System.Collections.Generic.Dictionary <WeaponType, WeaponParameters>(weaponParametersSize); for (var i = 0; i < weaponParametersSize; i++) { WeaponType weaponParametersKey; switch (reader.ReadInt32()) { case 0: weaponParametersKey = WeaponType.Pistol; break; case 1: weaponParametersKey = WeaponType.AssaultRifle; break; case 2: weaponParametersKey = WeaponType.RocketLauncher; break; default: throw new System.Exception("Unexpected discriminant value"); } WeaponParameters weaponParametersValue; weaponParametersValue = Model.WeaponParameters.ReadFrom(reader); weaponParameters.Add(weaponParametersKey, weaponParametersValue); } var mineSize = Vec2Double.ReadFrom(reader); var mineExplosionParameters = ExplosionParameters.ReadFrom(reader); var minePrepareTime = reader.ReadDouble(); var mineTriggerTime = reader.ReadDouble(); var mineTriggerRadius = reader.ReadDouble(); var killScore = reader.ReadInt32(); return(new Properties( maxTickCount, teamSize, ticksPerSecond, updatesPerTick, lootBoxSize, unitSize, unitMaxHorizontalSpeed, unitFallSpeed, unitJumpTime, unitJumpSpeed, jumpPadJumpTime, jumpPadJumpSpeed, unitMaxHealth, healthPackHealth, weaponParameters, mineSize, mineExplosionParameters, minePrepareTime, mineTriggerTime, mineTriggerRadius, killScore)); }