Beispiel #1
0
    protected virtual float CalculateFinalValue()
    {
        float finalValue    = BaseValue;
        float sumPercentAdd = 0;

        for (int i = 0; i < statMods.Count; i++)
        {
            StatMod mod = statMods[i];

            if (mod.Type == StatModType.Flat)
            {
                finalValue += statMods[i].Value;
            }

            else if (mod.Type == StatModType.PercentAdd)
            {
                sumPercentAdd += mod.Value;
                if (i + 1 >= statMods.Count || statMods[i + 1].Type != StatModType.PercentAdd)
                {
                    finalValue   *= 1 + sumPercentAdd;
                    sumPercentAdd = 0;
                }
            }

            else if (mod.Type == StatModType.PercentMult)
            {
                finalValue *= 1 + mod.Value;
            }
        }

        return((float)Math.Round(finalValue, 4));
    }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Necromancy, true, 20 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.SpiritSpeak, true, 20 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.MagicResist, true, 20 ); 
			m_StatMod0 = new StatMod( StatType.Dex, "DruidCloak", 15, TimeSpan.Zero ); 
		}
        public override void OnCast()
        {
            if (CheckSequence())
            {
                ArrayList targets = new ArrayList();

                foreach (Mobile m in Caster.GetMobilesInRange(3))
                {
                    if (Caster.CanBeBeneficial(m, false, true) && !(m is Golem))
                    {
                        targets.Add(m);
                    }
                }


                for (int i = 0; i < targets.Count; ++i)
                {
                    Mobile m = (Mobile)targets[i];

                    int    amount = (int)(Caster.Skills[SkillName.Musicianship].Base * 0.1);
                    string intt   = "int";

                    double duration = (Caster.Skills[SkillName.Musicianship].Base * 0.15);

                    StatMod mod = new StatMod(StatType.Int, intt, +amount, TimeSpan.FromSeconds(duration));

                    m.AddStatMod(mod);

                    m.FixedParticles(0x375A, 10, 15, 5017, 0x1F8, 3, EffectLayer.Waist);
                }
            }

            FinishSequence();
        }
Beispiel #4
0
        public static bool AddStatCurse(Mobile caster, Mobile target, StatType type, int curse, TimeSpan duration)
        {
            int    offset = -curse;
            string name   = String.Format("[Magic] {0} Offset", type);

            StatMod mod = target.GetStatMod(name);

            if (mod != null && mod.Offset > 0)
            {
                if (target.Spell is MagerySpell && ((MagerySpell)target.Spell).State == SpellState.Casting)
                {
                    ((MagerySpell)target.Spell).OnCasterHurt(1);
                }
                target.AddStatMod(new StatMod(type, name, mod.Offset + offset, duration));
                return(true);
            }
            else if (mod == null || mod.Offset > offset)
            {
                if (target.Spell is MagerySpell && ((MagerySpell)target.Spell).State == SpellState.Casting)
                {
                    ((MagerySpell)target.Spell).OnCasterHurt(1);
                }
                target.AddStatMod(new StatMod(type, name, offset, duration));
                return(true);
            }

            return(false);
        }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Peacemaking, true, 15 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.Swords, true, 15 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Healing, true, 15 ); 
			m_StatMod0 = new StatMod( StatType.Str, "CloakofSirKen", 15, TimeSpan.Zero ); 
		}
Beispiel #6
0
    /// <summary>
    /// Gets the total for a stat including its base value and all applicable modifiers
    /// </summary>
    /// <param name="stat">What stat to grab</param>
    /// <returns></returns>
    public int GetEffectiveStat(Stats stat)
    {
        int value = stats[stat];

        foreach (Equippable i in equipment)
        {
            if (i != null)
            {
                EquippableBase temp = ((EquippableBase)Registry.ItemRegistry[i.Name]);
                if (temp.stats.ContainsKey(stat))
                {
                    value += temp.stats[stat];
                }
            }
        }

        if (tempStats != null)
        {
            StatMod s = tempStats.GetStatMod(stat);

            value += s.flatChange;
            value  = Mathf.RoundToInt(value * s.multiplier);
        }

        if (stat == Stats.MaxMove && value < 0)
        {
            value = 0;
        }

        return(value);
    }
