public override void OnDoubleClick(Mobile from) { //STARTMOD: Teiravon if (!from.CanBeginAction(typeof(BattleNet))) { from.SendMessage("You cannot do this yet."); } if (from is TeiravonMobile) { TeiravonMobile m_Player = (TeiravonMobile)from; if ((m_Player.IsShapeshifter() || m_Player.IsForester()) && (m_Player.Shapeshifted || m_Player.IsShifted())) { m_Player.SendMessage("You cannot use nets while shapeshifted."); return; } } if (IsChildOf(from.Backpack)) { from.SendMessage("Who is your target?"); from.BeginTarget(-1, true, TargetFlags.None, new TargetCallback(OnTarget)); } else { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } }
private static void Shapeshift_OnCommand(CommandEventArgs e) { TeiravonMobile m_Player = (TeiravonMobile)e.Mobile; if (!m_Player.HasFeat(TeiravonMobile.Feats.WildShape)) { m_Player.SendMessage(Teiravon.Colors.FeatMessageColor, Teiravon.Messages.NoAbility); } else if (m_Player.Mounted) { m_Player.SendMessage("You can't do this while mounted."); } else if (m_Player.IsShapeshifter() || m_Player.IsForester()) { m_Player.SendGump(new NewShapeshiftGump(m_Player)); } else { m_Player.SendMessage("Only shapeshifters/foresters can do that. "); } }
public override void OnDoubleClick(Mobile from) { if (!Movable || !from.CanBeginAction(typeof(BasePotion))) { return; } if (from.InRange(this.GetWorldLocation(), 1)) { //STARTMOD: Teiravon if (from is TeiravonMobile) { TeiravonMobile m_Player = (TeiravonMobile)from; if ((m_Player.IsShapeshifter() || m_Player.IsForester()) && (m_Player.Shapeshifted || m_Player.IsShifted())) { m_Player.SendMessage("You cannot use potions while shapeshifted."); return; } } //ENDMOD: Teiravon if (!RequireFreeHand || HasFreeHand(from)) { Drink(from); } else { from.SendLocalizedMessage(502172); // You must have a free hand to drink a potion. } } else { from.SendLocalizedMessage(502138); // That is too far away for you to use } }
public void Target(Mobile m) { if (!Caster.CanSee(m)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(m)) { SpellHelper.Turn(Caster, m); SpellHelper.CheckReflect((int)this.Circle, Caster, ref m); double damage; if (Caster is TeiravonMobile) { TeiravonMobile tav = Caster as TeiravonMobile; ArrayList targets = new ArrayList(); if (tav.IsForester() && tav.HasFeat(TeiravonMobile.Feats.TempestsWrath)) { m.BoltEffect(0); damage = GetNewAosDamage(28, 2, 6, Caster.Player && m.Player); int splash = (int)damage / 3; Engines.PartySystem.Party party = Engines.PartySystem.Party.Get(Caster); try { foreach (Mobile x in m.GetMobilesInRange(3)) { if (party != null && party.Contains(x)) { continue; } if (x.AccessLevel > Caster.AccessLevel) { continue; } if (x is BaseCreature) { if (((BaseCreature)x).ControlMaster == Caster) { continue; } if (((BaseCreature)x).ControlMaster != null) { Mobile v = ((BaseCreature)x).ControlMaster; if (party != null && party.Contains(v)) { continue; } } else { Effects.SendMovingEffect(m, x, 0x379F, 16, 5, true, false); AOS.Damage(x, Caster, splash, 0, 0, 0, 0, 100); } } else if (x != Caster && Caster.HarmfulCheck(x) && x != m) { Effects.SendMovingEffect(m, x, 0x379F, 16, 5, true, false); AOS.Damage(x, Caster, splash, 0, 0, 0, 0, 100); } } } catch { } SpellHelper.Damage(this, m, damage, 0, 0, 0, 0, 100); return; } // Effects.SendLocationEffect(m.Location, m.Map, 0x3789, 18); } if (Core.AOS) { damage = GetNewAosDamage(22, 1, 4, Caster.Player && m.Player); } else { damage = Utility.Random(12, 9); if (CheckResisted(m)) { damage *= 0.75; m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy. } damage *= GetDamageScalar(m); } m.BoltEffect(0); SpellHelper.Damage(this, m, damage, 0, 0, 0, 0, 100); } FinishSequence(); }
public static Chart CompileStatChart() { /* * PieChart chart = new PieChart( "Stat Distribution", "graphs_strdexint_distrib", true ); * * ChartItem strItem = new ChartItem( "Strength", 0 ); * ChartItem dexItem = new ChartItem( "Dexterity", 0 ); * ChartItem intItem = new ChartItem( "Intelligence", 0 ); * * foreach ( Mobile mob in World.Mobiles.Values ) * { * if ( mob.RawStatTotal == mob.StatCap && mob is PlayerMobile ) * { * strItem.Value += mob.RawStr; * dexItem.Value += mob.RawDex; * intItem.Value += mob.RawInt; * } * } * * chart.Items.Add( strItem ); * chart.Items.Add( dexItem ); * chart.Items.Add( intItem ); */ PieChart chart = new PieChart("Class Distribution", "graphs_class_distrib", true); ChartItem fightItem = new ChartItem("Fighters", 0); ChartItem rogueItem = new ChartItem("Rogues", 0); ChartItem mageItem = new ChartItem("Mages", 0); ChartItem clericItem = new ChartItem("Clerics", 0); ChartItem rangerItem = new ChartItem("Rangers", 0); ChartItem druidItem = new ChartItem("Druids", 0); ChartItem barbItem = new ChartItem("Barbarians", 0); ChartItem crafterItem = new ChartItem("Crafters", 0); ChartItem advItem = new ChartItem("Advanced", 0); foreach (Mobile mob in World.Mobiles.Values) { if (mob != null && mob is TeiravonMobile) { TeiravonMobile tav = mob as TeiravonMobile; Account acct = (Account)tav.Account; if ((acct.LastLogin + TimeSpan.FromDays(90.0)) < DateTime.Now) { continue; } if (tav.IsFighter() || tav.IsCavalier() || tav.IsMonk()) { fightItem.Value++; } else if (tav.IsThief() || tav.IsAssassin() || tav.IsBard()) { rogueItem.Value++; } else if (tav.IsMage()) { mageItem.Value++; } else if (tav.IsCleric() || tav.IsDarkCleric()) { clericItem.Value++; } else if (tav.IsArcher() || tav.IsMageSlayer() || tav.IsRanger()) { rangerItem.Value++; } else if (tav.IsForester() || tav.IsShapeshifter()) { druidItem.Value++; } else if (tav.IsBerserker() || tav.IsDragoon()) { barbItem.Value++; } else if (tav.IsCrafter()) { crafterItem.Value++; } else { advItem.Value++; } } } chart.Items.Add(fightItem); chart.Items.Add(rogueItem); chart.Items.Add(mageItem); chart.Items.Add(clericItem); chart.Items.Add(rangerItem); chart.Items.Add(druidItem); chart.Items.Add(barbItem); chart.Items.Add(crafterItem); chart.Items.Add(advItem); return(chart); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { SpellHelper.Turn(Caster, p); if (p is Item) { p = ((Item)p).GetWorldLocation(); } ArrayList targets = new ArrayList(); Map map = Caster.Map; bool playerVsPlayer = false; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 2); foreach (Mobile m in eable) { if (Core.AOS && m == Caster) { continue; } if (SpellHelper.ValidIndirectTarget(Caster, m) && Caster.CanBeHarmful(m, false)) { targets.Add(m); if (m.Player) { playerVsPlayer = true; } } } eable.Free(); } if (targets.Count == 0) { FinishSequence(); return; } double damage = 0; if (Caster is TeiravonMobile) { TeiravonMobile tav = Caster as TeiravonMobile; if (tav.IsForester() && tav.HasFeat(TeiravonMobile.Feats.TempestsWrath)) { damage = GetNewAosDamage(48, 1, 5, Caster.Player && playerVsPlayer); Mobile targ = targets[0] as Mobile; Hashtable litup = new Hashtable(); Timer m_Chain = new ChainBounce(Caster, litup, targ, damage, this); Caster.DoHarmful(targ); m_Chain.Start(); FinishSequence(); return; } else { if (Core.AOS) { damage = GetNewAosDamage(48, 1, 5, Caster.Player && playerVsPlayer); } else { damage = Utility.Random(27, 22); } if (targets.Count > 0) { if (Core.AOS && targets.Count > 1) { damage = (damage * 2) / targets.Count; } else if (!Core.AOS) { damage /= targets.Count; } for (int i = 0; i < targets.Count; ++i) { Mobile m = (Mobile)targets[i]; double toDeal = damage; if (!Core.AOS && CheckResisted(m)) { toDeal *= 0.5; m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy. } Caster.DoHarmful(m); SpellHelper.Damage(this, m, toDeal, 0, 0, 0, 0, 100); m.BoltEffect(0); } } } } else { if (Core.AOS) { damage = GetNewAosDamage(48, 1, 5, Caster.Player && playerVsPlayer); } else { damage = Utility.Random(27, 22); } if (targets.Count > 0) { if (Core.AOS && targets.Count > 1) { damage = (damage * 2) / targets.Count; } else if (!Core.AOS) { damage /= targets.Count; } for (int i = 0; i < targets.Count; ++i) { Mobile m = (Mobile)targets[i]; double toDeal = damage; if (!Core.AOS && CheckResisted(m)) { toDeal *= 0.5; m.SendLocalizedMessage(501783); // You feel yourself resisting magical energy. } Caster.DoHarmful(m); SpellHelper.Damage(this, m, toDeal, 0, 0, 0, 0, 100); m.BoltEffect(0); } } } } FinishSequence(); }