示例#1
0
        private static void EventSink_PoisonCured(PoisonCuredEventArgs e)
        {
            int newResistLevel = Math.Min(e.Poison.Level + 1, 4);

            if (m_Table.ContainsKey(e.Mobile))
            {
                var context = m_Table[e.Mobile];

                if (context.ResistanceLevel < newResistLevel)
                {
                    context.ResistanceLevel = newResistLevel;

                    var decayTimer = context.DecayTimer;

                    if (decayTimer != null)
                    {
                        decayTimer.Stop();
                    }

                    decayTimer = new DecayTimer(e.Mobile);
                    decayTimer.Start();

                    context.DecayTimer = decayTimer;
                }
            }
            else
            {
                var decayTimer = new DecayTimer(e.Mobile);
                decayTimer.Start();

                var context = new PoisonResistanceContext(e.Mobile, newResistLevel, decayTimer);
                m_Table[e.Mobile] = context;
            }
        }
示例#2
0
        private static void EventSink_PoisonCured( PoisonCuredEventArgs e )
        {
            int newResistLevel = Math.Min( e.Poison.Level + 1, 4 );

            if ( m_Table.ContainsKey( e.Mobile ) )
            {
                var context = m_Table[e.Mobile];

                if ( context.ResistanceLevel < newResistLevel )
                {
                    context.ResistanceLevel = newResistLevel;

                    var decayTimer = context.DecayTimer;

                    if ( decayTimer != null )
                        decayTimer.Stop();

                    decayTimer = new DecayTimer( e.Mobile );
                    decayTimer.Start();

                    context.DecayTimer = decayTimer;
                }
            }
            else
            {
                var decayTimer = new DecayTimer( e.Mobile );
                decayTimer.Start();

                var context = new PoisonResistanceContext( e.Mobile, newResistLevel, decayTimer );
                m_Table[e.Mobile] = context;
            }
        }
示例#3
0
        public virtual bool Carve(Mobile from, Item item)
        {
            if (m_OpenedBy == null && IsAccessibleTo(from))
            {
                m_OpenedBy = from;

                if (m_Timer == null)
                    m_Timer = new DecayTimer(this);

                if (!m_Timer.Running)
                    m_Timer.Start();

                m_Timer.StartDissolving();

                PlagueBeastBackpack pack = new PlagueBeastBackpack();
                AddItem(pack);
                pack.Initialize();

                foreach (NetState state in GetClientsInRange(12))
                {
                    Mobile m = state.Mobile;

                    if (m != null && m.Player && m != from)
                        PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1071919, from.Name, m.NetState); // * ~1_VAL~ slices through the plague beast's amorphous tissue *
                }

                from.LocalOverheadMessage(MessageType.Regular, 0x21, 1071904); // * You slice through the plague beast's amorphous tissue *
                Timer.DelayCall<Mobile>(TimeSpan.Zero, new TimerStateCallback<Mobile>(pack.Open), from);

                return true;
            }

            return false;
        }
示例#4
0
 public Crystal(CrystalType type)
     : base(7964)
 {
     CrystalType = type;
     DecaysAt    = DateTime.UtcNow + TimeSpan.FromDays(7);
     Timer       = new DecayTimer(this);
     Timer.Start();
 }
示例#5
0
        public override void OnAfterDelete()
        {
            if (_DecayTimer != null)
            {
                _DecayTimer.Stop();
                _DecayTimer = null;
            }

            base.OnAfterDelete();
        }
        public override void OnAfterDelete()
        {
            if (_DecayTimer != null)
            {
                _DecayTimer.Stop();
                _DecayTimer = null;
            }

            base.OnAfterDelete();
        }
示例#7
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            CrystalType = (CrystalType)reader.ReadInt();
            DecaysAt    = reader.ReadDateTime();

            Timer = new DecayTimer(this);
            Timer.Start();
        }