Beispiel #7
0
        public override void Drink(Mobile from)
        {
            TeiravonMobile m_Player = (TeiravonMobile)from;

            if (m_Player.CanDrink(PEffect))
            {
                StatMod OrcGrowthSTRMod = new StatMod(StatType.Str, (int)m_Player.Serial + " Growth Str", 50, TimeSpan.FromMinutes(10));
                m_Player.AddStatMod(OrcGrowthSTRMod);

                if (m_Player.IsOrc())
                {
                    m_Player.OBody = 0xBD;                     // orc brute
                }
                else if (m_Player.IsDwarf())
                {
                    m_Player.OBody = 0x4C;                     // Titan
                }
                else if (m_Player.IsDrow())
                {
                    m_Player.OBody = 0xAD;                     //Mephitis
                }
                else if (m_Player.IsElf())
                {
                    m_Player.OBody = 0x12D;                     // tree fellow
                }
                else if (m_Player.IsHuman())
                {
                    m_Player.OBody = 0x137;                     // shadow knight
                }
            }

            base.Drink(from);
        }
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Necromancy, true, 20);
     m_SkillMod1 = new DefaultSkillMod(SkillName.SpiritSpeak, true, 20);
     m_SkillMod2 = new DefaultSkillMod(SkillName.MagicResist, true, 20);
     m_StatMod0  = new StatMod(StatType.Dex, "DruidCloak", 15, TimeSpan.Zero);
 }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Magery, true, 20 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.EvalInt, true, 20 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Meditation, true, 20 ); 
			m_StatMod0 = new StatMod( StatType.Int, "MagiCloak", 20, TimeSpan.Zero ); 
		}
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Peacemaking, true, 15);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Swords, true, 15);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Healing, true, 15);
     m_StatMod0  = new StatMod(StatType.Str, "CloakofSirKen", 15, TimeSpan.Zero);
 }
        public void Target(Mobile m)
        {
            if (!(m is BaseCreature || m is PlayerMobile))
            {
                Caster.SendLocalizedMessage(1060508); // You can't curse that.
            }
            else if (CheckHSequence(m))
            {
                SpellHelper.Turn(Caster, m);

                Effects.SendTargetParticles(m, 14170, 10, 15, 5013, 0, 0, EffectLayer.CenterFeet); //ID, speed, dura, effect, hue, render, layer
                Effects.SendTargetParticles(m, 14201, 10, 15, 5013, 0, 0, EffectLayer.CenterFeet); //ID, speed, dura, effect, hue, render, layer
                m.PlaySound(514);

                StatMod[] mods = (StatMod[])m_Table[m];

                if (mods == null)
                {
                    mods = new StatMod[]
                    {
                        new StatMod(StatType.Str, "Protection Celeste", (int)(Caster.Skills[CastSkill].Value / 5), TimeSpan.FromSeconds((int)(Caster.Skills[CastSkill].Value / 2))),
                        new StatMod(StatType.Dex, "Protection Celeste", (int)(Caster.Skills[CastSkill].Value / 5), TimeSpan.FromSeconds((int)(Caster.Skills[CastSkill].Value / 2)))
                    };

                    for (int i = 0; i < mods.Length; ++i)
                    {
                        m.AddStatMod(mods[i]);
                    }

                    m_Table[m] = mods;
                }
            }

            FinishSequence();
        }
Beispiel #12
0
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.AnimalLore, true, 15 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.Herding, true, 15 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Tracking, true, 15 ); 
			m_StatMod0 = new StatMod( StatType.Int, "Arch Druid Cloak", 15, TimeSpan.Zero ); 
		}
Beispiel #13
0
 public override void Drink(Mobile m)
 {
     if (m.InRange(this.GetWorldLocation(), 1))
     {
         string  modName = m.Serial.ToString();
         StatMod smod    = m.GetStatMod("Str");
         StatMod dmod    = m.GetStatMod("Dex");
         StatMod imod    = m.GetStatMod("Int");
         if (smod != null && imod != null && dmod != null)
         {
             m.SendMessage("You appear to be under a similar effect!");
         }
         else if (smod == null && imod == null && dmod == null)
         {
             m.AddStatMod(new StatMod(StatType.Int, modName + "Int", 10, TimeSpan.FromMinutes(5)));
             m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", 10, TimeSpan.FromMinutes(5)));
             m.AddStatMod(new StatMod(StatType.Str, modName + "Str", 10, TimeSpan.FromMinutes(5)));
             m.Hits = m.HitsMax;
             m.Mana = m.ManaMax;
             m.Stam = m.StamMax;
             BasePotion.PlayDrinkEffect(m);
             this.Consume();
             m.SendMessage("You feel much more superior!");
         }
     }
     else
     {
         m.LocalOverheadMessage(MessageType.Regular, 906, 1019045);                   // I can't reach that.
     }
 }
