示例#1
0
        protected internal override void DoRead()
        {
            var respawnPoints = Level.NEIGHBOURS8.Select(t => CurUser.pos + t).Where(p => Actor.FindChar(p) == null && (Level.passable[p] || Level.avoid[p])).ToList();

            var nImages = Nimages;

            while (nImages > 0 && respawnPoints.Count > 0)
            {
                var index = pdsharp.utils.Random.Index(respawnPoints);

                var mob = new MirrorImage();
                mob.Duplicate(CurUser);
                GameScene.Add(mob);
                WandOfBlink.Appear(mob, respawnPoints[index]);

                respawnPoints.Remove(index);
                nImages--;
            }

            if (nImages < Nimages)
            {
                SetKnown();
            }

            Sample.Instance.Play(Assets.SND_READ);
            Invisibility.Dispel();

            CurUser.SpendAndNext(TimeToRead);
        }
示例#2
0
        private void Mirage()
        {
            TeiravonMobile caster = (TeiravonMobile)this.ControlMaster;

            if (caster == null)
            {
                caster = (TeiravonMobile)this.SummonMaster;
            }

            if (caster == null)
            {
                return;
            }

            if (!caster.Warmode)
            {
                return;
            }
            MirrorImage.AddClone(caster);

            caster.FixedParticles(0x376A, 1, 14, 0x13B5, EffectLayer.Waist);
            caster.PlaySound(0x594);

            new Clone(caster).MoveToWorld(caster.Location, caster.Map);

            return;
        }
示例#3
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadEncodedInt();

            m_Caster = reader.ReadMobile();
            MirrorImage.AddClone(m_Caster);
        }
示例#4
0
        /*public KonohaClone( Mobile caster): base( AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4 )
         * {
         *      KonohaClone( caster, 1,1, 15.0 );
         * }*/

        public KonohaClone(Mobile caster, int decalageX, int decalageY, double _time) : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4)
        {
            m_Caster = caster;

            m_decalX = decalageX;
            m_decalY = decalageY;

            Body = caster.Body;

            Hue    = caster.Hue;
            Female = caster.Female;

            //Location = caster.Location;

            Name    = caster.Name;
            NameHue = caster.NameHue;

            Title = caster.Title;
            Kills = caster.Kills;

            HairItemID = caster.HairItemID;
            HairHue    = caster.HairHue;

            SpeechHue = caster.SpeechHue;
            EmoteHue  = caster.EmoteHue;

            FacialHairItemID = caster.FacialHairItemID;
            FacialHairHue    = caster.FacialHairHue;

            for (int i = 0; i < caster.Skills.Length; ++i)
            {
                Skills[i].Base = caster.Skills[i].Base;
                Skills[i].Cap  = caster.Skills[i].Cap;
            }

            for (int i = 0; i < caster.Items.Count; i++)
            {
                AddItem(CloneItem(caster.Items[i]));
            }

            Warmode = caster.Warmode;

            Summoned     = true;
            SummonMaster = caster;

            ControlOrder  = OrderType.Stay;
            ControlTarget = caster;

            TimeSpan duration = TimeSpan.FromSeconds(_time);

            new UnsummonTimer(caster, this, duration).Start();
            SummonEnd = DateTime.Now + duration;

            Location = caster.Location;
            Map      = caster.Map;

            MirrorImage.AddClone(m_Caster);
        }
