/// <summary> /// Handles the death of the Client. /// </summary> /// <param name="hitBy">Who killed the current Client.</param> public override void HandleDeath(EntityBase killedBy = null, string deathBy = "") { //Event ClientDeathEventArgs clientDeath = new ClientDeathEventArgs(Client, deathBy, killedBy); Client.Owner.Server.PluginManager.CallEvent(Event.PlayerDied, clientDeath); if (clientDeath.EventCanceled) { return; } killedBy = clientDeath.KilledBy; //End Event // TODO: Add config option for none/global/local death messages // ...Or maybe make messages a plugin? string deathMessage = string.Empty; if (killedBy == null && deathBy == "") // Generic message { deathBy = "mysteriously!"; } else if (killedBy is Player) { var p = (Player)killedBy; deathBy = "by " + p.DisplayName + " using" + Server.Items.ItemName(Inventory.Slots[Inventory.ActiveSlot].Type); } else if (killedBy is Mob) { var m = (Mob) killedBy; deathBy = "by " + m.Type; } deathMessage = DisplayName + " was killed " + deathBy; SendUpdateOnDeath(deathMessage); DoDeath(killedBy); }
public virtual void OnPlayerDeath(ClientDeathEventArgs e) { }
private void OnPlayerDeath(ClientDeathEventArgs e) { foreach (EventListener el in Plugins) { PlayerListener pl = (PlayerListener)el.Listener; if (el.Event == Event.PLAYER_DIED) pl.OnPlayerDeath(e); } }