Beispiel #14
0
        public Spell CheckBless()
        {
            StatMod mod = this.m_Mobile.GetStatMod("[Magic] Str Buff");

            if (mod != null)
            {
                return(null);
            }

            if (this.m_Mobile.Skills[SkillName.Magery].Value >= 40.0)
            {
                return(new BlessSpell(this.m_Mobile, null));
            }

            mod = this.m_Mobile.GetStatMod("[Magic] Int Buff");

            if (mod == null)
            {
                return(new CunningSpell(this.m_Mobile, null));
            }

            mod = this.m_Mobile.GetStatMod("[Magic] Dex Buff");

            if (mod == null)
            {
                return(new AgilitySpell(this.m_Mobile, null));
            }

            return(new StrengthSpell(this.m_Mobile, null));
        }
Beispiel #15
0
        private void CalculateAdjustmentForStatMod(
            StatMod statMod,
            ref float baseAdd,
            ref float bonusAdd,
            ref float percentAdd,
            ref float multipliers)
        {
            switch (statMod.mod)
            {
            case ModType.BaseAdd:
                baseAdd += statMod.val;
                break;

            case ModType.PercentAdd:
                percentAdd += statMod.val;
                break;

            case ModType.Multiplier:
                multipliers *= statMod.val;
                break;

            case ModType.BonusAdd:
                bonusAdd += statMod.val;
                break;
            }
        }
Beispiel #16
0
        public static bool AddStatCurse(Mobile caster, Mobile target, StatType type, int curse, TimeSpan duration)
        {
            int    offset = -curse;
            string name   = "Malédiction";

            StatMod mod = target.GetStatMod(name);

            if (mod != null && (mod.Type == type && mod.Offset < offset || mod.Type != type))
            {
                target.RemoveStatMod(name);
                target.AddStatMod(new StatMod(type, name, offset, duration));
                target.SendMessage("Vous sentez une nouvelle force vous tourmenter, supplantant la précédente.");
                return(true);
            }
            else if (mod == null)
            {
                mod = target.GetStatMod("Bénédiction");
                if (mod != null && mod.Type == type)
                {
                    target.RemoveStatMod(name);
                    target.SendMessage("Vous sentez une force vous tourmenter, écrasant les forces bénéfiques en vous.");
                    return(true);
                }
                else if (mod == null)
                {
                    target.SendMessage("Vous sentez une force vous tourmenter.");
                    target.AddStatMod(new StatMod(type, name, offset, duration));
                    return(true);
                }
            }

            target.SendMessage("Étant sous l'effet d'un pouvoir plus grand, celui-ci demeure sans effet.");
            return(false);
        }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Swords, true, 20 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.Parry, true, 20 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.MagicResist, true, 20 ); 
			m_StatMod0 = new StatMod( StatType.Dex, "DruidCloak", 15, TimeSpan.Zero ); 
		}
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.AnimalLore, true, 10 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.AnimalTaming, true, 10 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Peacemaking, true, 10 ); 
			m_StatMod0 = new StatMod( StatType.Dex, "DruidCloak", 15, TimeSpan.Zero ); 
		}
Beispiel #19
0
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Hiding, true, 10);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Stealth, true, 10);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Healing, true, -10);
     m_StatMod0  = new StatMod(StatType.Dex, "ElvenCloak", 5, TimeSpan.Zero);
 }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Hiding, true, 10 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.Stealth, true, 10 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Healing, true, -10 ); 
			m_StatMod0 = new StatMod( StatType.Dex, "ElvenCloak", 5, TimeSpan.Zero ); 
		}
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Swords, true, 20);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Parry, true, 20);
     m_SkillMod2 = new DefaultSkillMod(SkillName.MagicResist, true, 20);
     m_StatMod0  = new StatMod(StatType.Dex, "DruidCloak", 15, TimeSpan.Zero);
 }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.SpiritSpeak, true, 5 );
			m_SkillMod1 = new DefaultSkillMod( SkillName.EvalInt, true, 5 );
			m_SkillMod2 = new DefaultSkillMod( SkillName.Necromancy, true, 5 );
			m_StatMod0 = new StatMod( StatType.Int, "MagiCloak", 5, TimeSpan.Zero );
		}
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.SpiritSpeak, true, 5);
     m_SkillMod1 = new DefaultSkillMod(SkillName.EvalInt, true, 5);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Necromancy, true, 5);
     m_StatMod0  = new StatMod(StatType.Int, "MagiCloak", 5, TimeSpan.Zero);
 }
Beispiel #24
0
 public void AdjustStatMod(string stat, double points)
 {
     if (!StatMod.TryAdd(stat, points))
     {
         StatMod[stat] += points;
     }
 }