示例#5
0
        public override void Deserialize(IGenericReader reader)
        {
            base.Deserialize(reader);

            var version = reader.ReadEncodedInt();

            m_Caster = reader.ReadEntity <Mobile>();

            MirrorImage.AddClone(m_Caster);
        }
        public void NinjitsuPower()
        {
            if (!m_HasSetSmokeBombs)
            {
                m_HasSetSmokeBombs = true;
                m_SmokeBombs       = Utility.RandomMinMax(3, 5);
            }

            Spell spell = null;

            if (m_Mobile.Hidden)
            {
                GetHiddenNinjaMove();
            }
            else if (0.2 > Utility.RandomDouble())
            {
                if (m_Mobile.Debug)
                {
                    m_Mobile.Say(995, "Casting Mirror Image");
                }

                spell = new MirrorImage(m_Mobile, null);
            }
            else
            {
                GetNinjaMove();
            }

            if (spell != null)
            {
                spell.Cast();
            }

            if (DateTime.Now > m_NextShurikenThrow && m_Mobile.Combatant != null && m_Mobile.InRange(m_Mobile.Combatant, 12))
            {
                if (m_Mobile.Debug)
                {
                    m_Mobile.Say(995, "Throwing a shuriken");
                }

                m_Mobile.Direction = m_Mobile.GetDirectionTo(m_Mobile.Combatant);

                if (m_Mobile.Body.IsHuman)
                {
                    m_Mobile.Animate(m_Mobile.Mounted ? 26 : 9, 7, 1, true, false, 0);
                }

                m_Mobile.PlaySound(0x23A);
                m_Mobile.MovingEffect(m_Mobile.Combatant, 0x27AC, 1, 0, false, false);

                Timer.DelayCall(TimeSpan.FromSeconds(1), new TimerCallback(ShurikenDamage));

                m_NextShurikenThrow = DateTime.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(15, 30));
            }
        }
示例#7
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        MirrorImage mirror = target as MirrorImage;

        EditorGUILayout.Space();
        if (GUILayout.Button("Set Native Size"))
        {
            mirror.SetNativeSize();
        }
    }
示例#8
0
        public override void OnActionCombat()
        {
            if (Utility.Random(50) == 0)
            {
                MirrorImage.AddClone(this);

                new Clone(this).MoveToWorld(this.Location, this.Map);
                FixedParticles(0x3728, 9, 32, 0x13AF, EffectLayer.Waist);
            }
            base.OnActionCombat();
        }
示例#9
0
        public Clone(Mobile caster)
            : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.3, 0.6)
        {
            m_Caster = caster;

            Body = caster.Body;

            Hue    = caster.Hue;
            Female = caster.Female;

            Name    = caster.Name;
            NameHue = caster.NameHue;

            Title = caster.Title;
            Kills = caster.Kills;

            HairItemID = caster.HairItemID;
            HairHue    = caster.HairHue;

            FacialHairItemID = caster.FacialHairItemID;
            FacialHairHue    = caster.FacialHairHue;

            SolidHueOverride = caster.SolidHueOverride;

            for (int i = 0; i < caster.Skills.Length; ++i)
            {
                Skills[i].Base = caster.Skills[i].Base;
                Skills[i].Cap  = caster.Skills[i].Cap;
            }

            foreach (var item in caster.GetEquippedItems())
            {
                AddItem(CloneItem(item));
            }

            Warmode = true;

            Summoned     = true;
            SummonMaster = caster;

            ControlOrder  = OrderType.Follow;
            ControlTarget = caster;

            TimeSpan duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40);

            new UnsummonTimer(caster, this, duration).Start();
            SummonEnd = DateTime.Now + duration;

            MirrorImage.AddClone(m_Caster);
        }
示例#10
0
        public Clone(Mobile caster)
            : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4)
        {
            m_Caster = caster;

            Body = caster.Body;

            Hue    = caster.Hue;
            Female = caster.Female;

            Name    = caster.Name;
            NameHue = caster.NameHue;

            Title = caster.Title;
            Kills = caster.Kills;

            HairItemID = caster.HairItemID;
            HairHue    = caster.HairHue;

            FacialHairItemID = caster.FacialHairItemID;
            FacialHairHue    = caster.FacialHairHue;

            for (int i = 0; i < caster.Skills.Length; ++i)
            {
                Skills[i].Base = caster.Skills[i].Base;
                Skills[i].Cap  = caster.Skills[i].Cap;
            }

            for (int i = 0; i < caster.Items.Count; i++)
            {
                AddItem(CloneItem(caster.Items[i]));
            }

            Warmode = true;

            Summoned     = true;
            SummonMaster = caster;

            ControlOrder  = OrderType.Follow;
            ControlTarget = caster;

            TimeSpan duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40);

            SummonEnd = DateTime.UtcNow + duration;
            TimerRegistry.Register <BaseCreature>("UnsummonTimer", this, duration, c => c.Delete());

            MirrorImage.AddClone(m_Caster);

            IgnoreMobiles = true;
        }
