private void AddInjury(Injury inj) { InjuryTimer addInjury = new InjuryTimer(inj, this); m_CurrentInjuries.Add(addInjury); addInjury.Start(); m_LastInjury = DateTime.Now; if (m_Player is PlayerMobile && ((PlayerMobile)m_Player).Feats.GetFeatLevel(FeatList.Justice) > 0) { if (((PlayerMobile)m_Player).LastDeath + TimeSpan.FromSeconds(90) > DateTime.Now) { if (m_Player.LastKiller != null && !m_Player.LastKiller.Deleted && m_Player.LastKiller.Alive) { HealthAttachment.GetHA(m_Player.LastKiller).TryInjure(m_Player); } } } switch (inj) { case Injury.Bloodied: m_Player.SendMessage(37, "You have been bloodied!"); break; case Injury.BrokenBack: m_Player.SendMessage(37, "Your back is broken!"); break; case Injury.BrokenJaw: m_Player.SendMessage(37, "Your jaw is broken!"); break; case Injury.BrokenLeftArm: m_Player.SendMessage(37, "Your left arm is broken!"); break; case Injury.BrokenLeftLeg: m_Player.SendMessage(37, "Your left leg is broken!"); break; case Injury.BrokenNeck: m_Player.SendMessage(37, "Your neck is broken!"); break; case Injury.BrokenRightArm: m_Player.SendMessage(37, "Your right arm is broken!"); break; case Injury.BrokenRightLeg: m_Player.SendMessage(37, "Your right leg is broken!"); break; case Injury.Bruised: m_Player.SendMessage(37, "You are bruised!"); break; case Injury.DeepCut: m_Player.SendMessage(37, "You have been deeply cut!"); break; case Injury.Exhausted: m_Player.SendMessage(37, "You are exhausted!"); break; case Injury.FracturedLeftArm: m_Player.SendMessage(37, "Your left arm is fractured!"); break; case Injury.FracturedLeftLeg: m_Player.SendMessage(37, "Your left leg is fractured!"); break; case Injury.FracturedRibs: m_Player.SendMessage(37, "Your ribs are fractured!"); break; case Injury.FracturedRightArm: m_Player.SendMessage(37, "Your right arm is fractured!"); break; case Injury.FracturedRightLeg: m_Player.SendMessage(37, "Your right leg is fractured!"); break; case Injury.FracturedSkull: m_Player.SendMessage(37, "Your skull is fractured!"); break; case Injury.InternalBleeding: m_Player.SendMessage(37, "You're bleeding internally!"); break; case Injury.LaceratedTorso: m_Player.SendMessage(37, "Your torso is lacerated!"); break; case Injury.MajorConcussion: m_Player.SendMessage(37, "You are majorly concussed!"); break; case Injury.MassiveBleeding: m_Player.SendMessage(37, "You are experiencing massive bleeding!"); break; case Injury.MinorConcussion: m_Player.SendMessage(37, "You have a minor concussion!"); break; case Injury.MinorCut: m_Player.SendMessage(37, "You have a few minor cuts!"); break; case Injury.BrokenSkull: m_Player.SendMessage(37, "Your skull is broken!"); break; case Injury.Winded: m_Player.SendMessage(37, "You are winded!"); break; default: break; } }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is Mobile) { Mobile m = targeted as Mobile; if (!HealthAttachment.GetHA(m).HasInjury(m_Inj)) { InjuryTimer timer = new InjuryTimer(m_Inj, HealthAttachment.GetHA(m)); timer.Start(); HealthAttachment.GetHA(m).CurrentInjuries.Add(timer); from.SendMessage("You have successfully added " + m_Inj.ToString() + " to " + m.Name + "'s injuries."); } } base.OnTarget(from, targeted); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: { #region Version 2 int count = reader.ReadInt(); for (int i = 0; i < count; i++) { Disease dis = (Disease)reader.ReadInt(); DateTime last = reader.ReadDateTime(); m_LastCaught.Add(dis, last); } int dcount = reader.ReadInt(); for (int i = 0; i < dcount; i++) { Disease dis = (Disease)reader.ReadInt(); int immu = reader.ReadInt(); m_DiseaseImmunities.Add(dis, immu); } #endregion goto case 1; } case 1: { #region Version 1 m_Disfigurement = reader.ReadInt(); m_LastAppearanceRecovery = reader.ReadDateTime(); int count = reader.ReadInt(); if (m_CurrentDiseases == null) m_CurrentDiseases = new List<DiseaseTimer>(); for (int i = 0; i < count; i++) { Disease newDisease = (Disease)reader.ReadInt(); Mobile newInfected = reader.ReadMobile(); int newRecovCount = reader.ReadInt(); TimeSpan newIncuLeft = reader.ReadTimeSpan(); DiseaseTimer newTimer = new DiseaseTimer(newInfected, newDisease, newIncuLeft); newTimer.RecoveryCount = newRecovCount; newTimer.Start(); m_CurrentDiseases.Add(newTimer); } #endregion goto case 0; } case 0: { #region Version 0 m_Player = (Mobile)reader.ReadMobile(); m_LastInjury = reader.ReadDateTime(); int count = reader.ReadInt(); if(m_CurrentInjuries == null) m_CurrentInjuries = new List<InjuryTimer>(); for (int i = 0; i < count; i++) { Injury timerInjury = (Injury)reader.ReadInt(); DateTime timerStartTime = reader.ReadDateTime(); InjuryTimer newInjuryTimer = new InjuryTimer(timerInjury, this); newInjuryTimer.StartTime = timerStartTime; m_CurrentInjuries.Add(newInjuryTimer); newInjuryTimer.Start(); } #endregion break; } } }