Exemplo n.º 1
0
        public void OnDamage(ShMovable movable, DamageIndex damageIndex, float amount, ShPlayer attacker, Collider collider, float hitY)
        {
            base.OnDamage(movable, damageIndex, amount, attacker, collider, hitY);

            movable.svMovable.Send(SvSendType.Local,
                                   Channel.Reliable,
                                   ClPacket.UpdateHealth,
                                   movable.ID,
                                   movable.health);
        }
Exemplo n.º 2
0
        public void OnDamage(ShMovable movable, DamageIndex damageIndex, float amount, ShPlayer attacker, Collider collider, Vector3 source, Vector3 hitPoint)
        {
            base.OnDamage(movable, damageIndex, amount, attacker, collider, source, hitPoint);

            movable.svMovable.Send(SvSendType.Local,
                                   Channel.Reliable,
                                   ClPacket.UpdateHealth,
                                   movable.ID,
                                   movable.health,
                                   (hitPoint == default) ? 0f : movable.OutsideController ? movable.controller.GetFlatAngle(source) : movable.GetFlatAngle(source));
        }
Exemplo n.º 3
0
 public void OnDeath(ShMovable movable)
 {
     if (movable.svMovable.respawnable)
     {
         movable.StartCoroutine(movable.svMovable.RespawnDelay());
     }
     else
     {
         movable.StartCoroutine(movable.DestroyDelay(movable.svMovable.RespawnTime));
     }
 }
Exemplo n.º 4
0
 public void OnDeath(ShMovable movable, ShPlayer attacker)
 {
     if (movable.svMovable.respawnable)
     {
         // Must start coroutine on the manager because the movable will be disabled during killcam/spec mode
         movable.manager.StartCoroutine(RespawnDelay(movable));
     }
     else
     {
         movable.svMovable.StartDestroyDelay(movable.svMovable.RespawnTime);
     }
 }
Exemplo n.º 5
0
        private IEnumerator RespawnDelay(ShMovable movable)
        {
            float          respawnTime = Time.time + movable.svMovable.RespawnTime;
            WaitForSeconds delay       = new WaitForSeconds(1f);

            while (movable && movable.IsDead)
            {
                if (Time.time >= respawnTime)
                {
                    movable.svMovable.Disappear();
                    movable.svMovable.Respawn();
                    yield break;
                }
                yield return(delay);
            }
        }
Exemplo n.º 6
0
 public void OnRespawn(ShMovable movable)
 {
     if (movable.svMovable.randomSpawn)
     {
         movable.svMovable.Despawn();
     }
     else if (movable.IsDead)
     {
         movable.svMovable.Send(SvSendType.Local, Channel.Reliable, ClPacket.Spawn,
                                movable.ID,
                                movable.originalPosition,
                                movable.originalRotation,
                                movable.svMovable.GetOriginalParentIndex);
         movable.Spawn(movable.originalPosition, movable.originalRotation, movable.originalParent);
     }
     else
     {
         movable.svMovable.ResetOriginal();
     }
 }
Exemplo n.º 7
0
 public void OnRespawn(ShMovable movable)
 {
     movable.svMovable.thrower = null; // So players aren't charged with Murder crimes after vehicles reset
     if (movable.svMovable.randomSpawn)
     {
         movable.svMovable.Despawn(true);
     }
     else if (movable.IsDead)
     {
         movable.svMovable.Send(SvSendType.Local, Channel.Reliable, ClPacket.Spawn,
                                movable.ID,
                                movable.svMovable.originalPosition,
                                movable.svMovable.originalRotation,
                                movable.svMovable.originalParent.GetSiblingIndex());
         movable.Spawn(movable.svMovable.originalPosition, movable.svMovable.originalRotation, movable.svMovable.originalParent);
     }
     else
     {
         movable.svMovable.ResetOriginal();
     }
 }