示例#1
0
        public void Target( Mobile m )
        {
            if ( !Caster.CanSee( m ) )
            {
                Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
            }
            else if ( CheckHSequence( m ) )
            {
                SpellHelper.Turn( Caster, m );

                SpellHelper.CheckReflect( (int)this.Circle, Caster, ref m );

                SpellHelper.AddStatCurse( Caster, m, StatType.Str ); SpellHelper.DisableSkillCheck = true;
                SpellHelper.AddStatCurse( Caster, m, StatType.Dex );
                SpellHelper.AddStatCurse( Caster, m, StatType.Int ); SpellHelper.DisableSkillCheck = false;

                Timer t = (Timer)UnderEffect[m];

                if ( Caster.Player && m.Player && t == null )
                {
                    TimeSpan duration = SpellHelper.GetDuration( Caster, m );
                    UnderEffect[m] = t = Timer.DelayCall( duration, new TimerStateCallback( RemoveEffect ), m );
                    m.UpdateResistances();
                }

                m.Paralyzed = false;

                m.FixedParticles( 0x374A, 10, 15, 5028, EffectLayer.Waist );
                m.PlaySound( 0x1EA );
            }

            FinishSequence();
        }
示例#2
0
文件: Curse.cs 项目: Crome696/ServUO
		public static void DoCurse(Mobile caster, Mobile m)
		{
			SpellHelper.AddStatCurse(caster, m, StatType.Str);
			SpellHelper.DisableSkillCheck = true;
			SpellHelper.AddStatCurse(caster, m, StatType.Dex);
			SpellHelper.AddStatCurse(caster, m, StatType.Int);
			SpellHelper.DisableSkillCheck = false;

			int percentage = (int)(SpellHelper.GetOffsetScalar(caster, m, true) * 100);
			TimeSpan length = SpellHelper.GetDuration(caster, m);
			string args = String.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}", percentage, percentage, percentage, 10, 10, 10, 10);
			BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Curse, 1075835, 1075836, length, m, args.ToString()));

			Timer t = (Timer)m_UnderEffect[m];

			if (caster.Player && m.Player /*&& Caster != m */ && t == null)    //On OSI you CAN curse yourself and get this effect.
			{
				TimeSpan duration = SpellHelper.GetDuration(caster, m);
				m_UnderEffect[m] = t = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), m);
				m.UpdateResistances();
			}

			if (m.Spell != null)
				m.Spell.OnCasterHurt();

			m.Paralyzed = false;

			m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);
			m.PlaySound(0x1E1);
		}
示例#3
0
        public void Target(Mobile m)
        {
            if (!this.Caster.CanSee(m))
            {
                this.Caster.SendLocalizedMessage(500237); // Target can not be seen.
            }
            else if (this.CheckHSequence(m))
            {
                SpellHelper.Turn(this.Caster, m);

                SpellHelper.CheckReflect((int)this.Circle, this.Caster, ref m);

                SpellHelper.AddStatCurse(this.Caster, m, StatType.Str);
                SpellHelper.DisableSkillCheck = true;
                SpellHelper.AddStatCurse(this.Caster, m, StatType.Dex);
                SpellHelper.AddStatCurse(this.Caster, m, StatType.Int);
                SpellHelper.DisableSkillCheck = false;

                Timer t = (Timer)m_UnderEffect[m];

                if (this.Caster.Player && m.Player /*&& Caster != m */ && t == null)	//On OSI you CAN curse yourself and get this effect.
                {
                    TimeSpan duration = SpellHelper.GetDuration(this.Caster, m);
                    m_UnderEffect[m] = t = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), m);
                    m.UpdateResistances();
                }

                if (m.Spell != null)
                    m.Spell.OnCasterHurt();

                m.Paralyzed = false;

                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);
                m.PlaySound(0x1E1);

                int percentage = (int)(SpellHelper.GetOffsetScalar(this.Caster, m, true) * 100);
                TimeSpan length = SpellHelper.GetDuration(this.Caster, m);

                string args = String.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}", percentage, percentage, percentage, 10, 10, 10, 10);

                BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Curse, 1075835, 1075836, length, m, args.ToString()));

                this.HarmfulSpell(m);
            }

            this.FinishSequence();
        }
示例#4
0
文件: Curse.cs 项目: Godkong/Origins
        public void Target( Mobile m )
        {
            if ( !Caster.CanSee( m ) )
            {
                Caster.SendAsciiMessage( "Target can not be seen." ); // Target can not be seen.
            }
            else if ( CheckHSequence( m ) )
            {
                SpellHelper.Turn( Caster, m );

                SpellHelper.CheckReflect( (int)this.Circle, Caster, ref m );

                SpellHelper.AddStatCurse(Caster, m, StatType.Str, (int)((Caster.Skills[SkillName.Magery].Value / 10) + 1), TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1)); //SpellHelper.DisableSkillCheck = true;
                SpellHelper.AddStatCurse(Caster, m, StatType.Dex, (int)((Caster.Skills[SkillName.Magery].Value / 10) + 1), TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1));
                SpellHelper.AddStatCurse(Caster, m, StatType.Int, (int)((Caster.Skills[SkillName.Magery].Value / 10) + 1), TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1)); //SpellHelper.DisableSkillCheck = false;

                Timer t = (Timer)m_UnderEffect[m];

                if ( Caster.Player && m.Player /*&& Caster != m */ && t == null )	//On OSI you CAN curse yourself and get this effect.
                {
                    TimeSpan duration = TimeSpan.FromSeconds((6 * Caster.Skills[SkillName.Magery].Value / 5) + 1);//SpellHelper.GetDuration( Caster, m );
                    m_UnderEffect[m] = t = Timer.DelayCall( duration, new TimerStateCallback( RemoveEffect ), m );
                    m.UpdateResistances();
                }

                if ( m.Spell != null )
                    m.Spell.OnCasterHurt();

                m.Paralyzed = false;

                m.FixedParticles( 0x374A, 10, 15, 5028, EffectLayer.Waist );
                m.PlaySound( 0x1EA );
            }

            FinishSequence();
        }
