public void SummonUndead(Mobile target) { BaseCreature summon = null; switch (Utility.Random(11)) { default: case 0: summon = new Skeleton(); break; case 1: summon = new Zombie(); break; case 2: summon = new Wraith(); break; case 3: summon = new Spectre(); break; case 4: summon = new Ghoul(); break; case 5: summon = new Mummy(); break; case 6: summon = new Bogle(); break; case 7: summon = new BoneKnight(); break; case 8: summon = new SkeletalKnight(); break; case 9: summon = new Lich(); break; case 10: summon = new SkeletalMage(); break; } summon.Team = Team; summon.FightMode = FightMode.Closest; summon.MoveToWorld(target.Location, target.Map); Effects.SendLocationEffect(summon.Location, summon.Map, 0x3728, 10, 10, 0, 0); summon.Combatant = target; summon.PlaySound(summon.GetAttackSound()); }
public void SummonUndead(Mobile target) { Point3D[] locs = new Point3D[4]; locs[0] = Location; for (int i = 1; i < 4; i++) { bool validLocation = false; for (int j = 0; !validLocation && j < 10; ++j) { int x = X + Utility.Random(4) - 1; int y = Y + Utility.Random(4) - 1; int z = this.Map.GetAverageZ(x, y); if (validLocation = this.Map.CanFit(x, y, this.Z, 16, false, false)) { locs[i] = new Point3D(x, y, Z); } else if (validLocation = this.Map.CanFit(x, y, z, 16, false, false)) { locs[i] = new Point3D(x, y, z); } } } bool movelich = false; for (int i = 0; i < 4; i++) { BaseCreature summon = null; if (!movelich && (Utility.Random(4) == 0 || i == 3)) { summon = this; BodyMod = Utility.RandomList(50, 56, 57, 3, 26, 148, 147, 153, 154, 24, 35, 36); HueMod = 0; movelich = true; } else { switch (Utility.Random(12)) { default: case 0: summon = new Skeleton(); break; case 1: summon = new Zombie(); break; case 2: summon = new Wraith(); break; case 3: summon = new Spectre(); break; case 4: summon = new Ghoul(); break; case 5: summon = new Mummy(); break; case 6: summon = new Bogle(); break; case 7: summon = new BoneKnight(); break; case 8: summon = new SkeletalKnight(); break; case 9: summon = new Lich(); break; case 10: summon = new Lizardman(); break; case 11: summon = new SkeletalMage(); break; } summon.Team = this.Team; summon.FightMode = FightMode.Closest; } summon.MoveToWorld(locs[i], Map); Effects.SendLocationEffect(summon.Location, summon.Map, 0x3728, 10, 10, 0, 0); summon.PlaySound(0x48F); summon.PlaySound(summon.GetAttackSound()); summon.Combatant = target; } }
protected override void OnTick() { if ( m_Item.Deleted ) return; Mobile spawn; switch ( Utility.Random( 12 ) ) { default: case 0: spawn = new Skeleton(); break; case 1: spawn = new Zombie(); break; case 2: spawn = new Wraith(); break; case 3: spawn = new Spectre(); break; case 4: spawn = new Ghoul(); break; case 5: spawn = new Mummy(); break; case 6: spawn = new Bogle(); break; case 7: spawn = new RottingCorpse(); break; case 8: spawn = new BoneKnight(); break; case 9: spawn = new SkeletalKnight(); break; case 10: spawn = new Lich(); break; case 11: spawn = new LichLord(); break; } spawn.MoveToWorld( m_Item.Location, m_Item.Map ); m_Item.Delete(); }
public void SummonUndead(Mobile target) { Point3D[] locs = new Point3D[4]; locs[0] = Location; for (int i = 1; i < 4; i++) { bool validLocation = false; for (int j = 0; !validLocation && j < 10; ++j) { int x = X + Utility.Random(4) - 1; int y = Y + Utility.Random(4) - 1; int z = this.Map.GetAverageZ(x, y); if (validLocation = this.Map.CanFit(x, y, this.Z, 16, false, false)) locs[i] = new Point3D(x, y, Z); else if (validLocation = this.Map.CanFit(x, y, z, 16, false, false)) locs[i] = new Point3D(x, y, z); } } bool movelich = false; for (int i = 0; i < 4; i++) { BaseCreature summon = null; if (!movelich && (Utility.Random(4) == 0 || i == 3)) { summon = this; BodyMod = Utility.RandomList(50, 56, 57, 3, 26, 148, 147, 153, 154, 24, 35, 36); HueMod = 0; movelich = true; } else { switch (Utility.Random(12)) { default: case 0: summon = new Skeleton(); break; case 1: summon = new Zombie(); break; case 2: summon = new Wraith(); break; case 3: summon = new Spectre(); break; case 4: summon = new Ghoul(); break; case 5: summon = new Mummy(); break; case 6: summon = new Bogle(); break; case 7: summon = new BoneKnight(); break; case 8: summon = new SkeletalKnight(); break; case 9: summon = new Lich(); break; case 10: summon = new Lizardman(); break; case 11: summon = new SkeletalMage(); break; } summon.Team = this.Team; summon.FightMode = FightMode.Closest; } summon.MoveToWorld(locs[i], Map); Effects.SendLocationEffect(summon.Location, summon.Map, 0x3728, 10, 10, 0, 0); summon.PlaySound(0x48F); summon.PlaySound(summon.GetAttackSound()); summon.Combatant = target; } }
protected override void OnTick() { if ( m_Item.Deleted ) return; Mobile spawn; switch ( Utility.Random( 8 ) ) { default: case 0: spawn = new PatchworkSkeleton(); break; case 1: spawn = new Zombie(); break; case 2: spawn = new Wraith(); break; case 3: spawn = new SkeletalMage(); break; case 4: spawn = new Mummy(); break; case 5: spawn = new BoneKnight(); break; case 6: spawn = new SkeletalKnight(); break; case 7: spawn = new Lich(); break; } spawn.MoveToWorld( m_Item.Location, m_Item.Map ); //Effects.PlaySound( p, map, 0x1FB ); //Effects.SendLocationParticles( EffectItem.Create( p, map, EffectItem.DefaultDuration ), 0x3789, 1, 40, 0x3F, 3, 9907, 0 ); m_Item.Delete(); }
public void SpawnCreature(Mobile target) { Map map = this.Map; if (map == null) { return; } int monsters = 0; foreach (Mobile m in this.GetMobilesInRange(4)) { if (m is BoneKnight || m is BoneMagi || m is Ghoul || m is Mummy || m is Shade || m is SkeletalKnight || m is SkeletalMage || m is Skeleton || m is Spectre || m is Wraith || m is Phantom || m is Zombie) { ++monsters; } } if (monsters < 6) { PlaySound(0x216); int newmonsters = Utility.RandomMinMax(1, 3); for (int i = 0; i < newmonsters; ++i) { BaseCreature monster; switch (Utility.Random(13)) { default: case 0: monster = new BoneKnight(); break; case 1: monster = new BoneMagi(); break; case 2: monster = new Ghoul(); break; case 3: monster = new Ghostly(); break; case 4: monster = new Mummy(); break; case 5: monster = new Shade(); break; case 6: monster = new SkeletalKnight(); break; case 7: monster = new SkeletalMage(); break; case 8: monster = new Skeleton(); break; case 9: monster = new Spectre(); break; case 10: monster = new Wraith(); break; case 11: monster = new Phantom(); break; case 12: monster = new Zombie(); break; } monster.Team = this.Team; bool validLocation = false; Point3D loc = this.Location; for (int j = 0; !validLocation && j < 10; ++j) { int x = X + Utility.Random(3) - 1; int y = Y + Utility.Random(3) - 1; int z = map.GetAverageZ(x, y); if (validLocation = map.CanFit(x, y, this.Z, 16, false, false)) { loc = new Point3D(x, y, Z); } else if (validLocation = map.CanFit(x, y, z, 16, false, false)) { loc = new Point3D(x, y, z); } } monster.ControlSlots = 666; // DJERYV ADDED FOR MONSTER CLEANUP monster.MoveToWorld(loc, map); monster.Combatant = target; } } }
protected override void OnTick() { if ( m_Item.Deleted ) return; Mobile spawn; switch ( Utility.Random( 12 ) ) { default: case 0: spawn = new Skeleton(); break; case 1: spawn = new Zombie(); break; case 2: spawn = new Wraith(); break; case 3: spawn = new Spectre(); break; case 4: spawn = new Spectre(); break; case 5: spawn = new Mummy(); break; case 6: spawn = new Zombie(); break; case 7: spawn = new Zombie(); break; case 8: spawn = new Zombie(); break; case 9: spawn = new SkeletalSoldier(); break; case 10: spawn = new Zombie(); break; case 11: spawn = new Zombie(); break; } spawn.MoveToWorld( m_Item.Location, m_Item.Map ); m_Item.Delete(); }
public void SpawnUndead( Mobile m ) { Map map = this.Map; Effects.SendLocationParticles( EffectItem.Create( this.Location, map, EffectItem.DefaultDuration ), 0x3789, 1, 40, 0x3F, 3, 9907, 0 ); Mobile spawn; switch ( Utility.Random( 12 ) ) { default: case 0: spawn = new Skeleton(); break; case 1: spawn = new Zombie(); break; case 2: spawn = new Wraith(); break; case 3: spawn = new Spectre(); break; case 4: spawn = new Ghoul(); break; case 5: spawn = new Mummy(); break; case 6: spawn = new Bogle(); break; case 7: spawn = new RottingCorpse(); break; case 8: spawn = new BoneKnight(); break; case 9: spawn = new SkeletalKnight(); break; case 10: spawn = new Lich(); break; case 11: spawn = new LichLord(); break; } spawn.Hidden = true; spawn.MoveToWorld( m.Location, m.Map ); }
public override void OnClick() { Race race = ((Player)pm).Race; switch (race) { case Race.Ogre: { pm.Target = new OgreTarget(); pm.SendMessage("Target a creature to bash!"); break; } case Race.Terathan: { mobList = new List<Mobile>(); foreach (Mobile mobile in pm.GetMobilesInRange(8)) { if (mobile.AccessLevel > pm.AccessLevel) continue; else if (mobile.Blessed || !mobile.Alive) continue; else if (mobile == pm) continue; else mobList.Add(mobile); } if (mobList != null) { Timer.DelayCall(TimeSpan.FromSeconds(8.0), new TimerCallback(FinishWebs)); pm.PublicOverheadMessage(MessageType.Regular, pm.EmoteHue, false, "*Begins hurling webs at nearby creatures*"); for (int i = 0; i < mobList.Count; i++) { Mobile m = mobList[i]; if (m is PlayerMobile && 0.51 > Utility.RandomDouble()) { m.SendMessage("You've been struck by a terathan web!"); } m.CantWalk = true; Effects.SendMovingEffect(pm, m, 4308, 0, 10, false, false); } Effects.PlaySound(pm.Location, pm.Map, 0x027); pm.NextRaceAbility = TimeSpan.FromMinutes(1); } break; } case Race.Liche: { if (pm.Followers >= pm.FollowersMax) { pm.SendMessage("You already have too many followers to summon more."); } else { do { BaseCreature bc = null; switch (Utility.Random(3)) { case 0: bc = new Skeleton(); break; case 1: bc = new Zombie(); break; case 2: bc = new Wraith(); break; } if (bc != null && BaseCreature.Summon(bc, true, pm, Point3D.Zero, 0x1E2, TimeSpan.FromMinutes(1.5))) { bc.MoveToWorld(new Point3D(pm.X + Utility.RandomMinMax(1, 3), pm.Y - Utility.RandomMinMax(0, 3), pm.Z), pm.Map); Effects.SendLocationEffect(pm.Location, pm.Map, 0x3709, 15, 945, 0); } } while (pm.Followers < pm.FollowersMax); pm.NextRaceAbility = TimeSpan.FromMinutes(2.0); } break; } case Race.HalfDaemon: { if (pm.AbilityActive) { pm.RaceBody = 0; pm.BodyDamageBonus = 0; pm.AdjustBody(); pm.Str -= 40; pm.Dex -= 20; pm.Int += 60; pm.AbilityActive = false; pm.PublicOverheadMessage(MessageType.Regular, pm.EmoteHue, false, String.Format("*{0} begins to shrink, taking the form of a human*", pm.Name)); } else { for (int x = 1; x <= 2; x++) { Item toDisarm = pm.FindItemOnLayer(Layer.OneHanded); if (toDisarm == null || !toDisarm.Movable) toDisarm = pm.FindItemOnLayer(Layer.TwoHanded); Container pack = pm.Backpack; pack.DropItem(toDisarm); } pm.RaceBody = 792; pm.AdjustBody(); pm.BodyDamageBonus = 36; pm.Str += 40; pm.Dex += 20; pm.Int -= 60; pm.AbilityActive = true; pm.PublicOverheadMessage(MessageType.Regular, pm.EmoteHue, false, String.Format("*{0}'s flesh begins to buldge and tear as something emerges from within*", pm.Name)); } break; } case Race.Shapeshifter: { pm.Target = new ShapeshifterTarget(); pm.SendMessage("Select a creature to assume their form."); break; } case Race.Marid: { if (pm.AbilityActive) { pm.AbilityActive = false; pm.CanSwim = false; Effects.SendLocationParticles(EffectItem.Create(pm.Location, pm.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023); try { IMount mount = pm.Mount; mount.Rider = null; ((EtherealMount)mount).Delete(); } catch { } } else { for (int x = 1; x <= 2; x++) { Item toDisarm = pm.FindItemOnLayer(Layer.OneHanded); if (toDisarm == null || !toDisarm.Movable) toDisarm = pm.FindItemOnLayer(Layer.TwoHanded); Container pack = pm.Backpack; pack.DropItem(toDisarm); } pm.AbilityActive = true; pm.PublicOverheadMessage(MessageType.Regular, pm.EmoteHue, false, String.Format("*A mass of vapors condenses under {0}, forming a steed*", pm.Name)); pm.CanSwim = true; bool isWater = false; Map map = pm.Map; LandTile land = map.Tiles.GetLandTile(pm.X, pm.Y); StaticTile[] tiles = map.Tiles.GetStaticTiles(pm.X, pm.Y); isWater = (land.Z == pm.Z && ((land.ID >= 168 && land.ID <= 171) || (land.ID >= 310 && land.ID <= 311))); for (int i = 0; i < tiles.Length; ++i) { StaticTile tile = tiles[i]; isWater = (tile.ID >= 0x1796 && tile.ID <= 0x17B2); } try { if (isWater) { EtherealMount seaHorse = new EtherealSeaHorse(); seaHorse.MoveToWorld(pm.Location); seaHorse.Rider = pm; } else { EtherealMount horse = new EtherealHorse(); horse.MoveToWorld(pm.Location); horse.Rider = pm; } } catch { } } break; } default: break; } }
public void SpawnUndeads( Mobile target ) { Map map = this.Map; if ( map == null ) return; int undeads = 0; foreach ( Mobile m in this.GetMobilesInRange( 10 ) ) { if ( m is Skeleton || m is SkeletalMage || m is Zombie || m is BoneMagi || m is Ghoul || m is Wraith || m is Shade || m is Spectre ) ++undeads; } if ( undeads < 7 ) { PlaySound( 586 ); int newUndeads = Utility.RandomMinMax( 2, 5 ); for ( int i = 0; i < newUndeads; ++i ) { BaseCreature undead; switch ( Utility.Random( 16 ) ) { default: case 0: case 1: undead = new Skeleton(); break; case 2: case 3: undead = new SkeletalMage(); break; case 4: case 5: undead = new BoneMagi(); break; case 6: case 7: undead = new Zombie(); break; case 8: case 9: undead = new Ghoul(); break; case 10: case 11: undead = new Wraith(); break; case 12: case 13: undead = new Shade(); break; case 14: case 15: undead = new Spectre(); break; } undead.Team = this.Team; bool validLocation = false; Point3D loc = this.Location; for ( int j = 0; !validLocation && j < 10; ++j ) { int x = X + Utility.Random( 3 ) - 1; int y = Y + Utility.Random( 3 ) - 1; int z = map.GetAverageZ( x, y ); if ( validLocation = map.CanFit( x, y, this.Z, 16, false, false ) ) loc = new Point3D( x, y, Z ); else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) ) loc = new Point3D( x, y, z ); } undead.MoveToWorld( loc, map ); undead.Combatant = target; } } }
protected override void OnTick() { Item gem = Loot.RandomGem(); Item reg = Loot.RandomPossibleReagent(); Item equip; equip = Loot.RandomArmorOrShieldOrWeaponOrJewelry(); if ( m_Item != null ) m_Item.IsDigging = false; if ( equip is BaseWeapon ) { BaseWeapon weapon = (BaseWeapon)equip; int attributeCount; int min, max; GetRandomAOSStats( out attributeCount, out min, out max ); BaseRunicTool.ApplyAttributesTo( weapon, attributeCount, min, max ); } else if ( equip is BaseArmor ) { BaseArmor armor = (BaseArmor)equip; int attributeCount; int min, max; GetRandomAOSStats( out attributeCount, out min, out max ); BaseRunicTool.ApplyAttributesTo( armor, attributeCount, min, max ); } else if ( equip is BaseJewel ) { int attributeCount; int min, max; GetRandomAOSStats( out attributeCount, out min, out max ); BaseRunicTool.ApplyAttributesTo( (BaseJewel)equip, attributeCount, min, max ); } if ( Utility.Random( 100 ) < 85 ) { switch ( Utility.Random ( 15 ) ) { case 0: Skeleton skel = new Skeleton(); skel.Location = m_From.Location; skel.Map = m_From.Map; skel.Combatant = m_From; World.AddMobile( skel ); break; case 1: Ghoul ghoul = new Ghoul(); ghoul.Location = m_From.Location; ghoul.Map = m_From.Map; ghoul.Combatant = m_From; World.AddMobile( ghoul ); break; case 2: Wraith wraith = new Wraith(); wraith.Location = m_From.Location; wraith.Map = m_From.Map; wraith.Combatant = m_From; World.AddMobile( wraith ); break; case 3: Lich lich = new Lich(); lich.Location = m_From.Location; lich.Map = m_From.Map; lich.Combatant = m_From; World.AddMobile( lich ); break; case 4: LichLord lichl = new LichLord(); lichl.Location = m_From.Location; lichl.Map = m_From.Map; lichl.Combatant = m_From; World.AddMobile( lichl ); break; case 5: AncientLich alich = new AncientLich(); alich.Location = m_From.Location; alich.Map = m_From.Map; alich.Combatant = m_From; World.AddMobile( alich ); break; case 6: Mummy mum = new Mummy(); mum.Location = m_From.Location; mum.Map = m_From.Map; mum.Combatant = m_From; World.AddMobile( mum ); break; case 7: Zombie zom = new Zombie(); zom.Location = m_From.Location; zom.Map = m_From.Map; zom.Combatant = m_From; World.AddMobile( zom ); break; case 8: SkeletalKnight sk = new SkeletalKnight(); sk.Location = m_From.Location; sk.Map = m_From.Map; sk.Combatant = m_From; World.AddMobile( sk ); break; case 9: SkeletalMage sm = new SkeletalMage(); sm.Location = m_From.Location; sm.Map = m_From.Map; sm.Combatant = m_From; World.AddMobile( sm ); break; case 10: BoneKnight bk = new BoneKnight(); bk.Location = m_From.Location; bk.Map = m_From.Map; bk.Combatant = m_From; World.AddMobile( bk ); break; case 11: BoneMagi bm = new BoneMagi(); bm.Location = m_From.Location; bm.Map = m_From.Map; bm.Combatant = m_From; World.AddMobile( bm ); break; case 12: Spectre spec = new Spectre(); spec.Location = m_From.Location; spec.Map = m_From.Map; spec.Combatant = m_From; World.AddMobile( spec ); break; case 13: Shade shade = new Shade(); shade.Location = m_From.Location; shade.Map = m_From.Map; shade.Combatant = m_From; World.AddMobile( shade ); break; } m_From.SendMessage( "The spirits have rose from the dead.." ); } else if ( m_From.Skills[SkillName.Mining].Base < 15.0 ) { if ( Utility.Random( 100 ) < 85 ) { m_From.SendMessage( "You fail to dig anything up." ); } else { switch ( Utility.Random ( 3 ) ) { case 0: m_From.AddToBackpack( gem ); m_From.SendMessage( "You dig up a gem." ); break; case 1: m_From.AddToBackpack( reg ); m_From.SendMessage( "You dig up a reagent." ); break; case 2: m_From.AddToBackpack( equip ); m_From.SendMessage( "You dig up some equipment." ); break; } } } else if ( m_From.Skills[SkillName.Mining].Base < 35.0 ) { if ( Utility.Random( 100 ) < 85 ) { m_From.SendMessage( "You fail to dig anything up." ); } else { gem.Amount = Utility.RandomMinMax( 2, 4 ); reg.Amount = Utility.RandomMinMax( 2, 4 ); switch ( Utility.Random ( 5 ) ) { case 0: m_From.AddToBackpack( gem ); m_From.SendMessage( "You dig up some gems." ); break; case 1: m_From.AddToBackpack( reg ); m_From.SendMessage( "You dig up some reagents." ); break; case 2: m_From.AddToBackpack( equip ); m_From.SendMessage( "You dig up some equipment." ); break; case 3: m_From.AddToBackpack( Loot.RandomScroll( 0, 20, SpellbookType.Regular ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 4: m_From.AddToBackpack( Loot.RandomScroll( 0, 5, SpellbookType.Necromancer ) ); m_From.SendMessage( "You dig up a scroll." ); break; } } } else if ( m_From.Skills[SkillName.Mining].Base < 50.0 ) { if ( Utility.Random( 100 ) < 85 ) { m_From.SendMessage( "You fail to dig anything up." ); } else { gem.Amount = Utility.RandomMinMax( 2, 10 ); reg.Amount = Utility.RandomMinMax( 2, 10 ); switch ( Utility.Random ( 6 ) ) { case 0: m_From.AddToBackpack( gem ); m_From.SendMessage( "You dig up some gems." ); break; case 1: m_From.AddToBackpack( reg ); m_From.SendMessage( "You dig up some reagents." ); break; case 2: m_From.AddToBackpack( equip ); m_From.SendMessage( "You dig up some equipment." ); break; case 3: m_From.AddToBackpack( Loot.RandomScroll( 0, 40, SpellbookType.Regular ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 4: m_From.AddToBackpack( Loot.RandomScroll( 0, 10, SpellbookType.Regular ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 5: m_From.AddToBackpack( new Bones() ); m_From.SendMessage( "You dig up a bones." ); break; } } } else if ( m_From.Skills[SkillName.Mining].Base < 75.0 ) { if ( Utility.Random( 100 ) < 85 ) { m_From.SendMessage( "You fail to dig anything up." ); } else { gem.Amount = Utility.RandomMinMax( 2, 20 ); reg.Amount = Utility.RandomMinMax( 2, 20 ); switch ( Utility.Random ( 7 ) ) { case 0: m_From.AddToBackpack( gem ); m_From.SendMessage( "You dig up some gems." ); break; case 1: m_From.AddToBackpack( reg ); m_From.SendMessage( "You dig up some reagents." ); break; case 2: m_From.AddToBackpack( equip ); m_From.SendMessage( "You dig up some equipment." ); break; case 3: m_From.AddToBackpack( Loot.RandomScroll( 0, 50, SpellbookType.Regular ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 4: m_From.AddToBackpack( Loot.RandomScroll( 0, 13, SpellbookType.Necromancer ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 5: m_From.AddToBackpack( new Bones() ); m_From.SendMessage( "You dig up a bones." ); break; } } } else if ( m_From.Skills[SkillName.Mining].Base < 90.0 ) { if ( Utility.Random( 100 ) < 85 ) { m_From.SendMessage( "You fail to dig anything up." ); } else { gem.Amount = Utility.RandomMinMax( 10, 30 ); reg.Amount = Utility.RandomMinMax( 10, 30 ); switch ( Utility.Random ( 8 ) ) { case 0: m_From.AddToBackpack( gem ); m_From.SendMessage( "You dig up some gems." ); break; case 1: m_From.AddToBackpack( reg ); m_From.SendMessage( "You dig up some reagents." ); break; case 2: m_From.AddToBackpack( equip ); m_From.SendMessage( "You dig up some equipment." ); break; case 3: m_From.AddToBackpack( Loot.RandomScroll( 0, 63, SpellbookType.Regular ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 4: m_From.AddToBackpack( Loot.RandomScroll( 0, 15, SpellbookType.Necromancer ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 5: m_From.AddToBackpack( new Bones() ); m_From.SendMessage( "You dig up a bones." ); break; } } } else if ( m_From.Skills[SkillName.Mining].Base < 150.0) { if ( Utility.Random( 500 ) < 5 ) { m_From.SendMessage( "You dig up and item of great value." ); switch ( Utility.Random ( 5 ) ) { case 0: m_From.AddToBackpack( new ArmoredRobe() ); break; case 1: m_From.AddToBackpack( new ButchersResolve() ); break; case 2: m_From.AddToBackpack( new FollowerOfTheOldLord() ); break; case 3: m_From.AddToBackpack( new SkirtOfTheAmazon() ); break; case 4: m_From.AddToBackpack( new HolyHammerOfExorcism() ); break; } } else { gem.Amount = Utility.RandomMinMax( 2, 40 ); reg.Amount = Utility.RandomMinMax( 2, 40 ); switch ( Utility.Random ( 8 ) ) { case 0: m_From.AddToBackpack( gem ); m_From.SendMessage( "You dig up some gems." ); break; case 1: m_From.AddToBackpack( reg ); m_From.SendMessage( "You dig up some reagents." ); break; case 2: m_From.AddToBackpack( equip ); m_From.SendMessage( "You dig up some equipment." ); break; case 3: m_From.AddToBackpack( Loot.RandomScroll( 0, 63, SpellbookType.Regular ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 4: m_From.AddToBackpack( Loot.RandomScroll( 0, 15, SpellbookType.Necromancer ) ); m_From.SendMessage( "You dig up a scroll." ); break; case 5: m_From.AddToBackpack( new Bones() ); m_From.SendMessage( "You dig up a bones." ); break; } } } else { m_From.SendMessage( "You fail to dig anything up." ); } Stop(); }