示例#11
0
        public Clone(Mobile caster)
            : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4)
        {
            this.m_Caster = caster;

            this.Body = caster.Body;

            this.Hue    = caster.Hue;
            this.Female = caster.Female;

            this.Name    = caster.Name;
            this.NameHue = caster.NameHue;

            this.Title = caster.Title;
            this.Kills = caster.Kills;

            this.HairItemID = caster.HairItemID;
            this.HairHue    = caster.HairHue;

            this.FacialHairItemID = caster.FacialHairItemID;
            this.FacialHairHue    = caster.FacialHairHue;

            for (int i = 0; i < caster.Skills.Length; ++i)
            {
                this.Skills[i].Base = caster.Skills[i].Base;
                this.Skills[i].Cap  = caster.Skills[i].Cap;
            }

            for (int i = 0; i < caster.Items.Count; i++)
            {
                this.AddItem(this.CloneItem(caster.Items[i]));
            }

            this.Warmode = true;

            this.Summoned     = true;
            this.SummonMaster = caster;

            this.ControlOrder  = OrderType.Follow;
            this.ControlTarget = caster;

            TimeSpan duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40);

            new UnsummonTimer(caster, this, duration).Start();
            this.SummonEnd = DateTime.Now + duration;

            MirrorImage.AddClone(this.m_Caster);
        }
示例#12
0
        public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None)
        {
            m_Caster = caster;

            Body = caster.Body;

            Hue    = caster.Hue;
            Female = caster.Female;

            Name    = caster.Name;
            NameHue = caster.NameHue;

            Title = caster.Title;
            Kills = caster.Kills;

            HairItemID = caster.HairItemID;
            HairHue    = caster.HairHue;

            FacialHairItemID = caster.FacialHairItemID;
            FacialHairHue    = caster.FacialHairHue;

            for (var i = 0; i < caster.Skills.Length; ++i)
            {
                Skills[i].Base = caster.Skills[i].Base;
                Skills[i].Cap  = caster.Skills[i].Cap;
            }

            for (var i = 0; i < caster.Items.Count; i++)
            {
                AddItem(CloneItem(caster.Items[i]));
            }

            Warmode = true;

            Summoned     = true;
            SummonMaster = caster;

            ControlOrder  = OrderType.Follow;
            ControlTarget = caster;

            var duration = TimeSpan.FromSeconds(30 + caster.Skills.Ninjitsu.Fixed / 40);

            new UnsummonTimer(caster, this, duration).Start();
            SummonEnd = Core.Now + duration;

            MirrorImage.AddClone(m_Caster);
        }
        public Clone(Mobile caster)
            : base(AIType.AI_Melee, FightMode.None, 10, 1, 0.2, 0.4)
        {
            m_Caster = caster;

            Body = caster.Body;

            Hue    = caster.Hue;
            Female = caster.Female;

            Name    = caster.Name;
            NameHue = caster.NameHue;

            Fame  = caster.Fame;
            Kills = caster.Kills;



            for (int i = 0; i < caster.Skills.Length; ++i)
            {
                Skills[i].Base = caster.Skills[i].Base;
                Skills[i].Cap  = caster.Skills[i].Cap;
            }

            for (int i = 0; i < caster.Items.Count; i++)
            {
                AddItem(CloneItem((Item)caster.Items[i]));
            }

            AccessLevel = AccessLevel.Seer;

            Warmode = caster.Warmode;

            Summoned     = true;
            SummonMaster = this;

            ControlOrder  = OrderType.Follow;
            ControlTarget = caster;
            ControlSlots  = 1;

            TimeSpan duration = TimeSpan.FromSeconds(45);

            new UnsummonTimer(caster, this, duration).Start();
            SummonEnd = DateTime.Now + duration;

            MirrorImage.AddClone(m_Caster);
        }
