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(); }
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 ); }
/// <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); }
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(); }
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 ); }
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. } }
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)); }
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; } }
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 ); }
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); }
public void AdjustStatMod(string stat, double points) { if (!StatMod.TryAdd(stat, points)) { StatMod[stat] += points; } }
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); }
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); }
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 ); }
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); }
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 ); }
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); }
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(); }
public virtual bool Equals(StatMod mod) { if (ReferenceEquals(null, mod)) { return(false); } return(Type == mod.Type && String.Equals(Name, mod.Name)); }
public static StatMod read(BinaryReader binaryReader) { StatMod newObj = new StatMod(); newObj.type = binaryReader.ReadUInt32(); newObj.key = binaryReader.ReadUInt32(); newObj.val = binaryReader.ReadSingle(); return(newObj); }
public virtual bool RemoveMod(StatMod mod) { if (statMods.Remove(mod)) { IsDirty = true; return(true); } return(false); }
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); }
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; } }
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; }
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 ); }
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; }
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; } }
private void DefineMods() { m_StatMod0 = new StatMod( StatType.Int, "Elixir of Intelligence", 1, TimeSpan.Zero ); }
private void DefineMods() { m_StatMod0 = new StatMod( StatType.Str, "Elixir of Strength", 1, TimeSpan.Zero ); }
private void DefineMods() { m_StatMod0 = new StatMod( StatType.Dex, "Elixir of Dexterity", 1, TimeSpan.Zero ); }