public BaseJewel( int itemID, Layer layer ) : base(itemID) { m_MagicalAttributes = new MagicalAttributes( this ); m_AosResistances = new ElementAttributes( this ); m_SkillBonuses = new SkillBonuses( this ); m_AbsorptionAttributes = new AbsorptionAttributes( this ); m_Resource = CraftResource.Iron; m_GemType = GemType.None; Layer = layer; m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits ); }
public BaseClothing( int itemID, Layer layer, int hue ) : base(itemID) { Layer = layer; Hue = hue; m_Resource = DefaultResource; m_MagicalAttributes = new MagicalAttributes( this ); m_ClothingAttributes = new ArmorAttributes( this ); m_SkillBonuses = new SkillBonuses( this ); m_Resistances = new ElementAttributes( this ); m_AbsorptionAttributes = new AbsorptionAttributes( this ); m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits ); }
public MagicSandals() : base(0x170d) { Name = "Magical Sandals"; Weight = 1.0; int val = Utility.RandomList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); switch (Utility.Random(53)) { case 0: SkillBonuses.SetValues(0, SkillName.Alchemy, val); break; case 1: SkillBonuses.SetValues(0, SkillName.Anatomy, val); break; case 2: SkillBonuses.SetValues(0, SkillName.AnimalLore, val); break; case 3: SkillBonuses.SetValues(0, SkillName.ItemID, val); break; case 4: SkillBonuses.SetValues(0, SkillName.ArmsLore, val); break; case 5: SkillBonuses.SetValues(0, SkillName.Parry, val); break; case 6: SkillBonuses.SetValues(0, SkillName.Begging, val); break; case 7: SkillBonuses.SetValues(0, SkillName.Blacksmith, val); break; case 8: SkillBonuses.SetValues(0, SkillName.Fletching, val); break; case 9: SkillBonuses.SetValues(0, SkillName.Peacemaking, val); break; case 10: SkillBonuses.SetValues(0, SkillName.Camping, val); break; case 11: SkillBonuses.SetValues(0, SkillName.Carpentry, val); break; case 12: SkillBonuses.SetValues(0, SkillName.Cartography, val); break; case 13: SkillBonuses.SetValues(0, SkillName.Cooking, val); break; case 14: SkillBonuses.SetValues(0, SkillName.DetectHidden, val); break; case 15: SkillBonuses.SetValues(0, SkillName.Discordance, val); break; //case 16: SkillBonuses.SetValues( 0,SkillName.EvalInt, val ); break; case 16: SkillBonuses.SetValues(0, SkillName.Healing, val); break; case 17: SkillBonuses.SetValues(0, SkillName.Fishing, val); break; case 18: SkillBonuses.SetValues(0, SkillName.Forensics, val); break; case 19: SkillBonuses.SetValues(0, SkillName.Herding, val); break; case 20: SkillBonuses.SetValues(0, SkillName.Hiding, val); break; case 21: SkillBonuses.SetValues(0, SkillName.Provocation, val); break; case 22: SkillBonuses.SetValues(0, SkillName.Inscribe, val); break; case 23: SkillBonuses.SetValues(0, SkillName.Lockpicking, val); break; case 24: SkillBonuses.SetValues(0, SkillName.Magery, val); break; case 25: SkillBonuses.SetValues(0, SkillName.MagicResist, val); break; case 26: SkillBonuses.SetValues(0, SkillName.Tactics, val); break; case 27: SkillBonuses.SetValues(0, SkillName.Snooping, val); break; case 28: SkillBonuses.SetValues(0, SkillName.Musicianship, val); break; case 29: SkillBonuses.SetValues(0, SkillName.Poisoning, val); break; case 30: SkillBonuses.SetValues(0, SkillName.Archery, val); break; case 31: SkillBonuses.SetValues(0, SkillName.SpiritSpeak, val); break; case 32: SkillBonuses.SetValues(0, SkillName.Stealing, val); break; case 33: SkillBonuses.SetValues(0, SkillName.Tailoring, val); break; case 34: SkillBonuses.SetValues(0, SkillName.AnimalTaming, val); break; case 35: SkillBonuses.SetValues(0, SkillName.TasteID, val); break; case 36: SkillBonuses.SetValues(0, SkillName.Tinkering, val); break; case 37: SkillBonuses.SetValues(0, SkillName.Tracking, val); break; case 38: SkillBonuses.SetValues(0, SkillName.Veterinary, val); break; case 39: SkillBonuses.SetValues(0, SkillName.Swords, val); break; case 40: SkillBonuses.SetValues(0, SkillName.Macing, val); break; case 41: SkillBonuses.SetValues(0, SkillName.Fencing, val); break; case 42: SkillBonuses.SetValues(0, SkillName.Wrestling, val); break; case 43: SkillBonuses.SetValues(0, SkillName.Lumberjacking, val); break; case 44: SkillBonuses.SetValues(0, SkillName.Mining, val); break; case 45: SkillBonuses.SetValues(0, SkillName.Meditation, val); break; case 46: SkillBonuses.SetValues(0, SkillName.Stealth, val); break; case 47: SkillBonuses.SetValues(0, SkillName.RemoveTrap, val); break; case 48: SkillBonuses.SetValues(0, SkillName.Necromancy, val); break; case 49: SkillBonuses.SetValues(0, SkillName.Focus, val); break; case 50: SkillBonuses.SetValues(0, SkillName.Chivalry, val); break; case 51: SkillBonuses.SetValues(0, SkillName.Bushido, val); break; case 52: SkillBonuses.SetValues(0, SkillName.Ninjitsu, val); break; } }
public RoyalGuardInvestigatorsCloak() : base() { Hue = 1163; SkillBonuses.SetValues(0, SkillName.Stealth, 20.0); }
public ArmsOfTacticalExcellence() { Attributes.BonusDex = 5; SkillBonuses.SetValues(0, SkillName.Tactics, 12.0); }
public LegendaryMapmakersGlasses() { SkillBonuses.SetValues(0, SkillName.Cartography, Utility.RandomMinMax(1, 5)); Quality = ItemQuality.Exceptional; }
public MarkOfTravesty() : base() { Hue = 0x495; Attributes.BonusMana = 8; Attributes.RegenHits = 3; ClothingAttributes.SelfRepair = 3; switch (Utility.Random(15)) { case 0: SkillBonuses.SetValues(0, SkillName.EvalInt, 10); SkillBonuses.SetValues(1, SkillName.Magery, 10); break; case 1: SkillBonuses.SetValues(0, SkillName.AnimalLore, 10); SkillBonuses.SetValues(1, SkillName.AnimalTaming, 10); break; case 2: SkillBonuses.SetValues(0, SkillName.Swords, 10); SkillBonuses.SetValues(1, SkillName.Tactics, 10); break; case 3: SkillBonuses.SetValues(0, SkillName.Discordance, 10); SkillBonuses.SetValues(1, SkillName.Musicianship, 10); break; case 4: SkillBonuses.SetValues(0, SkillName.Fencing, 10); SkillBonuses.SetValues(1, SkillName.Tactics, 10); break; case 5: SkillBonuses.SetValues(0, SkillName.Chivalry, 10); SkillBonuses.SetValues(1, SkillName.MagicResist, 10); break; case 6: SkillBonuses.SetValues(0, SkillName.Anatomy, 10); SkillBonuses.SetValues(1, SkillName.Healing, 10); break; case 7: SkillBonuses.SetValues(0, SkillName.Ninjitsu, 10); SkillBonuses.SetValues(1, SkillName.Stealth, 10); break; case 8: SkillBonuses.SetValues(0, SkillName.Bushido, 10); SkillBonuses.SetValues(1, SkillName.Parry, 10); break; case 9: SkillBonuses.SetValues(0, SkillName.Archery, 10); SkillBonuses.SetValues(1, SkillName.Tactics, 10); break; case 10: SkillBonuses.SetValues(0, SkillName.Macing, 10); SkillBonuses.SetValues(1, SkillName.Tactics, 10); break; case 11: SkillBonuses.SetValues(0, SkillName.Necromancy, 10); SkillBonuses.SetValues(1, SkillName.SpiritSpeak, 10); break; case 12: SkillBonuses.SetValues(0, SkillName.Stealth, 10); SkillBonuses.SetValues(1, SkillName.Stealing, 10); break; case 13: SkillBonuses.SetValues(0, SkillName.Peacemaking, 10); SkillBonuses.SetValues(1, SkillName.Musicianship, 10); break; case 14: SkillBonuses.SetValues(0, SkillName.Provocation, 10); SkillBonuses.SetValues(1, SkillName.Musicianship, 10); break; } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 9: { SaveFlag flags = (SaveFlag) reader.ReadEncodedInt(); if ( GetSaveFlag( flags, SaveFlag.Resource ) ) m_Resource = (CraftResource) reader.ReadInt(); else m_Resource = DefaultResource; if ( GetSaveFlag( flags, SaveFlag.Attributes ) ) m_MagicalAttributes = new MagicalAttributes( this, reader ); else m_MagicalAttributes = new MagicalAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.ClothingAttributes ) ) m_ClothingAttributes = new ArmorAttributes( this, reader ); else m_ClothingAttributes = new ArmorAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.SkillBonuses ) ) m_SkillBonuses = new SkillBonuses( this, reader ); else m_SkillBonuses = new SkillBonuses( this ); if ( GetSaveFlag( flags, SaveFlag.Resistances ) ) m_Resistances = new ElementAttributes( this, reader ); else m_Resistances = new ElementAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) ) m_MaxHitPoints = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.HitPoints ) ) m_HitPoints = reader.ReadInt(); if ( GetSaveFlag( flags, SaveFlag.Crafter ) ) m_Crafter = reader.ReadMobile(); if ( GetSaveFlag( flags, SaveFlag.Exceptional ) ) m_Exceptional = true; if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) ) m_PlayerConstructed = true; if ( GetSaveFlag( flags, SaveFlag.AbsorptionAttributes ) ) m_AbsorptionAttributes = new AbsorptionAttributes( this, reader ); else m_AbsorptionAttributes = new AbsorptionAttributes( this ); if ( GetSaveFlag( flags, SaveFlag.Altered ) ) m_Altered = true; break; } case 8: { m_AbsorptionAttributes = new AbsorptionAttributes( this, reader ); m_MaxHitPoints = reader.ReadInt(); m_HitPoints = reader.ReadInt(); m_Resource = (CraftResource) reader.ReadInt(); m_MagicalAttributes = new MagicalAttributes( this, reader ); m_ClothingAttributes = new ArmorAttributes( this, reader ); m_SkillBonuses = new SkillBonuses( this, reader ); m_Resistances = new ElementAttributes( this, reader ); break; } } Mobile parent = Parent as Mobile; if ( parent != null ) { m_SkillBonuses.AddTo( parent ); AddStatBonuses( parent ); parent.CheckStatTimers(); } }
public CunningMagicStaff() : base(MagicStaffEffect.Charges, 1, 20) { IntRequirement = 15; Name = "wand of cunning"; SkillBonuses.SetValues(1, SkillName.Magery, 20); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 8: { m_Exceptional = reader.ReadBool(); m_PlayerConstructed = reader.ReadBool(); m_Crafter = reader.ReadMobile(); goto case 7; } case 7: { m_AbsorptionAttributes = new AbsorptionAttributes(this, reader); m_TimesImbued = reader.ReadEncodedInt(); m_MaxHitPoints = reader.ReadEncodedInt(); m_HitPoints = reader.ReadEncodedInt(); m_Resource = (CraftResource)reader.ReadEncodedInt(); m_GemType = (GemType)reader.ReadEncodedInt(); m_MagicalAttributes = new MagicalAttributes(this, reader); m_AosResistances = new ElementAttributes(this, reader); m_SkillBonuses = new SkillBonuses(this, reader); if (Parent is Mobile) { m_SkillBonuses.AddTo((Mobile)Parent); } break; } } int strBonus = m_MagicalAttributes.BonusStr; int dexBonus = m_MagicalAttributes.BonusDex; int intBonus = m_MagicalAttributes.BonusInt; if (Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0)) { Mobile m = (Mobile)Parent; string modName = Serial.ToString(); if (strBonus != 0) { m.AddStatMod(new StatMod(StatType.Str, modName + "Str", strBonus, TimeSpan.Zero)); } if (dexBonus != 0) { m.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero)); } if (intBonus != 0) { m.AddStatMod(new StatMod(StatType.Int, modName + "Int", intBonus, TimeSpan.Zero)); } } if (Parent is Mobile) { ((Mobile)Parent).CheckStatTimers(); } }
public AbyssReaver() { SkillBonuses.SetValues(0, SkillName.Throwing, Utility.RandomMinMax(5, 10)); Attributes.WeaponDamage = Utility.RandomMinMax(25, 35); Slayer = SlayerName.Exorcism; }
public EnergyVortexMagicStaff() : base(MagicStaffEffect.Charges, 1, 3) { IntRequirement = 45; Name = "wand of vortex summoning"; SkillBonuses.SetValues(1, SkillName.Magery, 80); }
public Armor(BaseArmor Item, uint ContainerID) { Item.UpdateLocalizedProperties(); Item.UpdateTextProperties(); //General Rating = 0; ID = Item.Serial.Value; this.ContainerID = ContainerID; ItemName = Item.Tooltip.Split('|')[0].Replace("'", ""); CastingFocus = (sbyte)Item.Attributes.CastingFocus; DI = (sbyte)Item.Attributes.WeaponDamage; SSI = (sbyte)Item.Attributes.WeaponSpeed; FC = (sbyte)Item.Attributes.CastSpeed; FCR = (sbyte)Item.Attributes.CastRecovery; SDI = (sbyte)Item.Attributes.SpellDamage; RPD = (sbyte)Item.Attributes.ReflectPhysical; DCI = (sbyte)Item.Attributes.DefendChance; HCI = (sbyte)Item.Attributes.AttackChance; STR = (sbyte)Item.Attributes.BonusStr; DEX = (sbyte)Item.Attributes.BonusDex; INTEL = (sbyte)Item.Attributes.BonusInt; HP = (sbyte)Item.Attributes.BonusHits; Stam = (sbyte)Item.Attributes.BonusStam; Mana = (sbyte)Item.Attributes.BonusMana; HPRegen = (sbyte)Item.Attributes.RegenHits; StamRegen = (sbyte)Item.Attributes.RegenStam; ManaRegen = (sbyte)Item.Attributes.RegenMana; LMC = (sbyte)Item.Attributes.LowerManaCost; LRC = (sbyte)Item.Attributes.LowerRegCost; EnhancePotions = (sbyte)Item.Attributes.EnhancePotions; Luck = (short)Item.Attributes.Luck; PhysicalResist = (sbyte)Item.Resistances.Physical; FireResist = (sbyte)Item.Resistances.Fire; ColdResist = (sbyte)Item.Resistances.Cold; PoisonResist = (sbyte)Item.Resistances.Poison; EnergyResist = (sbyte)Item.Resistances.Energy; DamageEater = (sbyte)Item.AbsorptionAttributes.DamageEater; KineticEater = (sbyte)Item.AbsorptionAttributes.KineticEater; FireEater = (sbyte)Item.AbsorptionAttributes.FireEater; ColdEater = (sbyte)Item.AbsorptionAttributes.ColdEater; PoisonEater = (sbyte)Item.AbsorptionAttributes.PoisonEater; EnergyEater = (sbyte)Item.AbsorptionAttributes.EnergyEater; TotalStat = STR + INTEL + DEX + HP + Mana + Stam; TotalResist = PhysicalResist + FireResist + ColdResist + PoisonResist + EnergyResist; Added = DateTime.Now; //Skill Bonuses SkillBonuses = ""; ItemSkillName _skill1 = (ItemSkillName)Item.SkillBonuses.Skill_1_Name; ItemSkillName _skill2 = (ItemSkillName)Item.SkillBonuses.Skill_2_Name; ItemSkillName _skill3 = (ItemSkillName)Item.SkillBonuses.Skill_3_Name; ItemSkillName _skill4 = (ItemSkillName)Item.SkillBonuses.Skill_4_Name; ItemSkillName _skill5 = (ItemSkillName)Item.SkillBonuses.Skill_5_Name; string[][] _skillBonusesString = new string[][] { new string[] { Item.SkillBonuses.Skill_1_Value.ToString(), _skill1.ToString() }, new string[] { Item.SkillBonuses.Skill_2_Value.ToString(), _skill2.ToString() }, new string[] { Item.SkillBonuses.Skill_3_Value.ToString(), _skill3.ToString() }, new string[] { Item.SkillBonuses.Skill_4_Value.ToString(), _skill4.ToString() }, new string[] { Item.SkillBonuses.Skill_5_Value.ToString(), _skill5.ToString() }, }; int _totalSkill = 0; foreach (string[] _s in _skillBonusesString) { if (_s[1].Equals("Invalid")) { continue; } else { SkillBonuses = SkillBonuses + _s[0] + ' ' + _s[1]; _totalSkill += Int32.Parse(_s[0]); } } SkillBonuses = SkillBonuses.Replace('_', ' '); //item rating Rating = (TotalResist / 4) + (TotalResist / 10); if (RPD > 0) { Rating += (RPD / 5); } if (DI >= 0) { Rating += (DI / 5) + (DI / 10); } if (HCI > 0) { Rating += (HCI / 2) + (HCI / 3); } if (DCI > 0) { Rating += (DCI / 2) + (DCI / 3); } if (HPRegen > 0) { Rating += (HPRegen * 4); } if (ManaRegen > 0) { Rating += (ManaRegen * 4); } if (StamRegen > 0) { Rating += (StamRegen * 3); } if (LRC > 0) { Rating += (LRC / 2) + (LRC / 3); } if (LMC > 0) { Rating += (LMC / 2) + (LMC / 3); } if (INTEL > 0) { Rating += (INTEL / 2) + (INTEL / 3); } if (DEX > 0) { Rating += (DEX / 2) + (DEX / 3); } if (STR > 0) { Rating += (STR / 2) + (STR / 3); } if (HP > 0) { Rating += (HP / 2) + (HP / 3); } if (Stam > 0) { Rating += (Stam / 2) + (Stam / 3); } if (Mana > 0) { Rating += (Mana / 2) + (Mana / 3); } int _totalEater = DamageEater + KineticEater + FireEater + ColdEater + PoisonEater + EnergyEater; if (_totalEater > 0) { Rating += (_totalEater / 2) + (_totalEater / 5); } if (_totalSkill > 0) { Rating += (_totalSkill / 2); } if (FC > 0) { Rating += (FC * 6); } if (FCR > 0) { Rating += (FCR * 6); } if (CastingFocus > 0) { Rating += (CastingFocus / 3) + (CastingFocus / 10); } if (SSI > 0) { Rating += (SSI / 3) + (SSI / 10); } if (SDI > 0) { Rating += (SDI / 2); } if (Luck > 0) { Rating += (Luck / 11) + (Luck / 15); } if (EnhancePotions > 0) { Rating += (EnhancePotions / 6); } }
public ShadowDancerLeggings() { Hue = 0x455; SkillBonuses.SetValues(0, SkillName.Stealth, 20.0); SkillBonuses.SetValues(1, SkillName.Stealing, 20.0); }
public TinkeringBoots() { Hue = 0x07AA; Name = "Boots of Tinkering"; SkillBonuses.SetValues(0, Server.SkillName.Tinkering, 4.0); }
private static void ApplySkillBonus( SkillBonuses attrs, int min, int max, int index, int low, int high ) { SkillName[] possibleSkills = ( attrs.Owner is Spellbook ? m_PossibleSpellbookSkills : m_PossibleBonusSkills ); int count = possibleSkills.Length; SkillName sk, check; double bonus; bool found; do { found = false; sk = possibleSkills[Utility.Random( count )]; for ( int i = 0; !found && i < 5; ++i ) found = ( attrs.GetValues( i, out check, out bonus ) && check == sk ); } while ( found ); attrs.SetValues( (short) index, sk, (short) Scale( min, max, low, high ) ); }
public Spellbook( ulong content, int itemID ) : base(itemID) { m_MagicalAttributes = new MagicalAttributes( this ); m_SkillBonuses = new SkillBonuses( this ); Weight = 0.0; Layer = Layer.OneHanded; LootType = LootType.Blessed; Content = content; }
public MaleKimonoBearingTheCrestOfBlackthorn3() { ReforgedSuffix = ReforgedSuffix.Blackthorn; SkillBonuses.SetValues(0, SkillName.Stealth, 10.0); Hue = 2130; }
public BaseTalisman( int ItemID ) : base(ItemID) { Layer = Layer.Talisman; m_MagicalAttributes = new MagicalAttributes( this ); m_AosResistances = new ElementAttributes( this ); m_SkillBonuses = new SkillBonuses( this ); // 1% chance to spawn with the "Owned by no one" property. m_Ownable = ( 0.01 > Utility.RandomDouble() ); m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits ); }
public TorchOfTrapFinding() { Hue = 0; Name = "Torch of Trap Burning"; SkillBonuses.SetValues(0, SkillName.RemoveTrap, 100); }
public ArtifactHalfApron() { Name = m_Names[Utility.Random(m_Names.Length)]; Hue = Utility.RandomMinMax(5, 3000); // Name = "Artifact Half Apron"; // Layer = Layer.Waist; /* * // random chance to get diffent resist % * PhysicalBonus = Utility.RandomMinMax(0, 2); * FireBonus = Utility.RandomMinMax(0, 2); * ColdBonus = Utility.RandomMinMax(0, 2); * PoisonBonus = Utility.RandomMinMax(0, 2); * EnergyBonus = Utility.RandomMinMax(0, 2); */ // id it shows item as switch (Utility.Random(2)) { case 0: ItemID = 5435; break; // Half Apron case 1: ItemID = 10144; break; // Obi } // random chance to get these stats added to item ,chance of one stat per switch switch (Utility.Random(20)) { case 0: Attributes.RegenHits = Utility.RandomMinMax(1, 4); break; case 1: Attributes.RegenStam = Utility.RandomMinMax(1, 4); break; case 2: Attributes.RegenStam = Utility.RandomMinMax(1, 4); break; case 3: Attributes.DefendChance = Utility.RandomMinMax(10, 20); break; case 4: Attributes.AttackChance = Utility.RandomMinMax(10, 20); break; } switch (Utility.Random(20)) { case 0: Attributes.BonusStr = Utility.RandomMinMax(1, 5); break; case 1: Attributes.BonusDex = Utility.RandomMinMax(1, 5); break; case 2: Attributes.BonusInt = Utility.RandomMinMax(1, 5); break; case 3: Attributes.BonusHits = Utility.RandomMinMax(10, 20); break; case 4: Attributes.BonusStam = Utility.RandomMinMax(10, 20); break; case 5: Attributes.BonusMana = Utility.RandomMinMax(10, 20); break; } switch (Utility.Random(20)) { case 0: Attributes.WeaponDamage = Utility.RandomMinMax(10, 50); break; case 1: Attributes.WeaponSpeed = Utility.RandomMinMax(10, 20); break; case 2: Attributes.SpellDamage = Utility.RandomMinMax(10, 50); break; case 3: Attributes.CastRecovery = Utility.RandomMinMax(1, 2); break; case 4: Attributes.CastSpeed = Utility.RandomMinMax(1, 2); break; } switch (Utility.Random(20)) { case 0: Attributes.LowerManaCost = Utility.RandomMinMax(5, 10); break; case 1: Attributes.LowerRegCost = Utility.RandomMinMax(10, 20); break; case 2: Attributes.ReflectPhysical = Utility.RandomMinMax(5, 20); break; case 3: Attributes.EnhancePotions = Utility.RandomMinMax(10, 20); break; case 4: Attributes.Luck = Utility.RandomMinMax(100, 200); break; case 5: Attributes.NightSight = 1; break; // case 6: Attributes.SpellChanneling = 1; break; } switch (Utility.Random(20)) { case 0: Attributes.WeaponDamage = Utility.RandomMinMax(10, 50); break; case 1: Attributes.WeaponSpeed = Utility.RandomMinMax(10, 20); break; case 2: Attributes.SpellDamage = Utility.RandomMinMax(5, 25); break; case 3: Attributes.CastRecovery = Utility.RandomMinMax(1, 2); break; case 4: Attributes.CastSpeed = Utility.RandomMinMax(1, 2); break; } // this will add 1 of these to every shoe sandal or boot switch (Utility.Random(21)) { case 0: Attributes.WeaponDamage = Utility.RandomMinMax(10, 50); break; case 1: Attributes.WeaponSpeed = Utility.RandomMinMax(10, 20); break; case 2: Attributes.SpellDamage = Utility.RandomMinMax(5, 25); break; case 3: Attributes.CastRecovery = Utility.RandomMinMax(1, 2); break; case 4: Attributes.CastSpeed = Utility.RandomMinMax(1, 2); break; case 5: Attributes.LowerManaCost = Utility.RandomMinMax(5, 10); break; case 6: Attributes.LowerRegCost = Utility.RandomMinMax(10, 20); break; case 7: Attributes.ReflectPhysical = Utility.RandomMinMax(5, 20); break; case 8: Attributes.EnhancePotions = Utility.RandomMinMax(10, 20); break; case 9: Attributes.Luck = Utility.RandomMinMax(100, 200); break; case 10: Attributes.BonusStr = Utility.RandomMinMax(1, 5); break; case 11: Attributes.BonusDex = Utility.RandomMinMax(1, 5); break; case 12: Attributes.BonusInt = Utility.RandomMinMax(1, 5); break; case 13: Attributes.BonusHits = Utility.RandomMinMax(10, 20); break; case 14: Attributes.BonusStam = Utility.RandomMinMax(10, 20); break; case 15: Attributes.BonusMana = Utility.RandomMinMax(10, 20); break; case 16: Attributes.RegenHits = Utility.RandomMinMax(1, 4); break; case 17: Attributes.RegenStam = Utility.RandomMinMax(1, 4); break; case 18: Attributes.RegenStam = Utility.RandomMinMax(1, 4); break; case 19: Attributes.DefendChance = Utility.RandomMinMax(10, 20); break; case 20: Attributes.AttackChance = Utility.RandomMinMax(10, 20); break; } // random skill bonus switch (Utility.Random(54)) { case 0: SkillBonuses.SetValues(0, SkillName.Alchemy, 5.0); break; case 1: SkillBonuses.SetValues(0, SkillName.Anatomy, 5.0); break; case 2: SkillBonuses.SetValues(0, SkillName.AnimalLore, 5.0); break; case 3: SkillBonuses.SetValues(0, SkillName.ItemID, 5.0); break; case 4: SkillBonuses.SetValues(0, SkillName.ArmsLore, 5.0); break; case 5: SkillBonuses.SetValues(0, SkillName.Parry, 5.0); break; case 6: SkillBonuses.SetValues(0, SkillName.Begging, 5.0); break; case 7: SkillBonuses.SetValues(0, SkillName.Blacksmith, 5.0); break; case 8: SkillBonuses.SetValues(0, SkillName.Fletching, 5.0); break; case 9: SkillBonuses.SetValues(0, SkillName.Peacemaking, 5.0); break; case 10: SkillBonuses.SetValues(0, SkillName.Camping, 5.0); break; case 11: SkillBonuses.SetValues(0, SkillName.Carpentry, 5.0); break; case 12: SkillBonuses.SetValues(0, SkillName.Cartography, 5.0); break; case 13: SkillBonuses.SetValues(0, SkillName.Cooking, 5.0); break; case 14: SkillBonuses.SetValues(0, SkillName.DetectHidden, 5.0); break; case 15: SkillBonuses.SetValues(0, SkillName.Discordance, 5.0); break; case 16: SkillBonuses.SetValues(0, SkillName.EvalInt, 5.0); break; case 17: SkillBonuses.SetValues(0, SkillName.Healing, 5.0); break; case 18: SkillBonuses.SetValues(0, SkillName.Fishing, 5.0); break; case 19: SkillBonuses.SetValues(0, SkillName.Forensics, 5.0); break; case 20: SkillBonuses.SetValues(0, SkillName.Herding, 5.0); break; // lol has anyone ever used this skill before case 21: SkillBonuses.SetValues(0, SkillName.Hiding, 5.0); break; case 22: SkillBonuses.SetValues(0, SkillName.Provocation, 5.0); break; case 23: SkillBonuses.SetValues(0, SkillName.Inscribe, 5.0); break; case 24: SkillBonuses.SetValues(0, SkillName.Lockpicking, 5.0); break; case 25: SkillBonuses.SetValues(0, SkillName.Magery, 5.0); break; case 26: SkillBonuses.SetValues(0, SkillName.MagicResist, 5.0); break; case 27: SkillBonuses.SetValues(0, SkillName.Tactics, 5.0); break; case 28: SkillBonuses.SetValues(0, SkillName.Snooping, 5.0); break; case 29: SkillBonuses.SetValues(0, SkillName.Musicianship, 5.0); break; case 30: SkillBonuses.SetValues(0, SkillName.Poisoning, 5.0); break; case 31: SkillBonuses.SetValues(0, SkillName.Archery, 5.0); break; case 32: SkillBonuses.SetValues(0, SkillName.SpiritSpeak, 5.0); break; case 33: SkillBonuses.SetValues(0, SkillName.Stealing, 5.0); break; case 34: SkillBonuses.SetValues(0, SkillName.Tailoring, 5.0); break; case 35: SkillBonuses.SetValues(0, SkillName.AnimalTaming, 5.0); break; case 36: SkillBonuses.SetValues(0, SkillName.TasteID, 5.0); break; case 37: SkillBonuses.SetValues(0, SkillName.Tinkering, 5.0); break; case 38: SkillBonuses.SetValues(0, SkillName.Tracking, 5.0); break; case 39: SkillBonuses.SetValues(0, SkillName.Veterinary, 5.0); break; case 40: SkillBonuses.SetValues(0, SkillName.Swords, 5.0); break; case 41: SkillBonuses.SetValues(0, SkillName.Macing, 5.0); break; case 42: SkillBonuses.SetValues(0, SkillName.Fencing, 5.0); break; case 43: SkillBonuses.SetValues(0, SkillName.Wrestling, 5.0); break; case 44: SkillBonuses.SetValues(0, SkillName.Lumberjacking, 5.0); break; case 45: SkillBonuses.SetValues(0, SkillName.Mining, 5.0); break; case 46: SkillBonuses.SetValues(0, SkillName.Meditation, 5.0); break; case 47: SkillBonuses.SetValues(0, SkillName.Stealth, 5.0); break; case 48: SkillBonuses.SetValues(0, SkillName.RemoveTrap, 5.0); break; case 49: SkillBonuses.SetValues(0, SkillName.Necromancy, 5.0); break; case 50: SkillBonuses.SetValues(0, SkillName.Focus, 5.0); break; case 51: SkillBonuses.SetValues(0, SkillName.Chivalry, 5.0); break; case 52: SkillBonuses.SetValues(0, SkillName.Bushido, 5.0); break; case 53: SkillBonuses.SetValues(0, SkillName.Ninjitsu, 5.0); break; } // END random skill bonus //Disadvantages /* // can be brittle * switch (Utility.Random(2)) * { * case 0: Attributes.Brittle = 1; break; * } * // can be cursed * switch (Utility.Random(2)) { case 0: LootType = LootType.Cursed; break; } * * // can be unlucky * switch (Utility.Random(2)) * { * case 0: Attributes.Luck = -100; break; * } */ }
public TailoringDoublet() { Hue = 0x798; Name = "Doublet of Tailoring"; SkillBonuses.SetValues(0, Server.SkillName.Tailoring, 5.0); }
public Runesabre() { SkillBonuses.SetValues(0, SkillName.MagicResist, 5.0); WeaponAttributes.MageWeapon = 1; // 1 = -29 }
public TailorSandals() { Hue = 0x798; Name = "Sandals of Tailoring"; SkillBonuses.SetValues(0, Server.SkillName.Tailoring, 1.0); }
public AncientSamuraiDo() { ArmorAttributes.LowerStatReq = 100; ArmorAttributes.MageArmor = 1; SkillBonuses.SetValues(0, SkillName.Parry, 10.0); }
public TailorCloak() { Hue = 0x798; Name = "Greater Cloak of Tailoring"; SkillBonuses.SetValues(0, Server.SkillName.Tailoring, 2.0); }
public MasterLockpickersRing() : base(0x108a) { Name = "Master Lockpicker's Ring"; Weight = 0.1; SkillBonuses.SetValues(0, SkillName.Lockpicking, 5.0); }
public TailorShirt() { Hue = 0x798; Name = "Shirt of Tailoring"; SkillBonuses.SetValues(0, Server.SkillName.Mining, 4.0); }
public SingingAxe() { SkillBonuses.SetValues(0, SkillName.Musicianship, 5); }
public SpecialFishingGloves() : base(0x13C6) { Weight = 2.0; Name = "Special Fishing Gloves"; SkillBonuses.SetValues(0, SkillName.Fishing, 20.0); }
public BulwarkLeggings() { Attributes.BonusStr = 5; SkillBonuses.SetValues(0, SkillName.Anatomy, 5.0); }
public BlessMagicStaff() : base(MagicStaffEffect.Charges, 1, 15) { IntRequirement = 20; Name = "wand of blessing"; SkillBonuses.SetValues(1, SkillName.Magery, 30); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); if ( !( this is TomeOfEnlightenment || this is TomeOfLostKnowledge || this is FactionTomeOfLostKnowledge ) ) LootType = LootType.Blessed; int version = reader.ReadInt(); switch ( version ) { case 7: { m_Exceptional = reader.ReadBool(); m_Crafter = reader.ReadMobile(); goto case 6; } case 6: case 5: { m_Slayer2 = (SlayerName) reader.ReadEncodedInt(); goto case 4; } case 4: { m_EngraveString = reader.ReadString(); goto case 3; } case 3: case 2: { m_Slayer = (SlayerName) reader.ReadEncodedInt(); goto case 1; } case 1: { m_MagicalAttributes = new MagicalAttributes( this, reader ); m_SkillBonuses = new SkillBonuses( this, reader ); if ( this is ScrappersCompendium ) { Attributes.SpellDamage = 25; Attributes.LowerManaCost = 10; } else if ( this is ClaininsSpellbook ) { Attributes.LowerRegCost = 15; Attributes.RegenMana = 3; } else if ( this is TomeOfEnlightenment ) { Attributes.BonusInt = 5; Attributes.SpellDamage = 10; Attributes.CastSpeed = 1; } else if ( this is TomeOfLostKnowledge ) { SkillBonuses.SetValues( 0, SkillName.Magery, 15.0 ); Attributes.BonusInt = 8; Attributes.SpellDamage = 15; Attributes.LowerManaCost = 15; } else if ( this is FactionTomeOfLostKnowledge ) { SkillBonuses.SetValues( 0, SkillName.Magery, 15.0 ); Attributes.BonusInt = 8; Attributes.SpellDamage = 15; Attributes.LowerManaCost = 15; Attributes.RegenMana = 3; } else if ( this is ConjurersGrimoire ) { SkillBonuses.SetValues( 0, SkillName.Magery, 15.0 ); Attributes.BonusInt = 8; Attributes.SpellDamage = 15; Attributes.LowerManaCost = 10; } else if ( this is FallenMysticsSpellbook ) { Attributes.SpellDamage = 10; } else { FixAttributes(); } goto case 0; } case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); break; } } if ( m_MagicalAttributes == null ) m_MagicalAttributes = new MagicalAttributes( this ); if ( m_SkillBonuses == null ) m_SkillBonuses = new SkillBonuses( this ); if ( Parent is Mobile ) m_SkillBonuses.AddTo( (Mobile) Parent ); int strBonus = m_MagicalAttributes.BonusStr; int dexBonus = m_MagicalAttributes.BonusDex; int intBonus = m_MagicalAttributes.BonusInt; if ( Parent is Mobile && ( strBonus != 0 || dexBonus != 0 || intBonus != 0 ) ) { Mobile m = (Mobile) Parent; string modName = Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ( (Mobile) Parent ).CheckStatTimers(); }
public TelekinesisMagicStaff() : base(MagicStaffEffect.Charges, 1, 15) { IntRequirement = 20; Name = "wand of telekinesis"; SkillBonuses.SetValues(1, SkillName.Magery, 30); }
public virtual void AlterFrom( BaseClothing orig ) { m_Altered = true; m_MagicalAttributes = orig.Attributes; m_ClothingAttributes = orig.ClothingAttributes; m_SkillBonuses = orig.SkillBonuses; m_Resistances = orig.Resistances; m_AbsorptionAttributes = orig.AbsorptionAttributes; Crafter = orig.Crafter; Exceptional = orig.Exceptional; MaxHitPoints = orig.MaxHitPoints; HitPoints = orig.HitPoints; }
public MagicUntrapMagicStaff() : base(MagicStaffEffect.Charges, 1, 20) { IntRequirement = 15; Name = "wand of trap removal"; SkillBonuses.SetValues(1, SkillName.Magery, 20); }
public override bool OnEquip(Mobile from) { Item glove = from.FindItemOnLayer(Layer.Gloves); Item pants = from.FindItemOnLayer(Layer.Pants); Item arms = from.FindItemOnLayer(Layer.Arms); Item helm = from.FindItemOnLayer(Layer.Helm); if (helm != null && helm.GetType() == typeof(DeathEssenceHelm) && glove != null && glove.GetType() == typeof(DeathEssenceGloves) && pants != null && pants.GetType() == typeof(DeathEssenceLegs) && arms != null && arms.GetType() == typeof(DeathEssenceArms)) { Effects.PlaySound(from.Location, from.Map, 503); from.FixedParticles(0x376A, 9, 32, 5030, EffectLayer.Waist); Hue = 0x455; SkillBonuses.SetValues(0, SkillName.Necromancy, 10.0); Attributes.LowerManaCost = 10; ArmorAttributes.SelfRepair = 3; PhysicalBonus = 4; FireBonus = 5; ColdBonus = 3; PoisonBonus = 4; EnergyBonus = 4; DeathEssenceGloves gloves = from.FindItemOnLayer(Layer.Gloves) as DeathEssenceGloves; DeathEssenceLegs legs = from.FindItemOnLayer(Layer.Pants) as DeathEssenceLegs; DeathEssenceArms arm = from.FindItemOnLayer(Layer.Arms) as DeathEssenceArms; DeathEssenceHelm helmet = from.FindItemOnLayer(Layer.Helm) as DeathEssenceHelm; gloves.Hue = 0x455; gloves.ArmorAttributes.SelfRepair = 3; gloves.PhysicalBonus = 4; gloves.FireBonus = 5; gloves.ColdBonus = 3; gloves.PoisonBonus = 4; gloves.EnergyBonus = 4; legs.Hue = 0x455; legs.ArmorAttributes.SelfRepair = 3; legs.PhysicalBonus = 4; legs.FireBonus = 5; legs.ColdBonus = 3; legs.PoisonBonus = 4; legs.EnergyBonus = 4; arm.Hue = 0x455; arm.ArmorAttributes.SelfRepair = 3; arm.PhysicalBonus = 4; arm.FireBonus = 5; arm.ColdBonus = 3; arm.PoisonBonus = 4; arm.EnergyBonus = 4; helmet.Hue = 0x455; helmet.ArmorAttributes.SelfRepair = 3; helmet.PhysicalBonus = 4; helmet.FireBonus = 5; helmet.ColdBonus = 3; helmet.PoisonBonus = 4; helmet.EnergyBonus = 4; from.SendLocalizedMessage(1072391); } this.InvalidateProperties(); return(base.OnEquip(from)); }
public GateTravelMagicStaff() : base(MagicStaffEffect.Charges, 1, 5) { IntRequirement = 40; Name = "wand of gate travels"; SkillBonuses.SetValues(1, SkillName.Magery, 70); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 4: { m_MaxHitPoints = reader.ReadEncodedInt(); m_HitPoints = reader.ReadEncodedInt(); goto case 3; } case 3: { m_Slayer = (SlayerName) reader.ReadInt(); m_Slayer2 = (SlayerName) reader.ReadInt(); goto case 2; } case 2: { m_Ownable = (bool) reader.ReadBool(); m_Owner = (Mobile) reader.ReadMobile(); m_CraftBonusRegular = (CraftList) reader.ReadInt(); m_CraftBonusRegularValue = reader.ReadInt(); m_CraftBonusExcep = (CraftList) reader.ReadInt(); m_CraftBonusExcepValue = reader.ReadInt(); m_ProtectionEntry = (NPC_Name) reader.ReadInt(); m_ProtectionValue = reader.ReadInt(); m_KillersEntry = (NPC_Name) reader.ReadInt(); m_KillersValue = reader.ReadInt(); m_TalisSlayer = (TalisSlayerName) reader.ReadInt(); m_TalismanType = (TalismanType) reader.ReadInt(); m_Charges = reader.ReadInt(); goto case 1; } case 1: { m_MagicalAttributes = new MagicalAttributes( this, reader ); m_AosResistances = new ElementAttributes( this, reader ); m_SkillBonuses = new SkillBonuses( this, reader ); if ( Parent is Mobile ) { //-------- Charged Time Left ----------- m_isequiped = true; InvalidateProperties(); //------ FIN Charged Time Left --------- m_SkillBonuses.AddTo( (Mobile) Parent ); } int strBonus = m_MagicalAttributes.BonusStr; int dexBonus = m_MagicalAttributes.BonusDex; int intBonus = m_MagicalAttributes.BonusInt; if ( Parent is Mobile && ( strBonus != 0 || dexBonus != 0 || intBonus != 0 ) ) { Mobile m = (Mobile) Parent; string modName = Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ( (Mobile) Parent ).CheckStatTimers(); break; } case 0: { if ( Parent is Mobile ) { //-------- Charged Time Left ----------- m_isequiped = true; InvalidateProperties(); //------ FIN Charged Time Left --------- m_SkillBonuses.AddTo( (Mobile) Parent ); } m_MagicalAttributes = new MagicalAttributes( this ); m_AosResistances = new ElementAttributes( this ); m_SkillBonuses = new SkillBonuses( this ); break; } } if ( version < 2 ) { m_Ownable = (bool) reader.ReadBool(); m_Owner = (Mobile) reader.ReadMobile(); m_CraftBonusRegular = (CraftList) reader.ReadInt(); m_CraftBonusRegularValue = reader.ReadInt(); m_CraftBonusExcep = (CraftList) reader.ReadInt(); m_CraftBonusExcepValue = reader.ReadInt(); m_ProtectionEntry = (NPC_Name) reader.ReadInt(); m_ProtectionValue = reader.ReadInt(); m_KillersEntry = (NPC_Name) reader.ReadInt(); m_KillersValue = reader.ReadInt(); m_TalisSlayer = (TalisSlayerName) reader.ReadInt(); m_TalismanType = (TalismanType) reader.ReadInt(); m_Charges = reader.ReadInt(); } }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 8: { m_Exceptional = reader.ReadBool(); m_PlayerConstructed = reader.ReadBool(); m_Crafter = reader.ReadMobile(); goto case 7; } case 7: { m_AbsorptionAttributes = new AbsorptionAttributes( this, reader ); m_TimesImbued = reader.ReadEncodedInt(); m_MaxHitPoints = reader.ReadEncodedInt(); m_HitPoints = reader.ReadEncodedInt(); m_Resource = (CraftResource) reader.ReadEncodedInt(); m_GemType = (GemType) reader.ReadEncodedInt(); m_MagicalAttributes = new MagicalAttributes( this, reader ); m_AosResistances = new ElementAttributes( this, reader ); m_SkillBonuses = new SkillBonuses( this, reader ); if ( Parent is Mobile ) m_SkillBonuses.AddTo( (Mobile) Parent ); break; } } int strBonus = m_MagicalAttributes.BonusStr; int dexBonus = m_MagicalAttributes.BonusDex; int intBonus = m_MagicalAttributes.BonusInt; if ( Parent is Mobile && ( strBonus != 0 || dexBonus != 0 || intBonus != 0 ) ) { Mobile m = (Mobile) Parent; string modName = Serial.ToString(); if ( strBonus != 0 ) m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) ); if ( dexBonus != 0 ) m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) ); if ( intBonus != 0 ) m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) ); } if ( Parent is Mobile ) ( (Mobile) Parent ).CheckStatTimers(); }