Beispiel #25
0
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.AnimalLore, true, 5);
     m_SkillMod1 = new DefaultSkillMod(SkillName.AnimalTaming, true, 5);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Peacemaking, true, 5);
     m_StatMod0  = new StatMod(StatType.Dex, "DruidCloak", 5, TimeSpan.Zero);
 }
Beispiel #26
0
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.AnimalLore, true, 15);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Herding, true, 15);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Tracking, true, 15);
     m_StatMod0  = new StatMod(StatType.Int, "Arch Druid Cloak", 15, TimeSpan.Zero);
 }
Beispiel #27
0
        public Spell CheckBless()
        {
            StatMod mod = m_Mobile.GetStatMod("[Magic] Str Offset");

            if (mod != null && mod.Offset > 0)
            {
                return(null);
            }

            if (m_Mobile.Skills[SkillName.Magery].Value >= 40.0)
            {
                return(new BlessSpell(m_Mobile, null));
            }

            mod = m_Mobile.GetStatMod("[Magic] Int Offset");

            if (mod == null || mod.Offset < 0)
            {
                return(new CunningSpell(m_Mobile, null));
            }

            mod = m_Mobile.GetStatMod("[Magic] Dex Offset");

            if (mod == null || mod.Offset < 0)
            {
                return(new AgilitySpell(m_Mobile, null));
            }

            return(new StrengthSpell(m_Mobile, null));
        }
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Magery, true, 20);
     m_SkillMod1 = new DefaultSkillMod(SkillName.EvalInt, true, 20);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Necromancy, true, 20);
     m_StatMod0  = new StatMod(StatType.Int, "MagiCloak", 20, TimeSpan.Zero);
 }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Stealth, true, 20 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.Hiding, true, 20 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Stealing, true, 20 );
                        m_SkillMod3 = new DefaultSkillMod( SkillName.Fencing, true, 20 );  
			m_StatMod0 = new StatMod( StatType.Dex, "RogueCloak", 15, TimeSpan.Zero ); 
		}
Beispiel #30
0
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Stealth, true, 20);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Hiding, true, 20);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Stealing, true, 20);
     m_SkillMod3 = new DefaultSkillMod(SkillName.Fencing, true, 20);
     m_StatMod0  = new StatMod(StatType.Dex, "RogueCloak", 15, TimeSpan.Zero);
 }
Beispiel #31
0
    public override void SetRandomValues(int level)
    {
        base.SetRandomValues(level);

        attackType = InventoryManager.GetRandomEnum <EAttackType>();

        statMod = new StatMod(1f + level * 0.1f, false, true, 60 * level, "Movespeed");
    }
		private void DefineMods()
		{
			m_SkillMod0 = new DefaultSkillMod( SkillName.Healing, true, 20 ); 
			m_SkillMod1 = new DefaultSkillMod( SkillName.Swords, true, 20 ); 
			m_SkillMod2 = new DefaultSkillMod( SkillName.Chivalry, true, 20 ); 
                        m_SkillMod3 = new DefaultSkillMod( SkillName.Macing, true, 20 );
			m_StatMod0 = new StatMod( StatType.Str, "FighterCloak", 15, TimeSpan.Zero ); 
		}
Beispiel #33
0
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Healing, true, 20);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Swords, true, 20);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Chivalry, true, 20);
     m_SkillMod3 = new DefaultSkillMod(SkillName.Macing, true, 20);
     m_StatMod0  = new StatMod(StatType.Str, "FighterCloak", 15, TimeSpan.Zero);
 }
 private void DefineMods()
 {
     m_SkillMod0 = new DefaultSkillMod(SkillName.Archery, true, 20);
     m_SkillMod1 = new DefaultSkillMod(SkillName.Tactics, true, 20);
     m_SkillMod2 = new DefaultSkillMod(SkillName.Anatomy, true, 20);
     m_StatMod0  = new StatMod(StatType.Dex, "ArcheryPvPDex", 20, TimeSpan.Zero);
     m_StatMod1  = new StatMod(StatType.Str, "ArcheryPvPStr", 20, TimeSpan.Zero);
 }
