private static void Resurrect_OnTick(object state) { object[] states = (object[])state; PlayerMobile owner = (PlayerMobile)states[0]; SoulOrb arp = (SoulOrb)states[1]; if (owner != null && !owner.Deleted && arp != null && !arp.Deleted) { if (owner.Alive) { return; } if (arp.Name == "blood of a vampire") { owner.SendMessage("The blood pours out of the bottle, restoring your life."); } else if (arp.Name == "cloning crystal") { owner.SendMessage("The crystal forms a clone of your body, restoring your life."); } else { owner.SendMessage("The orb glows, releasing your soul."); } owner.Resurrect(); Server.Misc.Death.Penalty(owner, false); arp.Delete(); } }
private static void Resurrect_OnTick(object state) { object[] states = (object[])state; PlayerMobile owner = (PlayerMobile)states[0]; SoulOrb arp = (SoulOrb)states[1]; if (owner != null && !owner.Deleted && arp != null && !arp.Deleted) { if (owner.Alive) { return; } if (arp.Name == "blood of a vampire") { owner.SendMessage("The blood pours out of the bottle, restoring your life."); } else { owner.SendMessage("The orb glows, releasing your soul."); } owner.Resurrect(); arp.Delete(); } }
public static void OnSummoned(Mobile from, SoulOrb orb) { if (m_ResList == null) { m_ResList = new Dictionary <Mobile, SoulOrb>(); } if (from != null && orb != null && !m_ResList.ContainsValue(orb)) { m_ResList.Add(from, orb); } }
private static void EventSink_Death(PlayerDeathEventArgs e) { PlayerMobile owner = e.Mobile as PlayerMobile; if (owner != null && !owner.Deleted) { if (owner.Alive) { return; } if (m_ResList != null && m_ResList.ContainsKey(owner)) { SoulOrb arp = m_ResList[owner]; if (arp == null || arp.Deleted) { m_ResList.Remove(owner); return; } arp.m_Timer = Timer.DelayCall(m_Delay, new TimerStateCallback(Resurrect_OnTick), new object[] { owner, arp }); m_ResList.Remove(owner); } } }