示例#5
0
        public void DoCurse( Mobile m )
        {
            SpellHelper.Turn( Caster, m );

            SpellHelper.CheckReflect( (int) this.Circle, Caster, ref m );

            SpellHelper.AddStatCurse( Caster, m, StatType.Str ); SpellHelper.DisableSkillCheck = true;
            SpellHelper.AddStatCurse( Caster, m, StatType.Dex );
            SpellHelper.AddStatCurse( Caster, m, StatType.Int ); SpellHelper.DisableSkillCheck = false;

            Timer t = (Timer) m_UnderEffect[m];

            if ( t == null )
            {
                TimeSpan duration = ComputeDuration( Caster, m );

                int percentage = (int) ( SpellHelper.GetOffsetScalar( Caster, m, true ) * 100 );
                string buffFormat = String.Format( "{0}\t{0}\t{0}\t{1}\t{1}\t{1}\t{1}", percentage, 10 );

                BuffInfo.AddBuff( m, new BuffInfo( BuffIcon.Curse, 1075835, duration, m, buffFormat ) );

                m_UnderEffect[m] = t = Timer.DelayCall( duration, new TimerStateCallback( RemoveEffect ), m );
                m.UpdateResistances();
            }

            if ( m.Spell != null )
                m.Spell.OnCasterHurt();

            m.Paralyzed = false;

            m.FixedParticles( 0x374A, 10, 15, 5028, EffectLayer.Waist );
            m.PlaySound( 0x1E1 );
        }
示例#6
0
		public void Target( Mobile m )
		{
			if ( !Caster.CanSee( m ) )
			{
				Caster.SendLocalizedMessage( 500237 ); // Target can not be seen.
			}
			else if ( CheckHSequence( m ) )
			{
                SpellHelper.CheckReflect((int)Circle, Caster, ref m);

                if (m.Spell != null)
                    m.Spell.OnCasterHurt();

                if (BlessSpell.UnderEffect(m))
                {
                    bool message = true;

                    if (m.Str > m.RawStr)
                    {
                        m.RemoveStatMod(String.Format("[Magic] {0} Offset", StatType.Str));
                        message = false;
                    }
                    if (m.Dex > m.RawDex)
                    {
                        m.RemoveStatMod(String.Format("[Magic] {0} Offset", StatType.Dex));
                        message = false;
                    }
                    if (m.Int > m.RawInt)
                    {
                        m.RemoveStatMod(String.Format("[Magic] {0} Offset", StatType.Int));
                        message = false;
                    }

                    if (message)
                        m.SendAsciiMessage("You are under the effect of a bless spell and cannot get any stat penalties");
                }
                else
                {
                    SpellHelper.AddStatCurse(Caster, m, StatType.Str);
                    SpellHelper.DisableSkillCheck = true;
                    SpellHelper.AddStatCurse(Caster, m, StatType.Dex);
                    SpellHelper.AddStatCurse(Caster, m, StatType.Int);
                    SpellHelper.DisableSkillCheck = false;
                }

			    TimeSpan duration = SpellHelper.GetDuration(Caster, m);
                m_UnderEffect[m] = Timer.DelayCall(duration, new TimerStateCallback(RemoveEffect), m);
                m.UpdateResistances();

				//m.Paralyzed = false;
                m.FixedParticles(0x374A, 10, 15, 5028, EffectLayer.Waist);
				m.PlaySound( Sound );

                int percentage = (int)(SpellHelper.GetOffsetScalar(Caster, m, true) * 100);
                TimeSpan length = SpellHelper.GetDuration(Caster, m);

                string args = String.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}", percentage, percentage, percentage, 10, 10, 10, 10);

                BuffInfo.AddBuff(m, new BuffInfo(BuffIcon.Curse, 1075835, 1075836, length, m, args));

                HarmfulSpell(m);
			}

			FinishSequence();
		}
示例#7
0
		public override void OnHit( Mobile caster, Mobile target )
		{
			bool success;
			success = SpellHelper.AddStatCurse( caster, target, StatType.Str ); SpellHelper.DisableSkillCheck = true;
			success = SpellHelper.AddStatCurse( caster, target, StatType.Dex ) || success;
			success = SpellHelper.AddStatCurse( caster, target, StatType.Int ) || success; SpellHelper.DisableSkillCheck = false;

			if ( success )
			{
				target.FixedParticles( 0x374A, 10, 15, 5028, EffectLayer.Waist );
				target.PlaySound( 0x1EA );
			}
			else
			{
				//Mobile temp = Caster; // to make magic weapons fizzle their master
				//Caster = caster;
				//DoHurtFizzle();
				//Caster = temp;

				target.FixedParticles( 0x374A, 10, 15, 5028, EffectLayer.Waist );
				target.PlaySound( 0x1EA );
			}


			Timer t = (Timer)m_UnderEffect[target];

			if ( Caster.Player && target.Player && caster != target && t == null )
			{
				TimeSpan duration = SpellHelper.GetDuration( caster, target );
				m_UnderEffect[target] = t = Timer.DelayCall( duration, new TimerStateCallback( RemoveEffect ), target );
				target.UpdateResistances();
			}


			if ( target.Spell != null )
				target.Spell.OnCasterHurt();

			target.Paralyzed = false;
		}
示例#8
0
        public static void RemoveEffect(Mobile m)
        {
            m_UnderEffect.Remove(m);

            m.UpdateResistances();
        }