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); }
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)); }
public void OnDeath(ShMovable movable) { if (movable.svMovable.respawnable) { movable.StartCoroutine(movable.svMovable.RespawnDelay()); } else { movable.StartCoroutine(movable.DestroyDelay(movable.svMovable.RespawnTime)); } }
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); } }
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); } }
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(); } }
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(); } }