Beispiel #35
0
        public override void OnCast()
        {
            //get songbook instrument
            Spellbook book = Spellbook.Find(Caster, -1, SpellbookType.Song);

            if (book == null)
            {
                return;
            }
            m_Book = (SongBook)book;
            if (m_Book.Instrument == null || !(Caster.InRange(m_Book.Instrument.GetWorldLocation(), 1)))
            {
                Caster.SendMessage("Your instrument is missing! You can select another from your song book.");
                return;
            }

            bool sings = false;

            if (CheckSequence())
            {
                sings = true;

                ArrayList targets = new ArrayList();

                foreach (Mobile m in Caster.GetMobilesInRange(3))
                {
                    if (Caster.CanBeBeneficial(m, false, true) && !(m is Golem))
                    {
                        targets.Add(m);
                    }
                }


                for (int i = 0; i < targets.Count; ++i)
                {
                    Mobile m = (Mobile)targets[i];

                    Mobile source   = Caster;
                    double allvalue = Caster.Skills[SkillName.Musicianship].Value + Caster.Skills[SkillName.Provocation].Value + Caster.Skills[SkillName.Discordance].Value + Caster.Skills[SkillName.Peacemaking].Value;


                    int amount = (int)(Math.Max((Caster.Skills[SkillName.Musicianship].Value * 0.1), (allvalue - 360 * 0.15)));
                    //int amount = (int)( Caster.Skills[SkillName.Musicianship].Value * 0.1 );
                    string str = "str";

                    double duration = (Caster.Skills[SkillName.Musicianship].Value);

                    StatMod mod = new StatMod(StatType.Str, str, +amount, TimeSpan.FromSeconds(duration));

                    m.AddStatMod(mod);

                    m.FixedParticles(0x375A, 10, 15, 5017, 0x224, 3, EffectLayer.Waist);
                }
            }

            BardFunctions.UseBardInstrument(m_Book.Instrument, sings, Caster);
            FinishSequence();
        }
Beispiel #36
0
        public virtual bool Equals(StatMod mod)
        {
            if (ReferenceEquals(null, mod))
            {
                return(false);
            }

            return(Type == mod.Type && String.Equals(Name, mod.Name));
        }
Beispiel #37
0
        public static StatMod read(BinaryReader binaryReader)
        {
            StatMod newObj = new StatMod();

            newObj.type = binaryReader.ReadUInt32();
            newObj.key  = binaryReader.ReadUInt32();
            newObj.val  = binaryReader.ReadSingle();
            return(newObj);
        }
Beispiel #38
0
 public virtual bool RemoveMod(StatMod mod)
 {
     if (statMods.Remove(mod))
     {
         IsDirty = true;
         return(true);
     }
     return(false);
 }
Beispiel #39
0
        public BuffType GetRandomBuff(Mobile target)
        {
            List <BuffType> buffs = new List <BuffType>();

            if (MagicReflectSpell.HasReflect(target))
            {
                buffs.Add(BuffType.MagicReflect);
            }

            if (ReactiveArmorSpell.HasArmor(target))
            {
                buffs.Add(BuffType.ReactiveArmor);
            }

            if (ProtectionSpell.HasProtection(target))
            {
                buffs.Add(BuffType.Protection);
            }

            TransformContext context = TransformationSpellHelper.GetContext(target);

            if (context != null && context.Type != typeof(AnimalForm))
            {
                buffs.Add(BuffType.Transformation);
            }

            StatMod mod = target.GetStatMod("[Magic] Str Offset");

            if (mod != null && mod.Offset > 0)
            {
                buffs.Add(BuffType.StrBonus);
            }

            mod = target.GetStatMod("[Magic] Dex Offset");
            if (mod != null && mod.Offset > 0)
            {
                buffs.Add(BuffType.DexBonus);
            }

            mod = target.GetStatMod("[Magic] Int Offset");
            if (mod != null && mod.Offset > 0)
            {
                buffs.Add(BuffType.IntBonus);
            }

            if (buffs.Count == 0)
            {
                return(BuffType.None);
            }

            BuffType type = buffs[Utility.Random(buffs.Count)];

            buffs.Clear();

            return(type);
        }
Beispiel #40
0
        public int GetStatMod(Mobile mob, StatType type)
        {
            StatMod mod = mob.GetStatMod(String.Format("[Magic] {0} Malus", type));

            if (mod == null)
            {
                return(0);
            }

            return(mod.Offset);
        }
        public override void OnDoubleClick(Mobile from)
        {

            if (Parent != from)
            {
                from.SendMessage("The Sword must be eqquiped to use.");
            }
            else if (from.Title != "Merlin's Apprentance")
            {
                from.Title = "Merlin's Apprentance";

                from.BoltEffect(0);
                from.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);

                m_StatMod0 = new StatMod(StatType.Str, "MOD0", 10, TimeSpan.Zero);
                m_StatMod1 = new StatMod(StatType.Int, "MOD1", 10, TimeSpan.Zero);

                from.AddStatMod(m_StatMod0);
                from.AddStatMod(m_StatMod1);

                this.WeaponAttributes.HitLeechHits = 65;
                this.WeaponAttributes.HitLeechMana = 45;
                this.Attributes.WeaponSpeed = 30;
            }
            else
            {
                from.BoltEffect(0);
                from.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);

                from.Title = null;

                from.RemoveStatMod("MOD0");
                from.RemoveStatMod("MOD1");

                this.WeaponAttributes.HitLeechHits = 25;
                this.WeaponAttributes.HitLeechMana = 25;
                this.Attributes.WeaponSpeed = 15;
            }
        }
