Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Server.Items;
- using System;
- using System.Collections.Generic;
- namespace Server.SurvivalUO.Mobiles.Quest.Bartok
- {
- public class FandaghRing : Server.Items.SilverRing
- {
- public override bool IsArtifact { get { return true; } }
- public FandaghRing() : base()
- {
- this.Attributes.BonusStr = 8;
- this.Attributes.WeaponDamage = 15;
- this.Attributes.RegenHits = 5;
- }
- public override string DefaultName
- {
- get
- {
- return "Fandagh's Ring";
- }
- }
- public FandaghRing(Serial serial) : base(serial) { }
- public override void Serialize(GenericWriter writer)
- {
- base.Serialize(writer);
- writer.Write((int)0); // version
- }
- public override void Deserialize(GenericReader reader)
- {
- base.Deserialize(reader);
- int version = reader.ReadInt();
- }
- }
- public class Fandagh : Server.Mobiles.OrcBrute
- {
- private bool m_Stunning;
- [Constructable]
- public Fandagh() : base()
- {
- this.SetHits(1526, 1600);
- this.Hue = 133;
- this.Name = "Fandagh";
- this.SetSkill(SkillName.MagicResist, 200, 200.0);
- this.SetResistance(ResistanceType.Physical, 60, 60);
- this.SetResistance(ResistanceType.Fire, 85, 85);
- this.SetResistance(ResistanceType.Cold, 85, 85);
- this.SetResistance(ResistanceType.Poison, 85, 85);
- this.SetResistance(ResistanceType.Energy, 85, 85);
- }
- public Fandagh(Serial serial) : base(serial) { }
- public override bool ReduceSpeedWithDamage
- {
- get
- {
- return false;
- }
- }
- public override bool IsScaryToPets
- {
- get
- {
- return true;
- }
- }
- public override bool AutoDispel
- {
- get
- {
- return !this.Controlled;
- }
- }
- public override bool BleedImmune
- {
- get
- {
- return true;
- }
- }
- public override bool BardImmune
- {
- get
- {
- return !Core.AOS || this.Controlled;
- }
- }
- public override Poison PoisonImmune
- {
- get
- {
- return Poison.Lethal;
- }
- }
- public override void OnGaveMeleeAttack(Mobile defender)
- {
- base.OnGaveMeleeAttack(defender);
- if (!this.m_Stunning && 0.3 > Utility.RandomDouble())
- {
- this.m_Stunning = true;
- defender.Animate(21, 6, 1, true, false, 0);
- this.PlaySound(0xEE);
- defender.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, false, "You have been stunned by a colossal blow!");
- BaseWeapon weapon = this.Weapon as BaseWeapon;
- if (weapon != null)
- weapon.OnHit(this, defender);
- if (defender.Alive)
- {
- defender.Frozen = true;
- Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerStateCallback(Recover_Callback), defender);
- }
- }
- }
- private void Recover_Callback(object state)
- {
- Mobile defender = state as Mobile;
- if (defender != null)
- {
- defender.Frozen = false;
- defender.Combatant = null;
- defender.LocalOverheadMessage(Network.MessageType.Regular, 0x3B2, false, "You recover your senses.");
- }
- this.m_Stunning = false;
- }
- public override void GenerateLoot()
- {
- this.AddLoot(LootPack.FilthyRich);
- var random = new Random();
- if (random.NextDouble() > 0.95)
- {
- FandaghRing item = new FandaghRing();
- this.Backpack.AddItem(item);
- }
- }
- public override void OnDamage(int amount, Mobile from, bool willKill)
- {
- if (new Random().NextDouble() > 0.8)
- {
- SpawnOrcs();
- }
- base.OnDamage(amount, from, willKill);
- }
- private void SpawnOrcs()
- {
- Map map = this.Map;
- int noOrcs = new Random().Next(3, 4);
- if (map != null)
- {
- for (int i = 0; i < noOrcs; i += 1)
- {
- double rx = 0.5;
- double ry = 0.5;
- int dist = 0;
- bool ok = false;
- int x = 0, y = 0, z = 0;
- while (!ok && dist < 10)
- {
- int rdist = 10 + dist;
- x = this.X + (int)(rx * rdist);
- y = this.Y + (int)(ry * rdist);
- z = map.GetAverageZ(x, y);
- if (!(ok = map.CanFit(x, y, this.Z, 16, false, false)))
- ok = map.CanFit(x, y, z, 16, false, false);
- if (dist >= 0)
- dist = -(dist + 1);
- else
- dist = -(dist - 1);
- }
- if (!ok)
- continue;
- Server.Mobiles.OrcishMage spawn = new Server.Mobiles.OrcishMage();
- spawn.Team = this.Team;
- spawn.Summoned = true;
- spawn.SummonMaster = this;
- spawn.MoveToWorld(new Point3D(x, y, z), map);
- }
- }
- }
- public override void Serialize(GenericWriter writer)
- {
- base.Serialize(writer);
- writer.Write((int)0); // version
- }
- public override void Deserialize(GenericReader reader)
- {
- base.Deserialize(reader);
- int version = reader.ReadInt();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement