public void Kill(EDamageCause deathcause) { if (IsServer()) { Channel.Send(nameof(Network_Kill), ECall.Clients, (int)deathcause); } Kill(deathcause, false); }
private void Kill(EDamageCause deathcause, bool ignoreServer) { if (!ignoreServer && !IsServer()) { return; } Health = 0; OnPlayerDeath(deathcause, null); }
public void PlayerCollision(Vector3 momentum, EDamageCause deathCause = EDamageCause.COLLISION) { if (!IsServer()) { return; } var magnitude = momentum.magnitude; var speed = magnitude / Player.Rigidbody.mass; var damage = (10 / 4) * speed; // 100 damage at 40 m/s DamagePlayer((int)damage, deathCause, World.Instance); }
private void OnPlayerDeath(EDamageCause reason, IEntity killedBy) { PlayerDeathEvent @event = new PlayerDeathEvent(Player); @event.DeathMessage = "<b>" + Player.User.Name + "</b> died (" + reason + ")"; @event.Killer = killedBy; @event.DeathCause = reason; EventManager.Instance.CallEvent(@event); if (@event.DeathMessage != null && IsServer()) { Chat.Instance.SendServerMessage(@event.DeathMessage); } }
public void DamagePlayer(int damage, EDamageCause cause, IEntity damagingEntity = null) { PlayerDamageEvent @event = new PlayerDamageEvent(Player); @event.Damage = damage; @event.DamageCausingEntity = damagingEntity; @event.DamageCause = cause; EventManager.Instance.CallEvent(@event); bool wasDead = IsDead; Health -= @event.Damage; if (IsDead && !wasDead) { OnPlayerDeath(@event.DamageCause, damagingEntity); } }