private static void EventSink_PlayerDeath(PlayerDeathEventArgs args) { Jogador jogador = (Jogador)args.Mobile; MorteModule mm = jogador.getSistemaMorte().getMorteModule(); //mensagem jogador.PublicOverheadMessage(MessageType.Regular, 1, true, jogador.Name + " acaba de desmaiar.", true); if (mm != null) { //marca início de desmaio mm.Desmaiado = true; mm.InicioDesmaio = DateTime.Now; //manda o jogador para a sala da morte jogador.getSistemaMorte().teleportarSalaDaMorte(); //inicia o timer de morte int tempoDesmaiado = (mm.Desmaio * TempoDesmaio) + 1; // para cada ponto de desmaio, fica mais tempo desmaiado mm.TimerMorte = new TimerMorte(jogador, tempoDesmaiado); mm.TimerMorte.Start(); jogador.SendMessage("voce acaba de desmaiar. Deve recobrar a conciencia em {0} minutos", tempoDesmaiado); } else { Console.WriteLine("{0} não possui o modulo de morte.", jogador.Name); } }
public void levantarMorte() { MorteModule mm = jogador.getSistemaMorte().getMorteModule(); jogador.Corpse = null; //volta a vida voltarAVida(); }
private void morreu() { MorteModule mm = jogador.getSistemaMorte().getMorteModule(); mm.Morto = true; mm.Morte++; mm.InicioMorte = DateTime.Now; mm.Desmaio = MaxDesmaio; }
/** * Verifica se o jogador pode ser revivido depois da morte. */ public bool podeReviver() { MorteModule mm = jogador.getSistemaMorte().getMorteModule(); int tempoRecuperarMorte = mm.Morte * tempoRecuperarDesmaio; if (mm.Morto && DateTime.Now > mm.InicioMorte + TimeSpan.FromDays(tempoRecuperarMorte)) { return(true); } else { return(false); } }
/* * Quando o jogador e curado por alquem, quando esta desmaiado */ public void levantarDesmaiado() { MorteModule mm = jogador.getSistemaMorte().getMorteModule(); //para o tempo de morte if (mm.TimerMorte != null) { mm.TimerMorte.Stop(); mm.TimerMorte = null; } //volta a vida voltarAVida(); tratarCorpo(); }
/** * Envia o jogador para o local onde deve ser revivido. */ private void teleportarLocalDeVolta() { //se tiver corpo, vai para o lugar do corpo if (jogador.Corpse != null) { jogador.MoveToWorld(jogador.Corpse.Location, jogador.Corpse.Map); } else { //se nao tiver corpo, vai para o lugar marcado MorteModule mm = jogador.getSistemaMorte().getMorteModule(); CityInfo resultado = getLocalizacao(mm.LocalMaracado); jogador.MoveToWorld(resultado.Location, resultado.Map); } }
private void voltarAVida() { MorteModule mm = jogador.getSistemaMorte().getMorteModule(); mm.Morto = false; mm.InicioMorte = DateTime.MinValue; mm.Desmaiado = false; mm.InicioDesmaio = DateTime.MinValue; teleportarLocalDeVolta(); //reviver o jogador jogador.Resurrect(); ajustarVidaManaStamina(); }
void onTimerMorte() { MorteModule mm = jogador.getSistemaMorte().getMorteModule(); //soma o desmaio mm.Desmaio++; if (mm.Desmaio > MaxDesmaio) { morreu(); jogador.SendMessage("Voce acaba de morrer. Seu ponto de morte é {0}", mm.Morte); } else { voltarAVida(); tratarCorpo(); jogador.SendMessage("Voce acaba de acordar. Seu ponto de desmaio é {0}", mm.Desmaio); } }
private static void EventSink_PlayerLogingOn(LoginEventArgs args) { Jogador jogador = (Jogador)args.Mobile; MorteModule mm = jogador.getSistemaMorte().getMorteModule(); DateTime dataUltimoPontoGanho = mm.InicioDesmaio > mm.DataPontoGanho ? mm.InicioDesmaio : mm.DataPontoGanho; //tenta recuperar ponto de morte if (!mm.Morto && mm.Morte > 0 && mm.Desmaio == 0 && DateTime.Now > dataUltimoPontoGanho + TimeSpan.FromDays(tempoRecuperarDesmaio)) { //calcula quantos pontos de desmaio ele deve ganhar TimeSpan difTempoDesmaiado = DateTime.Now - dataUltimoPontoGanho; double diasDesmaiado = difTempoDesmaiado.TotalDays; int recuperar = (int)(diasDesmaiado / tempoRecuperarDesmaio); //subtrai o desmaio e marca a nova data de desmaio para hoje. mm.DataPontoGanho = DateTime.Now; mm.Morte -= recuperar; jogador.SendMessage("Voce acaba de recuperar {0} pontos de morte.", recuperar); } //se ja passou o tempo de recuperar o tempo de desmaio else if (mm.Desmaio > 0 && DateTime.Now > dataUltimoPontoGanho + TimeSpan.FromDays(tempoRecuperarDesmaio)) { //calcula quantos pontos de desmaio ele deve ganhar TimeSpan difTempoDesmaiado = DateTime.Now - dataUltimoPontoGanho; double diasDesmaiado = difTempoDesmaiado.TotalDays; int recuperar = (int)(diasDesmaiado / tempoRecuperarDesmaio); //subtrai o desmaio e marca a nova data de desmaio para hoje. mm.DataPontoGanho = DateTime.Now; mm.Desmaio -= recuperar; jogador.SendMessage("Voce acaba de recuperar {0} pontos de desmaio.", recuperar); } }
/** * Recupera o modulo de talento */ private MorteModule getMorteModule() { MorteModule tm = (MorteModule)CentralMemory.GetModule(jogador.Serial, typeof(MorteModule)); return(tm); }