示例#8
0
        public virtual void OnParalyzed(Mobile from)
        {
            FightMode      = FightMode.None;
            Frozen         = true;
            Blessed        = true;
            Combatant      = null;
            Hue            = 0x480;
            from.Combatant = null;
            from.Warmode   = false;

            m_Timer = new DecayTimer(this);
            m_Timer.Start();

            Timer.DelayCall(TimeSpan.Zero, BroadcastMessage);
        }
        public virtual void OnParalyzed(Mobile from)
        {
            this.FightMode = FightMode.None;
            this.Frozen    = true;
            this.Blessed   = true;
            this.Combatant = null;
            this.Hue       = 0x480;
            from.Combatant = null;
            from.Warmode   = false;

            this.m_Timer = new DecayTimer(this);
            this.m_Timer.Start();

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(BroadcastMessage));
        }
示例#10
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            m_OpenedBy = reader.ReadMobile();

            if (reader.ReadBool())
            {
                int count = reader.ReadInt();
                int deadline = reader.ReadInt();

                m_Timer = new DecayTimer(this, count, deadline);
                m_Timer.Start();
            }

            if (FightMode == FightMode.None)
                Frozen = true;
        }
示例#11
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            var version = reader.ReadEncodedInt();

            OpenedBy = reader.ReadEntity <Mobile>();

            if (reader.ReadBool())
            {
                var count    = reader.ReadInt();
                var deadline = reader.ReadInt();

                m_Timer = new DecayTimer(this, count, deadline);
                m_Timer.Start();
            }

            if (FightMode == FightMode.None)
            {
                Frozen = true;
            }
        }
示例#12
0
        public virtual void Carve(Mobile from, Item item)
        {
            if (OpenedBy == null && IsAccessibleTo(from))
            {
                OpenedBy = from;

                if (m_Timer == null)
                {
                    m_Timer = new DecayTimer(this);
                }

                if (!m_Timer.Running)
                {
                    m_Timer.Start();
                }

                m_Timer.StartDissolving();

                var pack = new PlagueBeastBackpack();
                AddItem(pack);
                pack.Initialize();

                foreach (var state in GetClientsInRange(12))
                {
                    var m = state.Mobile;

                    if (m != null && m.Player && m != from)
                    {
                        PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1071919, from.Name, m.NetState);
                    }
                    // * ~1_VAL~ slices through the plague beast's amorphous tissue *
                }

                from.LocalOverheadMessage(MessageType.Regular, 0x21, 1071904);
                // * You slice through the plague beast's amorphous tissue *
                Timer.DelayCall(TimeSpan.Zero, pack.Open, from);
            }
        }
示例#13
0
        public virtual void Carve(Mobile from, Item item)
        {
            if (this.m_OpenedBy == null && this.IsAccessibleTo(from))
            {
                this.m_OpenedBy = from;

                if (this.m_Timer == null)
                {
                    this.m_Timer = new DecayTimer(this);
                }

                if (!this.m_Timer.Running)
                {
                    this.m_Timer.Start();
                }

                this.m_Timer.StartDissolving();

                /*
                 * // PlagueBeastBackpack pack = new PlagueBeastBackpack(); update needed -Fraz
                 *
                 * this.AddItem(pack);
                 *
                 * pack.Initialize();
                 *
                 * foreach (NetState state in this.GetClientsInRange(12))
                 * {
                 *  Mobile m = state.Mobile;
                 *
                 *  if (m != null && m.Player && m != from)
                 *      this.PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1071919, from.Name, m.NetState); // * ~1_VAL~ slices through the plague beast's amorphous tissue *
                 * }
                 *
                 * from.LocalOverheadMessage(MessageType.Regular, 0x21, 1071904); // * You slice through the plague beast's amorphous tissue *
                 * Timer.DelayCall<Mobile>(TimeSpan.Zero, new TimerStateCallback<Mobile>(pack.Open), from);
                 */
            }
        }
示例#14
0
 protected void StartDecayTimer()
 {
     _DecayTimer = new DecayTimer(this);
     _DecayTimer.Start();
 }
示例#15
0
 protected void StartDecayTimer()
 {
     _DecayTimer = new DecayTimer(this);
     _DecayTimer.Start();
 }