// Max save possible is 1d20+36: +15 (stat) + 6 (120 skill) + 6 (120 skill) + 3 (luck) + 6 (120 chiv)
		public static bool SavingThrow( Mobile m, DDSave ddsave, int dc )
		{
			int save = 0;

			switch( ddsave )
			{
				case DDSave.Fort:
				{
					if ( m.Player )
						save += m.Str / 10;
					else
						save += m.Str / 100;

					save += (int)(m.Skills[SkillName.Tactics].Value * 0.05);
					save += (int)(m.Skills[SkillName.Anatomy].Value * 0.05);
					break;
				}
				case DDSave.Refl:
				{
					if ( m.Player )
						save += m.Dex / 10;
					else
						save += m.Dex / 100;

					save += (int)(m.Skills[SkillName.Stealth].Value * 0.05);
					save += (int)(m.Skills[SkillName.Stealing].Value * 0.05);
					break;
				}
				case DDSave.Will:
				{
					if ( m.Player )
						save += m.Int / 10;
					else
						save += m.Int / 100;

					save += (int)(m.Skills[SkillName.MagicResist].Value * 0.05);
					save += (int)(m.Skills[SkillName.Meditation].Value * 0.05);
					break;
				}
			}

			if ( m.Luck > 1500 )
				save += 3;
			else
				save += m.Luck / 500;

			save += (int)(m.Skills[SkillName.Chivalry].Value * 0.05);
			save += Utility.Random( 19 ) + 1;

			if ( !m.Player )
				save += (m.Fame / 2) / 1000;

			return save >= dc;
		}
Example #2
0
        // Max save possible is 1d20+36: +15 (stat) + 6 (120 skill) + 6 (120 skill) + 3 (luck) + 6 (120 chiv)
        public static bool SavingThrow(Mobile m, DDSave ddsave, int dc)
        {
            int save = 0;

            switch (ddsave)
            {
            case DDSave.Fort:
            {
                if (m.Player)
                {
                    save += m.Str / 10;
                }
                else
                {
                    save += m.Str / 100;
                }

                save += (int)(m.Skills[SkillName.Tactics].Value * 0.05);
                save += (int)(m.Skills[SkillName.Anatomy].Value * 0.05);
                break;
            }

            case DDSave.Refl:
            {
                if (m.Player)
                {
                    save += m.Dex / 10;
                }
                else
                {
                    save += m.Dex / 100;
                }

                save += (int)(m.Skills[SkillName.Stealth].Value * 0.05);
                save += (int)(m.Skills[SkillName.Stealing].Value * 0.05);
                break;
            }

            case DDSave.Will:
            {
                if (m.Player)
                {
                    save += m.Int / 10;
                }
                else
                {
                    save += m.Int / 100;
                }

                save += (int)(m.Skills[SkillName.MagicResist].Value * 0.05);
                save += (int)(m.Skills[SkillName.Meditation].Value * 0.05);
                break;
            }
            }

            if (m.Luck > 1500)
            {
                save += 3;
            }
            else
            {
                save += m.Luck / 500;
            }

            save += (int)(m.Skills[SkillName.Chivalry].Value * 0.05);
            save += Utility.Random(19) + 1;

            if (!m.Player)
            {
                save += (m.Fame / 2) / 1000;
            }

            return(save >= dc);
        }