示例#14
0
    void Start()
    {
        m_SqrMaxdistance                 = m_maxDistance * m_maxDistance;
        m_ReflectionTexture              = new RenderTexture(m_TextureSize, m_TextureSize, 16);
        m_ReflectionTexture.name         = "__HighQualityReflection" + GetInstanceID();
        m_ReflectionTexture.isPowerOfTwo = true;
        m_ReflectionTexture.filterMode   = FilterMode.Trilinear;
        m_ReflectionTexture.antiAliasing = (int)antiAlias;
        GameObject go = new GameObject("MirrorCam", typeof(Camera), typeof(FlareLayer));

        reflectionCamera = go.GetComponent <Camera> ();
        go.hideFlags     = HideFlags.HideAndDontSave;

        //mysky = go.AddComponent<Skybox> ();
        go.transform.SetParent(normalTrans);
        go.transform.localPosition     = Vector3.zero;
        reflectionCamera.enabled       = false;
        reflectionCamera.targetTexture = m_ReflectionTexture;

        reflectionCamera.cullingMask        = ~(1 << 4) & m_ReflectLayers.value;
        reflectionCamera.layerCullSpherical = enableSelfCullingDistance;
        refT = reflectionCamera.transform;
        if (!enableSelfCullingDistance)
        {
            for (int i = 0, length = layerCullingDistances.Length; i < length; ++i)
            {
                layerCullingDistances [i] = 0;
            }
        }
        else
        {
            reflectionCamera.layerCullDistances = layerCullingDistances;
        }
        reflectionCamera.useOcclusionCulling = false;
        //	#if UNITY_EDITOR
        //	SetTexture (m_ReflectionTexture);
        //	#else
        if (addPostProcessingComponent)
        {
            MirrorImage mi = go.AddComponent <MirrorImage> ();
        }
        SetTexture(m_ReflectionTexture);
        //	#endif
    }
示例#15
0
        public override int Proc(Armor armor, Character attacker, Character defender, int damage)
        {
            var level = Math.Max(0, armor.level);

            if (pdsharp.utils.Random.Int(level / 2 + 6) < 5)
            {
                return(damage);
            }

            var respawnPoints = new List <int>();

            for (var i = 0; i < Level.NEIGHBOURS8.Length; i++)
            {
                var p = defender.pos + Level.NEIGHBOURS8[i];
                if (Actor.FindChar(p) == null && (Level.passable[p] || Level.avoid[p]))
                {
                    respawnPoints.Add(p);
                }
            }

            if (respawnPoints.Count <= 0)
            {
                return(damage);
            }

            var mob = new MirrorImage();

            mob.Duplicate((Hero)defender);
            GameScene.Add(mob);
            WandOfBlink.Appear(mob, pdsharp.utils.Random.Element(respawnPoints));

            defender.Damage(pdsharp.utils.Random.IntRange(1, defender.HT / 6), this); //attacker
            CheckOwner(defender);

            return(damage);
        }
示例#16
0
        public JediMirage(Mobile caster) : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
        {
            m_Caster = caster;

            Body = caster.Body;

            Hue    = caster.Hue;
            Female = caster.Female;

            Name    = caster.Name;
            NameHue = caster.NameHue;

            Title = caster.Title;
            Kills = caster.Kills;

            HairItemID = caster.HairItemID;
            HairHue    = caster.HairHue;

            FacialHairItemID = caster.FacialHairItemID;
            FacialHairHue    = caster.FacialHairHue;

            for (int i = 0; i < caster.Skills.Length; ++i)
            {
                Skills[i].Base = caster.Skills[i].Base;
                Skills[i].Cap  = caster.Skills[i].Cap;
            }

            for (int i = 0; i < caster.Items.Count; i++)
            {
                AddItem(JediMirageItem(caster.Items[i]));
            }

            Warmode = true;

            Summoned     = true;
            SummonMaster = caster;

            int min = 60;
            int max = (int)(Server.Spells.Jedi.JediSpell.GetJediDamage(m_Caster));

            if (max < min)
            {
                max = min;
            }

            int hits = Utility.RandomMinMax(min, max);

            SetHits(hits);

            SetDamage(1, 1);

            SetDamageType(ResistanceType.Physical, 100);
            SetResistance(ResistanceType.Physical, 20, 40);
            SetResistance(ResistanceType.Fire, 20, 40);
            SetResistance(ResistanceType.Cold, 20, 40);
            SetResistance(ResistanceType.Poison, 20, 40);

            Fame  = 0;
            Karma = 0;

            VirtualArmor = 1;

            ControlSlots = 3;

            TimeSpan duration = TimeSpan.FromSeconds(Server.Spells.Jedi.JediSpell.GetJediDamage(m_Caster) / 2);

            new UnsummonTimer(caster, this, duration).Start();
            SummonEnd = DateTime.Now + duration;

            MirrorImage.AddClone(m_Caster);
        }
