public override bool CheckResources(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc, bool timed) { if (HarvestMap.CheckMapOnHarvest(from, loc, def) == null) { return(base.CheckResources(from, tool, def, map, loc, timed)); } return(true); }
public override Type GetResourceType(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc, HarvestResource resource) { if (def == OreAndStone) { #region Void Pool Items HarvestMap hmap = HarvestMap.CheckMapOnHarvest(from, loc, def); if (hmap != null && hmap.Resource >= CraftResource.Iron && hmap.Resource <= CraftResource.Valorite) { hmap.UsesRemaining--; hmap.InvalidateProperties(); CraftResourceInfo info = CraftResources.GetInfo(hmap.Resource); if (info != null) { return(info.ResourceTypes[1]); } } #endregion PlayerMobile pm = from as PlayerMobile; if (tool is ImprovedRockHammer) { if (from.Skills[SkillName.Mining].Base >= 100.0) { return(resource.Types[1]); } else { return(null); } } if (pm != null && pm.GemMining && pm.ToggleMiningGem && from.Skills[SkillName.Mining].Base >= 100.0 && 0.1 > Utility.RandomDouble()) { return(Loot.GemTypes[Utility.Random(Loot.GemTypes.Length)]); } double chance = tool is RockHammer ? 0.50 : 0.15; if (pm != null && pm.StoneMining && (pm.ToggleMiningStone || pm.ToggleStoneOnly) && from.Skills[SkillName.Mining].Base >= 100.0 && chance > Utility.RandomDouble()) { return(resource.Types[1]); } if (pm != null && pm.ToggleStoneOnly) { return(null); } return(resource.Types[0]); } return(base.GetResourceType(from, tool, def, map, loc, resource)); }
public override Type GetResourceType(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc, HarvestResource resource) { #region Void Pool Items HarvestMap hmap = HarvestMap.CheckMapOnHarvest(from, loc, def); if (hmap != null && hmap.Resource >= CraftResource.RegularWood && hmap.Resource <= CraftResource.Frostwood) { hmap.UsesRemaining--; hmap.InvalidateProperties(); CraftResourceInfo info = CraftResources.GetInfo(hmap.Resource); if (info != null) { return(info.ResourceTypes[0]); } } #endregion return(base.GetResourceType(from, tool, def, map, loc, resource)); }
public override Type GetResourceType(Mobile from, Item tool, HarvestDefinition def, Map map, Point3D loc, HarvestResource resource) { if (def == this.m_OreAndStone) { #region Void Pool Items HarvestMap hmap = HarvestMap.CheckMapOnHarvest(from, loc, def); if (hmap != null && hmap.Resource >= CraftResource.Iron && hmap.Resource <= CraftResource.Valorite) { hmap.UsesRemaining--; hmap.InvalidateProperties(); CraftResourceInfo info = CraftResources.GetInfo(hmap.Resource); if (info != null) { return(info.ResourceTypes[1]); } } #endregion PlayerMobile pm = from as PlayerMobile; if (pm != null && pm.GemMining && pm.ToggleMiningGem && from.Skills[SkillName.Mining].Base >= 100.0 && 0.1 > Utility.RandomDouble()) { return(Loot.RandomGem().GetType()); } if (pm != null && pm.StoneMining && pm.ToggleMiningStone && from.Skills[SkillName.Mining].Base >= 100.0 && 0.15 > Utility.RandomDouble()) { return(resource.Types[1]); } return(resource.Types[0]); } return(base.GetResourceType(from, tool, def, map, loc, resource)); }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested) { if (tool is GargoylesPickaxe && def == this.m_OreAndStone && 0.1 > Utility.RandomDouble() && HarvestMap.CheckMapOnHarvest(from, harvested, def) == null) { HarvestResource res = vein.PrimaryResource; if (res == resource && res.Types.Length >= 3) { try { Map map = from.Map; if (map == null) { return; } BaseCreature spawned = Activator.CreateInstance(res.Types[2], new object[] { 25 }) as BaseCreature; if (spawned != null) { int offset = Utility.Random(8) * 2; for (int i = 0; i < m_Offsets.Length; i += 2) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if (map.CanSpawnMobile(x, y, from.Z)) { spawned.OnBeforeSpawn(new Point3D(x, y, from.Z), map); spawned.MoveToWorld(new Point3D(x, y, from.Z), map); spawned.Combatant = from; return; } else { int z = map.GetAverageZ(x, y); if (Math.Abs(z - from.Z) < 10 && map.CanSpawnMobile(x, y, z)) { spawned.OnBeforeSpawn(new Point3D(x, y, z), map); spawned.MoveToWorld(new Point3D(x, y, z), map); spawned.Combatant = from; return; } } } spawned.OnBeforeSpawn(from.Location, from.Map); spawned.MoveToWorld(from.Location, from.Map); spawned.Combatant = from; } } catch { } } } }