Beispiel #42
0
        private ItemDef saveItem()
        {
            var item = new ItemDef();

            item.id = txtID.Text;
            item.type = (ItemType)cboAnimType.SelectedItem;
            saveUIRep(item);
            item.equipPrefabName = txtPrefab.Text;
            item.anim_type = (AnimType)cboAnimType.SelectedItem;
            item.coreAttribute = (isogame.Attribute)cboCoreAttribute.SelectedItem;
            item.coreSkill = (Skill)cboCoreSkill.SelectedItem;
            item.coreSpecialization = (Specialization)cboCoreSpec.SelectedItem;
            item.maxAmmo = (int)nudAmmo.Value;
            item.apCost = (int)nudAP.Value;

            foreach (string prereq in txtPrereq.Text.Split(';'))
            {
                if (prereq.Length > 0) item.prereqStrings.Add(prereq);
            }

            item.baseHPDamage = (int)nudHPDmg.Value;
            item.baseAPDamage = (int)nudAPDmg.Value;

            foreach (DataGridViewRow mod in dgRangeModTable.Rows)
            {
                if (mod.Cells[1].Value != null) item.rangeModTable.Add((float)mod.Cells[1].Value);
            }

            item.noiseLevel = (int)nudNoiseLvl.Value;
            item.noiseRounds = (int)nudNoiseRds.Value;
            item.ammoReloadAPCost = (int)nudReload.Value;

            for (int i = 0; i < chklstAbilityModes.Items.Count; i++)
            {
                if (chklstAbilityModes.GetItemChecked(i))
                {
                    item.abilityModes.Add(chklstAbilityModes.Items[i].ToString());
                }
            }

            item.store_cost = (int)nudPrice.Value;
            item.affectsEnemy = chkAffectsEnemy.Checked;
            item.canTargetActor = chkTargetActor.Checked;
            item.sorting_group = txtSortingGroup.Text;

            foreach (DataGridViewRow es in dgEquipStatus.Rows)
            {
                if (es.Cells[1].Value != null) //there is a better way to do this
                {
                    StatMod sm = new StatMod();
                    sm.attribute = (isogame.Attribute)es.Cells[0].Value;
                    sm.floatModValue = (float)es.Cells[1].Value;
                    sm.intModValue = (int)es.Cells[2].Value;
                    sm.skill = (Skill)es.Cells[3].Value;
                    sm.specialization = (Specialization)es.Cells[4].Value;
                    item.equippedStatusEffects.statMods.Add(sm);
                }
            }

            return item;
        }
        public override void OnDoubleClick(Mobile from)
        {
            if (Parent != from)
            {
                if( this.ItemID == 7107 ) this.ItemID = 7108;
				else if( this.ItemID == 7108 ) this.ItemID = 7107;
            }
            else if (from.Title != "Gaurdian of the Ages")
            {
                if (ItemID == 7107)
                {
                    if (from.Karma <= 0)
                    {
                        from.Title = "Gaurdian of the Ages";
                        from.BodyMod = 753;
                        from.HueMod = 1109;

                        from.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);

                        m_StatMod5 = new StatMod(StatType.Str, "MOD5", 10, TimeSpan.Zero);

                        from.AddStatMod(m_StatMod5);

                        this.Attributes.WeaponDamage = 15;
                        this.Attributes.ReflectPhysical = 15;
                        this.Attributes.DefendChance = 25;
                        this.Attributes.WeaponSpeed = 5;
                        this.Attributes.SpellChanneling = 1;
                        this.Attributes.SpellDamage = 10;
                        this.Attributes.NightSight = 1;
                    }
                    else
                    {

                        from.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);

                        m_StatMod5 = new StatMod(StatType.Str, "MOD5", 10, TimeSpan.Zero);

                        from.AddStatMod(m_StatMod5);

                        this.Attributes.WeaponDamage = 15;
                        this.Attributes.ReflectPhysical = 15;
                        this.Attributes.DefendChance = 25;
                        this.Attributes.WeaponSpeed = 5;
                        this.Attributes.SpellChanneling = 1;
                        this.Attributes.SpellDamage = 10;
                        this.Attributes.NightSight = 1;
                    }
                }
                else if (ItemID == 7108)
                {
                    if (from.Karma >= 0)
                    {

                        from.Title = "Gaurdian of the Ages";
                        from.BodyMod = 752;
                        from.HueMod = 1157;

                        from.FixedParticles(0x373A, 1, 17, 1108, 7, 9914, 0);
                        from.FixedParticles(0x376A, 1, 22, 67, 7, 9502, 0);

                        m_StatMod5 = new StatMod(StatType.Str, "MOD5", 10, TimeSpan.Zero);

                        from.AddStatMod(m_StatMod5);

                        this.Attributes.WeaponDamage = 15;
                        this.Attributes.ReflectPhysical = 15;
                        this.Attributes.DefendChance = 25;
                        this.Attributes.WeaponSpeed = 5;
                        this.Attributes.SpellChanneling = 1;
                        this.Attributes.SpellDamage = 10;
                        this.Attributes.NightSight = 1;
                    }
                    else
                    {
                        from.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);

                        m_StatMod5 = new StatMod(StatType.Str, "MOD5", 10, TimeSpan.Zero);

                        from.AddStatMod(m_StatMod5);

                        this.Attributes.WeaponDamage = 15;
                        this.Attributes.ReflectPhysical = 15;
                        this.Attributes.DefendChance = 25;
                        this.Attributes.WeaponSpeed = 5;
                        this.Attributes.SpellChanneling = 1;
                        this.Attributes.SpellDamage = 10;
                        this.Attributes.NightSight = 1;
                    }
                }
            }
            else
            {
                from.BoltEffect(0);
                from.FixedParticles(0x376A, 1, 29, 0x47D, 2, 9962, 0);

                from.HueMod = -1;
                from.Title = null;
                from.BodyMod = 0x0;

                from.RemoveStatMod("MOD5");

                this.Attributes.WeaponDamage = 5;
                this.Attributes.ReflectPhysical = 5;
                this.Attributes.DefendChance = 15;
                this.Attributes.WeaponSpeed = 0;
                this.Attributes.SpellChanneling = 1;
                this.Attributes.SpellDamage = 5;
                this.Attributes.NightSight = 1;
            }
        }
		public bool AddMods()
		{
			if ( Owner == null )
				return false;

			BonusNumber++;

			if ( BonusNumber > 5 )
				return false;

			// @100.0 Forensics bonus's value is 10.
			double bonus = (BlueSpell.ScaleBySkill( Owner, SkillName.Forensics ) / 2.0);
			StatMod stat = null;
			DefaultSkillMod skill = null;
			ResistanceMod resist = null;
			int intdiff = 0;
			double doublediff = 0.0;

			// Str (+10 @ GM)
			intdiff = (int)( m_StrCap - (Owner.RawStr + bonus) );

			if ( intdiff > 0 )
			{
				stat = new StatMod( StatType.Str, ("DragonForceStr" + BonusNumber.ToString()), intdiff, TimeSpan.FromHours( 24 ) );
				Owner.AddStatMod( stat );
				StatMods.Add( stat );
			}

			// Dex (+10 @ GM)
			intdiff = (int)( m_DexCap - (Owner.RawDex + bonus) );

			if ( intdiff > 0 )
			{
				stat = new StatMod( StatType.Dex, ("DragonForceDex" + BonusNumber.ToString()), intdiff, TimeSpan.FromHours( 24 ) );
				Owner.AddStatMod( stat );
				StatMods.Add( stat );
			}

			// Tactics (+5.0 @ GM)
			doublediff = m_TacticsCap - (Owner.Skills[SkillName.Tactics].Value + bonus);

			if ( doublediff > 0.0 )
			{
				skill = new DefaultSkillMod( SkillName.Tactics, true, (bonus / 2) );
				Owner.AddSkillMod( skill );
				SkillMods.Add( skill );
			}

			// Wrestling (+5.0 @ GM)
			doublediff = m_WrestlingCap - (Owner.Skills[SkillName.Tactics].Value + bonus);

			if ( doublediff > 0.0 )
			{
				skill = new DefaultSkillMod( SkillName.Wrestling, true, bonus );
				Owner.AddSkillMod( skill );
				SkillMods.Add( skill );
			}

			// Lose all Magic Resist in preparation of negative resistances.
			if ( Owner.Skills[SkillName.MagicResist].Value > 0 )
			{
				skill = new DefaultSkillMod( SkillName.MagicResist, true, -Owner.Skills[SkillName.MagicResist].Value );
				Owner.AddSkillMod( skill );
				SkillMods.Add( skill );
			}

			if ( !Status.Enabled )
			{
				// Lower Magery (-30 @ GM)
				if ( Owner.Skills[SkillName.Magery].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Magery, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}

				// Lower Necromancy (-30 @ GM)
				if ( Owner.Skills[SkillName.Necromancy].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Necromancy, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}

				// Lower Chivalry (-30 @ GM)
				if ( Owner.Skills[SkillName.Chivalry].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Chivalry, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}

				// Lower Bushido (-30 @ GM)
				if ( Owner.Skills[SkillName.Bushido].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Bushido, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}

				// Lower Ninjitsu (-30 @ GM)
				if ( Owner.Skills[SkillName.Ninjitsu].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Ninjitsu, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}

				// Lower Spellweaving (-30 @ GM)
				if ( Owner.Skills[SkillName.Spellweaving].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Spellweaving, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}

				// Lower Mysticism (-30 @ GM)
				if ( Owner.Skills[SkillName.Mysticism].Value > 0 )
				{
					skill = new DefaultSkillMod( SkillName.Mysticism, true, -(bonus * 3) );
					Owner.AddSkillMod( skill );
					SkillMods.Add( skill );
				}
			}

			// Physical (+5 @ GM)
			intdiff = m_PhysicalResistCap - (int)( Owner.PhysicalResistance + (bonus / 2) );
			
			if ( intdiff > 0 )
			{
				resist = new ResistanceMod( ResistanceType.Physical, intdiff );
				Owner.AddResistanceMod( resist );
				ResistMods.Add( resist );
			}

			// Fire (+10 @ GM)
			intdiff = m_FireResistCap - (int)( Owner.FireResistance + bonus );

			if ( intdiff > 0 )
			{
				resist = new ResistanceMod( ResistanceType.Fire, (int)(bonus) );
				Owner.AddResistanceMod( resist );
				ResistMods.Add( resist );
			}

			// Cold (-20 @ GM)
			resist = new ResistanceMod( ResistanceType.Cold, (int)(-(bonus * 2)) );
			Owner.AddResistanceMod( resist );
			ResistMods.Add( resist );

			// Energy (-10 @ GM)
			resist = new ResistanceMod( ResistanceType.Energy, (int)(-bonus) );
			Owner.AddResistanceMod( resist );
			ResistMods.Add( resist );

			return true;
		}
