public static bool CheckForString(Mobile from, string errorMsg, BaseRanged ranged) { BaseRangedModule module = ranged.BaseRangedModule; if (!module.HasBowString) { return(true); } else { if (module.HasBowString && module.StringStrengthSelection == StringStrength.NoString) { from.SendMessage(""); from.SendMessage(33, "--------------------"); from.SendMessage(""); from.SendMessage(33, "The bow has an internal error and is now being fixed..."); from.SendMessage(""); from.SendMessage(33, "--------------------"); from.SendMessage(""); module.HasBowString = false; return(true); } else { from.SendMessage("{0}", errorMsg); return(false); } } }
protected override void OnTarget(Mobile from, object targeted) { Console.WriteLine("Code making it to OnTarget."); BaseRanged rang = it_Ranged as BaseRanged; BaseRangedModule module = rang.BaseRangedModule; if (targeted is Item && targeted is Bolt) { Console.WriteLine("Code making it to bolt check."); Item item = ( Item )targeted; string errorMsg = "You cannot arm a crossbow that does not have a string."; if (!module.HasBowString) { from.SendMessage("{0}", errorMsg); return; } if (item.GetType() == typeof(Bolt)) { module.BoltSelection = BoltType.Normal; rang.InvalidateProperties(); } if (item.GetType() == typeof(PoisonBolt)) { module.BoltSelection = BoltType.Poison; rang.InvalidateProperties(); } if (item.GetType() == typeof(ExplosiveBolt)) { module.BoltSelection = BoltType.Explosive; rang.InvalidateProperties(); } if (item.GetType() == typeof(ArmorPiercingBolt)) { module.BoltSelection = BoltType.ArmorPiercing; rang.InvalidateProperties(); } if (item.GetType() == typeof(FreezeBolt)) { module.BoltSelection = BoltType.Freeze; rang.InvalidateProperties(); } if (item.GetType() == typeof(LightningBolt)) { module.BoltSelection = BoltType.Lightning; rang.InvalidateProperties(); } } else { from.SendMessage("You can only target a bolt."); } }
public virtual void CheckStringError(Mobile from, BaseRanged ranged) { BaseRangedModule module = ranged.BaseRangedModule; if (module.HasBowString && module.StringStrengthSelection == StringStrength.NoString) { from.SendMessage("The bow has an internal error. The bow is now being fixed..."); module.HasBowString = false; } }
public static void CutString(Mobile from, BaseRanged ranged) { BaseRangedModule module = ranged.BaseRangedModule; module.StringStrengthSelection = StringStrength.NoString; module.PullWeightSelection = PoundsPerPull.Zero; module.HasBowString = false; from.PlaySound(0x248); from.SendMessage("You have just removed the string from your bow."); ranged.InvalidateProperties(); }
public virtual bool BonusDamage(Mobile attacker, Mobile defender, BaseRanged ranged) { BaseRangedModule module = ranged.BaseRangedModule; attacker.SendMessage(""); attacker.SendMessage(0x35, "** Bonus Hit **"); attacker.SendMessage(""); attacker.SendMessage(0x35, "The strength of your bow and your immpecable skill have given you a perfect hit."); attacker.SendMessage(""); defender.Say("* Ouch, that hurt! *"); defender.PlaySound(315); if (module.HasBowString) { if (module.m_PullWeight == PoundsPerPull.Fourty) { attacker.DoHarmful(defender); AOS.Damage(defender, attacker, Utility.RandomMinMax(2, 5), 100, 0, 0, 0, 0); return(true); } else if (module.m_PullWeight == PoundsPerPull.Sixty) { attacker.DoHarmful(defender); AOS.Damage(defender, attacker, Utility.RandomMinMax(6, 10), 100, 0, 0, 0, 0); return(true); } else if (module.m_PullWeight == PoundsPerPull.Eighty) { attacker.DoHarmful(defender); AOS.Damage(defender, attacker, Utility.RandomMinMax(11, 15), 100, 0, 0, 0, 0); return(true); } else if (module.m_PullWeight == PoundsPerPull.Hundred) { attacker.DoHarmful(defender); AOS.Damage(defender, attacker, Utility.RandomMinMax(16, 20), 100, 0, 0, 0, 0); return(true); } else { return(false); } } else { return(true); } }
public void Target(BaseRanged weapon) { if (!Caster.CanSee(weapon)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (!Caster.CanBeginAction(typeof(AncientEnchantSpell))) { Caster.SendLocalizedMessage(1005559); // This spell is already in effect. } else if (CheckSequence()) { if (Caster.BeginAction(typeof(AncientEnchantSpell))) { if (this.Scroll != null) { Scroll.Consume(); } m_Hue = weapon.Hue; m_Name = weapon.Name; weapon.Name = "" + m_Name + " [enchanted]"; weapon.Hue = 1366; weapon.Attributes.WeaponDamage += 10; weapon.Attributes.AttackChance += 1000; Caster.PlaySound(0x20C); Caster.PlaySound(0x145); Caster.FixedParticles(0x3779, 1, 30, 9964, 3, 3, EffectLayer.Waist); IEntity from = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z), Caster.Map); IEntity to = new Entity(Serial.Zero, new Point3D(Caster.X, Caster.Y, Caster.Z + 50), Caster.Map); Effects.SendMovingParticles(from, to, 0x13B1, 1, 0, false, false, 33, 3, 9501, 1, 0, EffectLayer.Head, 0x100); StopTimer(Caster); Timer t = new InternalTimer(Caster, weapon, m_Hue, m_Name); m_Timers[Caster] = t; t.Start(); } else if (!Caster.CanBeginAction(typeof(AncientEnchantSpell))) { DoFizzle(); } } FinishSequence(); }
public override void AlterMeleeDamageFrom(Mobile from, ref int damage) { if (from is PlayerMobile && DoWeaponsDoMoreDamage > 0) { BaseSword bs = from.FindItemOnLayer(Layer.OneHanded) as BaseSword; if (bs != null) { damage *= DoWeaponsDoMoreDamage; } BasePoleArm BPA = from.FindItemOnLayer(Layer.TwoHanded) as BasePoleArm; if (BPA != null) { damage *= DoWeaponsDoMoreDamage; } BaseSpear BP = from.FindItemOnLayer(Layer.TwoHanded) as BaseSpear; if (BP != null) { damage *= DoWeaponsDoMoreDamage; } BaseAxe BA = from.FindItemOnLayer(Layer.TwoHanded) as BaseAxe; if (BA != null) { damage *= DoWeaponsDoMoreDamage; } BaseRanged BR = from.FindItemOnLayer(Layer.TwoHanded) as BaseRanged; if (BR != null) { damage *= DoWeaponsDoMoreDamage; } } if (from is BaseCreature) { BaseCreature bc = (BaseCreature)from; if (bc.Controlled || bc.Summoned || bc.BardTarget == this) { damage /= DoLessDamageFromPets; } } }
public InternalTimer(Mobile owner, BaseRanged weapon, int m_Hue, string m_WeaponName) : base(TimeSpan.FromSeconds(0)) { m_Owner = owner; m_Weapon = weapon; m_weaponhue = m_Hue; m_Name = m_WeaponName; int val = (int)owner.Skills[SkillName.Magery].Value; if (val > 100) { val = 100; } Delay = TimeSpan.FromSeconds(val); Priority = TimerPriority.TwoFiftyMS; }
public override bool Validate(Mobile from) { if (from.Hidden && from.AllowedStealthSteps > 0) { from.SendLocalizedMessage(1063127); // You cannot use this ability while in stealth mode. return(false); } BaseRanged ranged = from.Weapon as BaseRanged; if (ranged != null) { from.SendLocalizedMessage(1075858); // You can only use this with melee attacks. return(false); } return(base.Validate(from)); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { /* case 2: * { * DefaultMaxLevel = reader.ReadInt(); * MaxLevelsCap = reader.ReadInt(); * EnableExpCap = reader.ReadBool(); * DisplayExpProp = reader.ReadBool(); * PointsPerLevel = reader.ReadInt(); * DoubleArtifactCost = reader.ReadBool(); * BlacksmithOnly = reader.ReadBool(); * BlacksmithSkillRequired = reader.ReadDouble(); * RewardBlacksmith = reader.ReadBool(); * BlacksmithRewardAmt = reader.ReadInt(); * m_Experience = reader.ReadInt(); * m_Level = reader.ReadInt(); * m_Points = reader.ReadInt(); * m_MaxLevel = reader.ReadInt(); * goto case 1; * }*/ case 1: { m_Serial = reader.ReadInt(); m_Ranged = reader.ReadItem() as BaseRanged; goto case 0; } case 0: { m_HasBowString = reader.ReadBool(); m_Strength = ( StringStrength )reader.ReadEncodedInt(); m_PullWeight = ( PoundsPerPull )reader.ReadEncodedInt(); m_ArrowType = ( ArrowType )reader.ReadEncodedInt(); m_BoltType = ( BoltType )reader.ReadEncodedInt(); break; } } }
public virtual void CheckStringCondition(Mobile from, BaseRanged ranged) { BaseRangedModule module = ranged.BaseRangedModule; if (module.HasBowString && module.StringStrengthSelection == StringStrength.NoString) { module.HasBowString = false; } if (!module.HasBowString) { if (module.StringStrengthSelection == StringStrength.NoString) { module.HasBowString = false; //from.SendMessage( "You need a string to use this bow. See a local fletcher to apply the string." ); } else { module.StringStrengthSelection = StringStrength.NoString; } } }
public static void CheckSkill(Mobile from, BaseRanged rang, BaseRangedModule module) { double fletching = from.Skills[SkillName.Fletching].Base; if (LucidNagual.DataCenter.DebugAdvancedArchery) { Console.WriteLine("AA Check: Fletching over 100."); } int skillCode; if (fletching > 100.0 && fletching < 105.0) { Conjunction(module, 0, 1); } else if (fletching > 104.9 && fletching < 112) { Conjunction(module, 0, 2); } else if (fletching > 111.9 && fletching < 119.9) { Conjunction(module, 0, 3); } else if (fletching > 119.9) { Conjunction(module, 0, 4); } else { return; } }
protected override void OnTarget(Mobile from, object targeted) { Console.WriteLine("Code making it to OnTarget."); if (targeted is Item && targeted is BaseRanged) { Console.WriteLine("Code making it to BaseStringer check."); BaseRanged ranged = targeted as BaseRanged; BaseRangedModule module = ranged.BaseRangedModule; if (module.HasBowString) { MoreBaseRanged.CutString(from, ranged); } else { from.SendMessage("This bow is not strung. Using scissors on it is a waste of time."); } } else { from.SendMessage("That is not a bow."); } }
public StringerTarget(BaseRanged ranged) : base(1, false, TargetFlags.None) { it_Ranged = ranged; }
public CrossbowTarget(BaseRanged ranged) : base(1, false, TargetFlags.None) { it_Ranged = ranged; }
public InternalTarget(BaseRangedModule mod, BaseRanged ranged) : base(1, false, TargetFlags.None) { br_mod = mod; m_Ranged = ranged; }
public virtual bool CheckStringDamage(Mobile attacker, Mobile defender, BaseRanged ranged) { BaseRangedModule module = ranged.BaseRangedModule; if (module.HasBowString) { if (module.StringStrengthSelection == StringStrength.VeryWeak) { if (.05 > Utility.Random(100)) { BonusDamage(attacker, defender, ranged); return(true); } if (.10 > Utility.Random(1000)) //1 in a 100 chances of breaking. { module.HasBowString = false; module.StringStrengthSelection = StringStrength.NoString; attacker.SendMessage("Your string just broke."); } return(true); } else if (module.StringStrengthSelection == StringStrength.Weak) { if (.10 > Utility.Random(100)) { BonusDamage(attacker, defender, ranged); return(true); } if (.09 > Utility.Random(1000)) //1 in a 110 chances of breaking. { module.HasBowString = false; module.StringStrengthSelection = StringStrength.NoString; attacker.SendMessage("Your string just broke."); } return(true); } else if (module.StringStrengthSelection == StringStrength.Sturdy) { if (.15 > Utility.Random(100)) { BonusDamage(attacker, defender, ranged); return(true); } if (.08 > Utility.Random(1000)) //1 in a 125 chances of breaking. { module.HasBowString = false; module.StringStrengthSelection = StringStrength.NoString; attacker.SendMessage("Your string just broke."); } return(true); } else if (module.StringStrengthSelection == StringStrength.Strong) { if (.20 > Utility.Random(100)) { BonusDamage(attacker, defender, ranged); return(true); } if (.05 > Utility.Random(1000)) //1 in a 200 chances of breaking. { module.HasBowString = false; module.StringStrengthSelection = StringStrength.NoString; attacker.SendMessage("Your string just broke."); } } else if (module.StringStrengthSelection == StringStrength.Dependable) { if (.25 > Utility.Random(100)) { BonusDamage(attacker, defender, ranged); return(true); } if (.03 > Utility.Random(1000)) //1 in a 333 chances of breaking. { module.HasBowString = false; module.StringStrengthSelection = StringStrength.NoString; attacker.SendMessage("Your string just broke."); } return(true); } else if (module.StringStrengthSelection == StringStrength.Indestructable) { if (.33 > Utility.Random(100)) { BonusDamage(attacker, defender, ranged); return(true); } //No chance of breaking. return(true); } else { return(false); } } else { return(false); } return(false); }
public static void FillBank(Mobile m) { BankBox bank = m.BankBox; for (int i = 0; i < PowerScroll.Skills.Count; ++i) { m.Skills[PowerScroll.Skills[i]].Cap = 120.0; } m.StatCap = 250; Container cont; // Begin box of money cont = new WoodenBox(); cont.ItemID = 0xE7D; cont.Hue = 0x489; PlaceItemIn(cont, 16, 51, new BankCheck(500000)); PlaceItemIn(cont, 28, 51, new BankCheck(250000)); PlaceItemIn(cont, 40, 51, new BankCheck(100000)); PlaceItemIn(cont, 52, 51, new BankCheck(100000)); PlaceItemIn(cont, 64, 51, new BankCheck(50000)); PlaceItemIn(cont, 34, 115, new Gold(60000)); PlaceItemIn(bank, 18, 169, cont); // End box of money // Begin bag of potion kegs cont = new Backpack(); cont.Name = "Various Potion Kegs"; PlaceItemIn(cont, 45, 149, MakePotionKeg(PotionEffect.CureGreater, 0x2D)); PlaceItemIn(cont, 69, 149, MakePotionKeg(PotionEffect.HealGreater, 0x499)); PlaceItemIn(cont, 93, 149, MakePotionKeg(PotionEffect.PoisonDeadly, 0x46)); PlaceItemIn(cont, 117, 149, MakePotionKeg(PotionEffect.RefreshTotal, 0x21)); PlaceItemIn(cont, 141, 149, MakePotionKeg(PotionEffect.ExplosionGreater, 0x74)); PlaceItemIn(cont, 93, 82, new Bottle(1000)); PlaceItemIn(bank, 53, 169, cont); // End bag of potion kegs // Begin bag of tools cont = new Bag(); cont.Name = "Tool Bag"; PlaceItemIn(cont, 30, 35, new TinkerTools(1000)); PlaceItemIn(cont, 60, 35, new HousePlacementTool()); PlaceItemIn(cont, 90, 35, new DovetailSaw(1000)); PlaceItemIn(cont, 30, 68, new Scissors()); PlaceItemIn(cont, 45, 68, new MortarPestle(1000)); PlaceItemIn(cont, 75, 68, new ScribesPen(1000)); PlaceItemIn(cont, 90, 68, new SmithHammer(1000)); PlaceItemIn(cont, 30, 118, new TwoHandedAxe()); PlaceItemIn(cont, 60, 118, new FletcherTools(1000)); PlaceItemIn(cont, 90, 118, new SewingKit(1000)); PlaceItemIn(cont, 36, 51, new RunicHammer(CraftResource.DullCopper, 1000)); PlaceItemIn(cont, 42, 51, new RunicHammer(CraftResource.ShadowIron, 1000)); PlaceItemIn(cont, 48, 51, new RunicHammer(CraftResource.Copper, 1000)); PlaceItemIn(cont, 54, 51, new RunicHammer(CraftResource.Bronze, 1000)); PlaceItemIn(cont, 61, 51, new RunicHammer(CraftResource.Gold, 1000)); PlaceItemIn(cont, 67, 51, new RunicHammer(CraftResource.Agapite, 1000)); PlaceItemIn(cont, 73, 51, new RunicHammer(CraftResource.Verite, 1000)); PlaceItemIn(cont, 79, 51, new RunicHammer(CraftResource.Valorite, 1000)); PlaceItemIn(cont, 36, 55, new RunicSewingKit(CraftResource.SpinedLeather, 1000)); PlaceItemIn(cont, 42, 55, new RunicSewingKit(CraftResource.HornedLeather, 1000)); PlaceItemIn(cont, 48, 55, new RunicSewingKit(CraftResource.BarbedLeather, 1000)); PlaceItemIn(bank, 118, 169, cont); // End bag of tools // Begin bag of archery ammo cont = new Bag(); cont.Name = "Bag Of Archery Ammo"; PlaceItemIn(cont, 48, 76, new Arrow(5000)); PlaceItemIn(cont, 72, 76, new Bolt(5000)); PlaceItemIn(bank, 118, 124, cont); // End bag of archery ammo // Begin bag of treasure maps cont = new Bag(); cont.Name = "Bag Of Treasure Maps"; PlaceItemIn(cont, 30, 35, new TreasureMap(1, Map.Trammel)); PlaceItemIn(cont, 45, 35, new TreasureMap(2, Map.Trammel)); PlaceItemIn(cont, 60, 35, new TreasureMap(3, Map.Trammel)); PlaceItemIn(cont, 75, 35, new TreasureMap(4, Map.Trammel)); PlaceItemIn(cont, 90, 35, new TreasureMap(5, Map.Trammel)); PlaceItemIn(cont, 90, 35, new TreasureMap(6, Map.Trammel)); PlaceItemIn(cont, 30, 50, new TreasureMap(1, Map.Trammel)); PlaceItemIn(cont, 45, 50, new TreasureMap(2, Map.Trammel)); PlaceItemIn(cont, 60, 50, new TreasureMap(3, Map.Trammel)); PlaceItemIn(cont, 75, 50, new TreasureMap(4, Map.Trammel)); PlaceItemIn(cont, 90, 50, new TreasureMap(5, Map.Trammel)); PlaceItemIn(cont, 90, 50, new TreasureMap(6, Map.Trammel)); PlaceItemIn(cont, 55, 100, new Lockpick(30)); PlaceItemIn(cont, 60, 100, new Pickaxe()); PlaceItemIn(bank, 98, 124, cont); // End bag of treasure maps // Begin bag of raw materials cont = new Bag(); cont.Hue = 0x835; cont.Name = "Raw Materials Bag"; PlaceItemIn(cont, 92, 60, new BarbedLeather(5000)); PlaceItemIn(cont, 92, 68, new HornedLeather(5000)); PlaceItemIn(cont, 92, 76, new SpinedLeather(5000)); PlaceItemIn(cont, 92, 84, new Leather(5000)); PlaceItemIn(cont, 30, 118, new Cloth(5000)); PlaceItemIn(cont, 30, 84, new Board(5000)); PlaceItemIn(cont, 57, 80, new BlankScroll(500)); PlaceItemIn(cont, 30, 35, new DullCopperIngot(5000)); PlaceItemIn(cont, 37, 35, new ShadowIronIngot(5000)); PlaceItemIn(cont, 44, 35, new CopperIngot(5000)); PlaceItemIn(cont, 51, 35, new BronzeIngot(5000)); PlaceItemIn(cont, 58, 35, new GoldIngot(5000)); PlaceItemIn(cont, 65, 35, new AgapiteIngot(5000)); PlaceItemIn(cont, 72, 35, new VeriteIngot(5000)); PlaceItemIn(cont, 79, 35, new ValoriteIngot(5000)); PlaceItemIn(cont, 86, 35, new IronIngot(5000)); PlaceItemIn(cont, 30, 59, new RedScales(5000)); PlaceItemIn(cont, 36, 59, new YellowScales(5000)); PlaceItemIn(cont, 42, 59, new BlackScales(5000)); PlaceItemIn(cont, 48, 59, new GreenScales(5000)); PlaceItemIn(cont, 54, 59, new WhiteScales(5000)); PlaceItemIn(cont, 60, 59, new BlueScales(5000)); PlaceItemIn(bank, 98, 169, cont); // End bag of raw materials // Begin bag of spell casting stuff cont = new Backpack(); cont.Hue = 0x480; cont.Name = "Spell Casting Stuff"; PlaceItemIn(cont, 45, 105, new Spellbook(UInt64.MaxValue)); PlaceItemIn(cont, 65, 105, new NecromancerSpellbook((UInt64)0xFFFF)); PlaceItemIn(cont, 85, 105, new BookOfChivalry((UInt64)0x3FF)); PlaceItemIn(cont, 105, 105, new BookOfBushido()); //Default ctor = full PlaceItemIn(cont, 125, 105, new BookOfNinjitsu()); //Default ctor = full Runebook runebook = new Runebook(10); runebook.CurCharges = runebook.MaxCharges; PlaceItemIn(cont, 145, 105, runebook); Item toHue = new BagOfAllReagents(150); toHue.Hue = 0x2D; PlaceItemIn(cont, 45, 150, toHue); toHue = new BagOfNecroReagents(150); toHue.Hue = 0x488; PlaceItemIn(cont, 65, 150, toHue); PlaceItemIn(cont, 140, 150, new BagOfAllReagents(500)); for (int i = 0; i < 9; ++i) { PlaceItemIn(cont, 45 + (i * 10), 75, new RecallRune()); } PlaceItemIn(cont, 141, 74, new FireHorn()); PlaceItemIn(bank, 78, 169, cont); // End bag of spell casting stuff // Begin bag of ethereals cont = new Backpack(); cont.Hue = 0x490; cont.Name = "Bag Of Ethy's!"; PlaceItemIn(cont, 45, 66, new EtherealHorse()); PlaceItemIn(cont, 69, 82, new EtherealOstard()); PlaceItemIn(cont, 93, 99, new EtherealLlama()); PlaceItemIn(cont, 117, 115, new EtherealKirin()); PlaceItemIn(cont, 45, 132, new EtherealUnicorn()); PlaceItemIn(cont, 69, 66, new EtherealRidgeback()); PlaceItemIn(cont, 93, 82, new EtherealSwampDragon()); PlaceItemIn(cont, 117, 99, new EtherealBeetle()); PlaceItemIn(bank, 38, 124, cont); // End bag of ethereals // Begin first bag of artifacts cont = new Backpack(); cont.Hue = 0x48F; cont.Name = "Bag of Artifacts"; PlaceItemIn(cont, 45, 66, new TitansHammer()); PlaceItemIn(cont, 69, 82, new InquisitorsResolution()); PlaceItemIn(cont, 93, 99, new BladeOfTheRighteous()); PlaceItemIn(cont, 117, 115, new ZyronicClaw()); PlaceItemIn(bank, 58, 124, cont); // End first bag of artifacts // Begin second bag of artifacts cont = new Backpack(); cont.Hue = 0x48F; cont.Name = "Bag of Artifacts"; PlaceItemIn(cont, 45, 66, new GauntletsOfNobility()); PlaceItemIn(cont, 69, 82, new MidnightBracers()); PlaceItemIn(cont, 93, 99, new VoiceOfTheFallenKing()); PlaceItemIn(cont, 117, 115, new OrnateCrownOfTheHarrower()); PlaceItemIn(cont, 45, 132, new HelmOfInsight()); PlaceItemIn(cont, 69, 66, new HolyKnightsBreastplate()); PlaceItemIn(cont, 93, 82, new ArmorOfFortune()); PlaceItemIn(cont, 117, 99, new TunicOfFire()); PlaceItemIn(cont, 45, 115, new LeggingsOfBane()); PlaceItemIn(cont, 69, 132, new ArcaneShield()); PlaceItemIn(cont, 93, 66, new Aegis()); PlaceItemIn(cont, 117, 82, new RingOfTheVile()); PlaceItemIn(cont, 45, 99, new BraceletOfHealth()); PlaceItemIn(cont, 69, 115, new RingOfTheElements()); PlaceItemIn(cont, 93, 132, new OrnamentOfTheMagician()); PlaceItemIn(cont, 117, 66, new DivineCountenance()); PlaceItemIn(cont, 45, 82, new JackalsCollar()); PlaceItemIn(cont, 69, 99, new HuntersHeaddress()); PlaceItemIn(cont, 93, 115, new HatOfTheMagi()); PlaceItemIn(cont, 117, 132, new ShadowDancerLeggings()); PlaceItemIn(cont, 45, 66, new SpiritOfTheTotem()); PlaceItemIn(cont, 69, 82, new BladeOfInsanity()); PlaceItemIn(cont, 93, 99, new AxeOfTheHeavens()); PlaceItemIn(cont, 117, 115, new TheBeserkersMaul()); PlaceItemIn(cont, 45, 132, new Frostbringer()); PlaceItemIn(cont, 69, 66, new BreathOfTheDead()); PlaceItemIn(cont, 93, 82, new TheDragonSlayer()); PlaceItemIn(cont, 117, 99, new BoneCrusher()); PlaceItemIn(cont, 45, 115, new StaffOfTheMagi()); PlaceItemIn(cont, 69, 132, new SerpentsFang()); PlaceItemIn(cont, 93, 66, new LegacyOfTheDreadLord()); PlaceItemIn(cont, 117, 82, new TheTaskmaster()); PlaceItemIn(cont, 45, 99, new TheDryadBow()); PlaceItemIn(bank, 78, 124, cont); // End second bag of artifacts // Begin bag of minor artifacts cont = new Backpack(); cont.Hue = 0x48F; cont.Name = "Bag of Minor Artifacts"; PlaceItemIn(cont, 45, 66, new LunaLance()); PlaceItemIn(cont, 69, 82, new VioletCourage()); PlaceItemIn(cont, 93, 99, new CavortingClub()); PlaceItemIn(cont, 117, 115, new CaptainQuacklebushsCutlass()); PlaceItemIn(cont, 45, 132, new NightsKiss()); PlaceItemIn(cont, 69, 66, new ShipModelOfTheHMSCape()); PlaceItemIn(cont, 93, 82, new AdmiralsHeartyRum()); PlaceItemIn(cont, 117, 99, new CandelabraOfSouls()); PlaceItemIn(cont, 45, 115, new IolosLute()); PlaceItemIn(cont, 69, 132, new GwennosHarp()); PlaceItemIn(cont, 93, 66, new ArcticDeathDealer()); PlaceItemIn(cont, 117, 82, new EnchantedTitanLegBone()); PlaceItemIn(cont, 45, 99, new NoxRangersHeavyCrossbow()); PlaceItemIn(cont, 69, 115, new BlazeOfDeath()); PlaceItemIn(cont, 93, 132, new DreadPirateHat()); PlaceItemIn(cont, 117, 66, new BurglarsBandana()); PlaceItemIn(cont, 45, 82, new GoldBricks()); PlaceItemIn(cont, 69, 99, new AlchemistsBauble()); PlaceItemIn(cont, 93, 115, new PhillipsWoodenSteed()); PlaceItemIn(cont, 117, 132, new PolarBearMask()); PlaceItemIn(cont, 45, 66, new BowOfTheJukaKing()); PlaceItemIn(cont, 69, 82, new GlovesOfThePugilist()); PlaceItemIn(cont, 93, 99, new OrcishVisage()); PlaceItemIn(cont, 117, 115, new StaffOfPower()); PlaceItemIn(cont, 45, 132, new ShieldOfInvulnerability()); PlaceItemIn(cont, 69, 66, new HeartOfTheLion()); PlaceItemIn(cont, 93, 82, new ColdBlood()); PlaceItemIn(cont, 117, 99, new GhostShipAnchor()); PlaceItemIn(cont, 45, 115, new SeahorseStatuette()); PlaceItemIn(cont, 69, 132, new WrathOfTheDryad()); PlaceItemIn(cont, 93, 66, new PixieSwatter()); for (int i = 0; i < 10; i++) { PlaceItemIn(cont, 117, 128, new MessageInABottle(Utility.RandomBool() ? Map.Trammel : Map.Felucca, 4)); } PlaceItemIn(bank, 18, 124, cont); cont = new Bag(); cont.Hue = 0x501; cont.Name = "Tokuno Minor Artifacts"; PlaceItemIn(cont, 42, 70, new Exiler()); PlaceItemIn(cont, 38, 53, new HanzosBow()); PlaceItemIn(cont, 45, 40, new TheDestroyer()); PlaceItemIn(cont, 92, 80, new DragonNunchaku()); PlaceItemIn(cont, 42, 56, new PeasantsBokuto()); PlaceItemIn(cont, 44, 71, new TomeOfEnlightenment()); PlaceItemIn(cont, 35, 35, new ChestOfHeirlooms()); PlaceItemIn(cont, 29, 0, new HonorableSwords()); PlaceItemIn(cont, 49, 85, new AncientUrn()); PlaceItemIn(cont, 51, 58, new FluteOfRenewal()); PlaceItemIn(cont, 70, 51, new PigmentsOfTokuno()); PlaceItemIn(cont, 40, 79, new AncientSamuraiDo()); PlaceItemIn(cont, 51, 61, new LegsOfStability()); PlaceItemIn(cont, 88, 78, new GlovesOfTheSun()); PlaceItemIn(cont, 55, 62, new AncientFarmersKasa()); PlaceItemIn(cont, 55, 83, new ArmsOfTacticalExcellence()); PlaceItemIn(cont, 50, 85, new DaimyosHelm()); PlaceItemIn(cont, 52, 78, new BlackLotusHood()); PlaceItemIn(cont, 52, 79, new DemonForks()); PlaceItemIn(cont, 33, 49, new PilferedDancerFans()); PlaceItemIn(bank, 58, 124, cont); cont = new Bag(); cont.Name = "Bag of Bows"; PlaceItemIn(cont, 31, 84, new Bow()); PlaceItemIn(cont, 78, 74, new CompositeBow()); PlaceItemIn(cont, 53, 71, new Crossbow()); PlaceItemIn(cont, 56, 39, new HeavyCrossbow()); PlaceItemIn(cont, 82, 72, new RepeatingCrossbow()); PlaceItemIn(cont, 49, 45, new Yumi()); for (int i = 0; i < cont.Items.Count; i++) { BaseRanged bow = cont.Items[i] as BaseRanged; if (bow != null) { bow.Attributes.WeaponSpeed = 35; bow.Attributes.WeaponDamage = 35; } } PlaceItemIn(bank, 108, 135, cont); }
protected override void OnTarget(Mobile from, object targeted) { if (LucidNagual.DataCenter.DebugAdvancedArchery) { Console.WriteLine("Code making it to OnTarget."); } BaseRanged rang = it_Ranged as BaseRanged; BaseRangedModule module = rang.BaseRangedModule; if (targeted is Item && targeted is BaseStringer) { if (LucidNagual.DataCenter.DebugAdvancedArchery) { Console.WriteLine("Code making it to BaseStringer check."); } Item item = ( Item )targeted; if (item == null) { from.SendMessage("You have decided to not apply the string."); } string errorMsg = "This bow already contains a string."; if (MoreBaseRanged.CheckForString(from, errorMsg, rang) == false) { return; } if (LucidNagual.DataCenter.DebugAdvancedArchery) { Console.WriteLine("Code making it passed string check."); } double fletching = from.Skills[SkillName.Fletching].Base; if (fletching > 100) { if (LucidNagual.DataCenter.DebugAdvancedArchery) { Console.WriteLine("AA Check: Code making it passed gm fletching check."); } if (item.GetType() == typeof(LinenThreadStringer)) { Conjunction(module, 1, 0); CheckSkill(from, rang, module); module.HasBowString = true; item.Delete(); rang.InvalidateProperties(); } if (item.GetType() == typeof(CottonStringer)) { Conjunction(module, 2, 0); CheckSkill(from, rang, module); module.HasBowString = true; item.Delete(); rang.InvalidateProperties(); } if (item.GetType() == typeof(SilkStringer)) { Conjunction(module, 3, 0); CheckSkill(from, rang, module); module.HasBowString = true; item.Delete(); rang.InvalidateProperties(); } if (item.GetType() == typeof(HorseHairStringer)) { Conjunction(module, 4, 0); CheckSkill(from, rang, module); module.HasBowString = true; item.Delete(); rang.InvalidateProperties(); } if (item.GetType() == typeof(HempStringer)) { Conjunction(module, 5, 0); CheckSkill(from, rang, module); module.HasBowString = true; item.Delete(); rang.InvalidateProperties(); } if (item.GetType() == typeof(AngelHairStringer)) { Conjunction(module, 6, 0); CheckSkill(from, rang, module); module.HasBowString = true; item.Delete(); rang.InvalidateProperties(); } } if (fletching < 100) { from.SendMessage("Only a grandmaster bowcrafter can modify this weapon."); return; } if (LucidNagual.DataCenter.DebugAdvancedArchery) { Console.WriteLine("Code making it passed modification check."); } } else { from.SendMessage("You can only target a bow stringer."); } }