Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
    /// <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);
        }
    }
Esempio n. 4
0
#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);
        }
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 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;
 }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
 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;
 }
Esempio n. 11
0
    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);
    }
Esempio n. 12
0
        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));
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
 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;
 }
Esempio n. 15
0
        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));
        }