Ejemplo n.º 1
0
        public override void OnEvent(CreateSplash createSplash)
        {
            var splash = Instantiate(splashEffect, createSplash.Position, Quaternion.identity);

            Destroy(splash, 2f);

            var hits = Physics.SphereCastAll(createSplash.Position, createSplash.Radius, Vector3.one);

            foreach (var hit in hits)
            {
                var player = hit.transform.GetComponent <Player>();
                if (player == null)
                {
                    continue;
                }

                if (player.entity.HasControl)
                {
                    var playerHit = PlayerHit.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);
                    playerHit.Damage        = createSplash.Damage;
                    playerHit.Target        = player.entity;
                    playerHit.WeaponName    = "Sponge";
                    playerHit.PlayerWhoShot = createSplash.PlayerWhoShot.GetState <IPlayer>().Username;
                    playerHit.Send();

                    break;
                }
            }
        }
Ejemplo n.º 2
0
        private void FixedUpdate()
        {
            if (_grounded || !_launch)
            {
                return;
            }

            if (transform.position.y <= 0)
            {
                _grounded = true;
                var t = transform.position;
                t.y = 0.2f;
                transform.position = t;
            }

            var groundRay = new Ray(transform.position, _groundCheck);

            if (!Physics.Raycast(groundRay, out _, 0.25f, 9))
            {
                return;
            }

            _grounded = true;


            var spawnSponge = SpawnSponge.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);

            spawnSponge.Position = transform.position;
            spawnSponge.Type     = "Weapon-Sponge";
            spawnSponge.Send();

            var createSplash = CreateSplash.Create(GlobalTargets.Everyone, ReliabilityModes.ReliableOrdered);

            createSplash.Position      = transform.position;
            createSplash.Radius        = player.weaponSystem.spongeWeaponState.weapon.Radius;
            createSplash.Damage        = player.weaponSystem.spongeWeaponState.weapon.Damage;
            createSplash.PlayerWhoShot = player.entity;
            createSplash.Send();

            var destroySpongeOnHit = DestroySpongeOnHit.Create(GlobalTargets.Everyone, ReliabilityModes.ReliableOrdered);

            destroySpongeOnHit.SpongeId = guid;
            destroySpongeOnHit.Send();
        }