示例#17
0
 private void AfterDeserialization()
 {
     MirrorImage.AddClone(_caster);
 }
示例#18
0
 private void OnEnable()
 {
     _mirrorImage = serializedObject.targetObject as MirrorImage;
 }
示例#19
0
 public override void OnAfterDelete()
 {
     MirrorImage.RemoveClone(m_Caster);
     base.OnAfterDelete();
 }
        private static CurrentSpell SwordMCommands(Player warrior)
        {
            ConsoleKeyInfo enter = new ConsoleKeyInfo();

            Console.Clear();
            var counter = 1;

            while (enter.Key != ConsoleKey.Enter)
            {
                if (enter.Key == ConsoleKey.DownArrow)
                {
                    counter++;
                }
                else if (enter.Key == ConsoleKey.UpArrow)
                {
                    counter--;
                }
                GameTitle.GetTitle();
                string actionSelect = $"SELECT ACTION FOR {warrior.Name}";
                string levelUpCrit  = $"CRITICAL STRIKE-- LOSE THIS TURN AND HAVE 30% CHANCE FOR 2X CRITICAL STRIKE FOR EACH ACTION YOUR SWORDMASTER DOES UNTIL END OF GAME";
                string mirrorImage  = $"MIRROR IMAGE-- YOUR OPONENT LOSES 1 TURN, YOU DEAL {warrior.Damage} TO HIM, COOLDOWN: 3";
                string bladeSlash   = $"BLADESLASH-- DAMAGE:{warrior.Damage * 2} NO COOLDOWN";
                string windFury     = $"WINDFURY-- DAMAGE:{warrior.Damage * 5} COOLDOWN: 4";
                Console.WriteLine("{0}", actionSelect);
                switch (counter)
                {
                case 1:
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("{0,2}", "-> " + levelUpCrit);
                    Console.WriteLine("{0,2}", mirrorImage);
                    Console.WriteLine("{0,2}", bladeSlash);
                    Console.WriteLine("{0,2}", windFury); break;

                case 2:
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("{0,2}", levelUpCrit);
                    Console.WriteLine("{0,2}", "-> " + mirrorImage);
                    Console.WriteLine("{0,2}", bladeSlash);
                    Console.WriteLine("{0,2}", windFury); break;

                case 3:
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("{0,2}", levelUpCrit);
                    Console.WriteLine("{0,2}", mirrorImage);
                    Console.WriteLine("{0,2}", "-> " + bladeSlash);
                    Console.WriteLine("{0,2}", windFury); break;

                case 4:
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("{0,2}", levelUpCrit);
                    Console.WriteLine("{0,2}", mirrorImage);
                    Console.WriteLine("{0,2}", bladeSlash);
                    Console.WriteLine("{0,2}", "-> " + windFury); break;

                default:
                    if (counter == 5)
                    {
                        counter = 1;
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("{0,2}", "-> " + levelUpCrit);
                        Console.WriteLine("{0,2}", mirrorImage);
                        Console.WriteLine("{0,2}", bladeSlash);
                        Console.WriteLine("{0,2}", windFury); break;
                    }
                    else if (counter == 0)
                    {
                        counter = 4;
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("{0,2}", levelUpCrit);
                        Console.WriteLine("{0,2}", mirrorImage);
                        Console.WriteLine("{0,2}", bladeSlash);
                        Console.WriteLine("{0,2}", "-> " + windFury); break;
                    }
                    break;
                }
                enter = Console.ReadKey();
                Console.Clear();
            }
            var currentSpell = new CurrentSpell();

            switch (counter)
            {
            case 1:
                var criticalStrike = new CriticalStrike();
                currentSpell = criticalStrike.TurnOnCrit(warrior);
                break;

            case 2:
                var mirrorImage = new MirrorImage();
                currentSpell = mirrorImage.GetMirrorImage(warrior);
                break;

            case 3:
                var slash = new BladeSlash();
                currentSpell = slash.GetSlash(warrior);
                break;

            default:
                var windfury = new Windfury();
                currentSpell = windfury.GetWindFury(warrior);
                break;
            }
            return(currentSpell);
        }