Esempio n. 1
0
        public void Electra(Cell C, ScreenBuffer Buffer, bool doEffect = true)
        {
            string dice = ComputeDamage();

            if (C != null)
            {
                foreach (GameObject item in C.GetObjectsInCell())
                {
                    if (!item.PhaseMatches(ParentObject))
                    {
                        continue;
                    }
                    item.TemperatureChange(100 + 25 * base.Level, ParentObject);
                    if (doEffect)
                    {
                        for (int i = 0; i < 5; i++)
                        {
                            item.ParticleText("&W" + (char)(219 + Stat.Random(0, 4)), 2.9f, 1);
                        }
                        for (int j = 0; j < 5; j++)
                        {
                            item.ParticleText("&B" + (char)(219 + Stat.Random(0, 4)), 2.9f, 1);
                        }
                        for (int k = 0; k < 5; k++)
                        {
                            item.ParticleText("&Y" + (char)(219 + Stat.Random(0, 4)), 2.9f, 1);
                        }
                    }
                }
                int     phase         = ParentObject.GetPhase();
                DieRoll cachedDieRoll = dice.GetCachedDieRoll();
                foreach (GameObject item2 in C.GetObjectsWithPartReadonly("Combat"))
                {
                    item2.TakeDamage(cachedDieRoll.Resolve(), "from %o shimmering aura!", "Shock", null, null, ParentObject, null, null, Accidental: false, Environmental: false, Indirect: false, ShowUninvolved: false, ShowForInanimate: false, SilentIfNoDamage: false, phase);
                    if (!item2.MakeSave("Toughness", 8 + Level, ParentObject, null, null))
                    {
                        item2.ApplyEffect(new Stun(Level, SaveTarget: 8 + Level, bDontStunIfPlayer: true));
                    }
                }
            }
            Potency -= 2;
            if (doEffect)
            {
                Buffer.Goto(C.X, C.Y);
                string str = "&C";
                int    num = Stat.Random(1, 3);
                if (num == 1)
                {
                    str = "&B";
                }
                if (num == 2)
                {
                    str = "&Y";
                }
                if (num == 3)
                {
                    str = "&W";
                }
                int num2 = Stat.Random(1, 3);
                if (num2 == 1)
                {
                    str += "^B";
                }
                if (num2 == 2)
                {
                    str += "^Y";
                }
                if (num2 == 3)
                {
                    str += "^W";
                }
                if (C.ParentZone == XRLCore.Core.Game.ZoneManager.ActiveZone)
                {
                    Stat.Random(1, 3);
                    Buffer.Write(str + (char)(219 + Stat.Random(0, 4)));
                    Popup._TextConsole.DrawBuffer(Buffer);
                    Thread.Sleep(10);
                }
            }
        }