Beispiel #45
0
        public void AddStatMods( Mobile m )
        {
            if ( m == null )
                return;

            string modName = this.Serial.ToString();

            StatMod strMod = new StatMod( StatType.Str, String.Format( "[Magic Hat] -Str {0}", modName ), -5, TimeSpan.Zero );
            StatMod dexMod = new StatMod( StatType.Dex, String.Format( "[Magic Hat] -Dex {0}", modName ), -5, TimeSpan.Zero );
            StatMod intMod = new StatMod( StatType.Int, String.Format( "[Magic Hat] +Int {0}", modName ), +5, TimeSpan.Zero );

            m.AddStatMod( strMod );
            m.AddStatMod( dexMod );
            m.AddStatMod( intMod );
        }
Beispiel #46
0
    public void AddMod(StatMod mod)
    {
        mMods.Add(mod);

        //add up hp max and mass
        mMaxHPAdd += mod.maxHP;
        mMassAdd += mMassBase*mod.mass;

        //update based on additions
        if(rigidbody != null) {
            rigidbody.mass = mMassBase + mMassAdd;
        }

        curHP += mod.maxHP;
    }
Beispiel #47
0
    public void RemoveMod(StatMod mod)
    {
        mMods.Remove(mod);

        //subtract hp max and mass
        mMaxHPAdd -= mod.maxHP;
        mMassAdd -= mMassBase * mod.mass;

        //update based on additions
        if(rigidbody != null) {
            rigidbody.mass = mMassBase + mMassAdd;
        }

        //don't let hp overflow
        if(curHP > maxHP) {
            curHP = maxHP;
        }
    }
Beispiel #48
0
		private void DefineMods()
		{
			m_StatMod0 = new StatMod( StatType.Int, "Elixir of Intelligence", 1, TimeSpan.Zero );
		}
Beispiel #49
0
		private void DefineMods()
		{
			m_StatMod0 = new StatMod( StatType.Str, "Elixir of Strength", 1, TimeSpan.Zero );
		}
Beispiel #50
0
		private void DefineMods()
		{
			m_StatMod0 = new StatMod( StatType.Dex, "Elixir of Dexterity", 1, TimeSpan.Zero );
		}