示例#1
0
        //methods
        public void Use(ITargetable Target)
        {
            //costing
            HeroRef.Csp -= Cost;

            //dmg
            Dmged = this.Dmg();

            (Target as IFighter).MinDmg += Dmged;
            (Target as IFighter).MaxDmg += Dmged;
            (Target as IFighter).Ad     += Dmged;

            (Target as Heroes.Person).HeroIcon.OnGetChr(gForm);
            (Target as Heroes.Person).HeroColor.OnGet(gColor);
            (Target as Heroes.Person).HeroBack.OnGet(gBack);

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " immprove attack on ";
            Line += DCLine.New(Dmged.ToString(), Color, Back);
            Line += " !";
            Temp.State.Current.Chat.Message(Line);

            PressedNow     = Input.Pressed;
            Input.OnInput += Input_OnInput;
        }
示例#2
0
        //methods
        public void Use(ITargetable Target)
        {
            if (!CanCast())
            {
                return;
            }

            //costing
            HeroRef.Csp -= Cost;

            for (int i = 0; i < HeroRef.R.Level + 1; i++)
            {
                //dmg
                Int32 Dmg = this.Dmg(Target);
                Target.Chp -= Dmg;

                //msg
                DrawerLine Line = new DrawerLine();
                Line.DefaultForegroundColor = HeroRef.Color;
                Line.DefaultBackgroundColor = HeroRef.Back;
                Line += DCLine.New("Rainbow splatter", Color, Back);
                Line += " deal ";
                Line += DCLine.New(Dmg.ToString(), Color, Back);
                Line += " damage!";
                Temp.State.Current.Chat.Message(Line);
            }

            if (HeroRef.R.Level > 0)
            {
                new Blessingoftheelements().Use(null);
            }
        }
示例#3
0
        public override void Draw()
        {
            Console.Clear();
            base.DrawTitle();

            DrawerOptions opt = new DrawerOptions();

            opt.Top = 1;
            foreach (Option o in Options)
            {
                opt.Left = (Console.WindowWidth / 2) - (o.Text.Length / 2);
                opt.Top += 2;

                DrawerLine Line = new DrawerLine();

                if (Options.IndexOf(o) == Index)
                {
                    Line.DefaultBackgroundColor = o.Color;
                    Line.DefaultForegroundColor = o.Back;
                }
                else
                {
                    Line.DefaultForegroundColor = o.Color;
                    Line.DefaultBackgroundColor = o.Back;
                }

                Line += o.Text;

                DrawerContent Content = new DrawerContent();
                Content.AppendLine(Line);

                Drawer.Draw(Content, opt);
            }
        }
示例#4
0
        //methods
        public void Use(ITargetable Target)
        {
            if (!CanCast())
            {
                return;
            }

            //costing
            HeroRef.Csp -= Cost;

            //dmg
            Int32 Dmg = this.Dmg(Target);

            Target.Chp -= Dmg;

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New((Target as IThing).Name, (Target as IThing).Color, (Target as IThing).Back);
            Line += " take ";
            Line += DCLine.New(Dmg.ToString(), Color, Back);
            Line += " damage from ";
            Line += DCLine.New(Name, Color, Back);
            Line += "!";
            Temp.State.Current.Chat.Message(Line);
        }
示例#5
0
        //methods
        public void Use(ITargetable Target)
        {
            if (!CanCast())
            {
                return;
            }

            if (Target.GetType() != typeof(Objects.Monsters.Exemples.EvilSinger) || Target.GetType() != typeof(Objects.Monsters.Exemples.Necromant) || Target.GetType() != typeof(Objects.Monsters.Exemples.Zombie))
            {
                return;
            }

            //costing
            HeroRef.Csp -= Cost;

            //dmg
            Int32 Dmg = this.Dmg(Target);

            Target.Chp -= Dmg;

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " deal ";
            Line += DCLine.New(Dmg.ToString(), Color, Back);
            Line += " damage!";
            Temp.State.Current.Chat.Message(Line);
        }
示例#6
0
        //methods
        public void Use(ITargetable Target)
        {
            if (!CanCast())
            {
                return;
            }

            //costing
            HeroRef.Csp -= Cost;

            //additional (heal)
            Int32 HDmg = this.Dmg();

            if (HeroRef.Chp.Int() < HeroRef.Mhp.Int())
            {
                if (HeroRef.Chp.Int() + HDmg > HeroRef.Mhp.Int())
                {
                    HeroRef.Chp = HeroRef.Mhp;
                }
                else
                {
                    HeroRef.Chp += HDmg;
                }
            }
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " heal ";
            Line += DCLine.New(HDmg.ToString(), Color, Back);
            Line += " your hp!";
            Temp.State.Current.Chat.Message(Line);
        }
示例#7
0
        private void MagicAttacking()
        {
            Int32 Dmg = Cast(State.Current.Hero.Barrier);

            State.Current.Hero.Chp -= Dmg;

            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = ConsoleColor.DarkGreen;
            Line.DefaultBackgroundColor = ConsoleColor.Black;

            if (this.GetType().GetInterface("IThing") != null)
            {
                Line += DCLine.New((this as IThing).Name, (this as IThing).Color, (this as IThing).Back);
            }
            else
            {
                Line += "Monster";
            }

            Line += " deal ";
            Line += DCLine.New(Dmg.ToString(), ConsoleColor.White, ConsoleColor.Red);
            Line += DCLine.New(" magic", ConsoleColor.Magenta, ConsoleColor.White);
            Line += " damage!";

            State.Current.Chat.Message(Line);
        }
示例#8
0
        //methods
        public void Use(ITargetable Target)
        {
            //costing
            HeroRef.Csp -= Cost;

            //dmg
            Dmged = this.Dmg();

            Target.Armor            += Dmged;
            Target.Barrier          += Dmged;
            (Target as IMagican).Ap += Dmged;

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " immprove arm,bar,ap on";
            Line += DCLine.New(Dmged.ToString(), Color, Back);
            Line += " !";
            Temp.State.Current.Chat.Message(Line);

            PressedNow     = Input.Pressed;
            Input.OnInput += Input_OnInput;
        }
示例#9
0
        public void MessageMin(DrawerLine Msg)
        {
            //Logger.Add(Msg);

            LastMiniLines.Insert(0, Msg);
            LastMiniLines.RemoveRange(10, 1);
            DrawMini();
        }
示例#10
0
        public static void Yell(DCLine StatName, Int32 _Value, Coord Position, Action IncreaseEffect, DrawerLine DisposeString)
        {
            while (true)
            {
                IO.DrawerLine line = new IO.DrawerLine();
                line.DefaultForegroundColor = ConsoleColor.White;
                line.DefaultBackgroundColor = ConsoleColor.Red;

                line += "It's improvement pack! You taked " + State.Current.Hero.ImpPackCurrent + "/" + State.Current.Hero.ImpPackMax + ", take this one? Y/N";
                State.Current.Chat.Message(line);

                switch (Console.ReadKey(true).Key)
                {
                case ConsoleKey.Y:
                {
                    IO.DrawerLine linew = new IO.DrawerLine();
                    linew.DefaultForegroundColor = ConsoleColor.Cyan;
                    linew.DefaultBackgroundColor = ConsoleColor.DarkRed;

                    linew += DCLine.New("You", State.Current.Hero.Color, State.Current.Hero.Back);
                    linew += " use IPack and inc ";
                    linew += StatName;
                    linew += " on the ";
                    linew += DCLine.New(_Value.ToString(), ConsoleColor.Red, ConsoleColor.Cyan);
                    linew += "!";

                    State.Current.Chat.Message(linew);

                    if (State.Current.Hero.ImpPackCurrent < State.Current.Hero.ImpPackMax)
                    {
                        State.Current.Hero.ImpPackIncrease();
                        IncreaseEffect();
                    }
                    else
                    {
                        DrawerLine newline = new DrawerLine();
                        newline.DefaultForegroundColor = ConsoleColor.Red;
                        newline.DefaultBackgroundColor = ConsoleColor.White;
                        newline += "Oh no! You cant't take more improvements at this level!";
                    }

                    State.Current.GameField.Map[Position.X, Position.Y] = new Objects.Mapped.EThing();
                    State.Current.GameField.Draw();
                    return;
                }

                case ConsoleKey.N:
                {
                    State.Current.Chat.Message(DisposeString);
                    State.Current.GameField.Map[Position.X, Position.Y] = new Objects.Mapped.EThing();
                    State.Current.GameField.Draw();
                    return;
                }
                }
            }
        }
示例#11
0
        //methods
        public void Use(ITargetable Target)
        {
            if (!CanCast())
            {
                return;
            }

            //costing
            HeroRef.Csp -= Cost;

            //additional (heal and restore sp)
            Int32 HDmg = this.Dmg();

            if (HeroRef.Chp.Int() < HeroRef.Mhp.Int())
            {
                if (HeroRef.Chp.Int() + HDmg > HeroRef.Mhp.Int())
                {
                    HeroRef.Chp = HeroRef.Mhp;
                }
                else
                {
                    HeroRef.Chp += HDmg;
                }
            }
            if (HeroRef.Csp.Int() < HeroRef.Msp.Int())
            {
                if (HeroRef.Csp.Int() + HDmg > HeroRef.Msp.Int())
                {
                    HeroRef.Csp = HeroRef.Msp;
                }
                else
                {
                    HeroRef.Csp += HDmg;
                }
            }
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " heal and restore ";
            Line += DCLine.New(HDmg.ToString(), Color, Back);
            Line += " elements!";
            Temp.State.Current.Chat.Message(Line);

            if (HeroRef.R.Level > 0)
            {
                new Blessingoftheelements().Use(null);
            }
        }
示例#12
0
        protected Boolean CanCast()
        {
            if (HeroRef.Csp.Int() - Cost <= 0)
            {
                DrawerLine Line = new DrawerLine();
                Line.DefaultForegroundColor = HeroRef.Color;
                Line.DefaultBackgroundColor = HeroRef.Back;
                Line += "Not enough ";
                Line += DCLine.New(HeroRef.SPName, (ConsoleColor)HeroRef.SPColor.Enum(), ConsoleColor.White);
                Line += " !";
                Temp.State.Current.Chat.Message(Line);

                return(false);
            }
            return(true);
        }
示例#13
0
        //methods
        public void Use(ITargetable Target)
        {
            Int32 Dmg = this.Dmg();

            var trap = new Objects.Mapped.Trap(Dmg);

            State.Current.Hero.Bag = trap;

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += "You set the trap with " + Dmg + " dmg!";
            Temp.State.Current.Chat.Message(Line);
        }
示例#14
0
        void Input_OnInput()
        {
            if (PressedNow + 15 <= Input.Pressed)
            {
                HeroRef.Armor   -= Dmged;
                HeroRef.Barrier -= Dmged;
                HeroRef.Ap      -= Dmged;

                DrawerLine Line = new DrawerLine();
                Line.DefaultForegroundColor = HeroRef.Color;
                Line.DefaultBackgroundColor = HeroRef.Back;
                Line += DCLine.New(Name, Color, Back);
                Line += " completed his action.";
                Temp.State.Current.Chat.Message(Line);
                Input.OnInput -= Input_OnInput;
            }
        }
示例#15
0
        protected virtual void DrawTitle()
        {
            DrawerOptions opt = new DrawerOptions();

            opt.Left = (Console.WindowWidth / 2) - (Title.Text.Length / 2);
            opt.Top  = 1;

            DrawerContent cont = new DrawerContent();
            DrawerLine    line = new DrawerLine();

            line.DefaultForegroundColor = Title.Color;
            line.DefaultBackgroundColor = Title.Back;
            line += Title.Text;

            cont.AppendLine(line);

            Drawer.Draw(cont, opt);
        }
示例#16
0
        public void WhenDies()
        {
            if (Loot != null && Loot.GetType() != typeof(EThing))
            {
                DrawerLine Line = new DrawerLine();
                Line.DefaultBackgroundColor = ConsoleColor.DarkGreen;
                Line.DefaultForegroundColor = ConsoleColor.White;
                Line += DCLine.New("You", State.Current.Hero.Color, State.Current.Hero.Back);
                Line += " get a ";
                Line += DCLine.New(Loot.Name, Loot.Color, Loot.Back);
                Line += " !";
                State.Current.Chat.Message(Line);
                Loot.Action();
            }

            State.Current.Hero.Cexp += Exp;

            if (this.GetType().GetInterface("IThing") != null)
            {
                DrawerLine Line = new DrawerLine();
                Line.DefaultBackgroundColor = ConsoleColor.DarkGreen;
                Line.DefaultForegroundColor = ConsoleColor.Black;
                Line += DCLine.New((this as IThing).Name, (this as IThing).Color, (this as IThing).Back);
                Line += " died! ";
                Line += DCLine.New("You", State.Current.Hero.Color, State.Current.Hero.Back);
                Line += " get ";
                Line += DCLine.New(Exp.ToString(), ConsoleColor.Blue, ConsoleColor.White);
                Line += " exp!";
                State.Current.Chat.Message(Line);
            }
            else
            {
                State.Current.Chat.Message(new DrawerLine("Monster died! You get " + Exp.ToString() + " exp!", ConsoleColor.Magenta));
            }

            if (this.GetType().GetInterface("IThing") != null)
            {
                State.Current.GameField.Map[(this as IThing).Position.X, (this as IThing).Position.Y] = new Mapped.EThing();
            }

            State.Current.GameField.Draw();
            State.Current.Info.Draw();
        }
示例#17
0
        public DrawerContent GetColorfull()
        {
            DrawerContent Content = new DrawerContent();

            for (int j = 0; j < 30; j++)
            {
                DrawerLine Line = new DrawerLine();
                for (int i = 0; i < 69; i++)
                {
                    DrawerChar Char = new DrawerChar();
                    Char.Icon = Map[i, j].Icon;
                    Char.Color = Map[i, j].Color;
                    Char.Back = Map[i, j].Back;

                    Line.Add(Char);
                }
                Content.AppendLine(Line);
            }

            return Content;
        }
示例#18
0
        void Input_OnInput()
        {
            if (PressedNow + 30 <= Input.Pressed)
            {
                HeroRef.MinDmg -= Dmged;
                HeroRef.MaxDmg -= Dmged;
                HeroRef.Ad     -= Dmged;

                HeroRef.HeroIcon.RemoveChr(gForm);
                HeroRef.HeroColor.Remove(gColor);
                HeroRef.HeroBack.Remove(gBack);

                DrawerLine Line = new DrawerLine();
                Line.DefaultForegroundColor = HeroRef.Color;
                Line.DefaultBackgroundColor = HeroRef.Back;
                Line += DCLine.New(Name, Color, Back);
                Line += " completed his action.";
                Temp.State.Current.Chat.Message(Line);
                Input.OnInput -= Input_OnInput;
            }
        }
示例#19
0
        //methods
        public void Use(ITargetable Target)
        {
            //costing
            HeroRef.Csp -= Cost;

            //dmg
            Int32 Dmg = this.Dmg(Target);

            Target.Chp -= Dmg;

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " deal ";
            Line += DCLine.New(Dmg.ToString(), Color, Back);
            Line += " damage!";
            Temp.State.Current.Chat.Message(Line);
        }
示例#20
0
        public override void Draw()
        {
            Console.Clear();
            base.DrawTitle();

            DrawerOptions opt = new DrawerOptions();

            opt.Left = (Console.WindowWidth / 2) - (Text.Length / 2);
            opt.Top  = (Console.WindowHeight / 2);

            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = ForegroundColor;
            Line.DefaultBackgroundColor = BackgroundColor;

            Line.Add(Text);
            DrawerContent con = new DrawerContent();

            con.AppendLine(Line);

            Drawer.Draw(con, opt);
        }
示例#21
0
        public void Message(DrawerLine Msg)
        {
            if (Msg.Chars.Count >= "Have you seen where be near the seller? You broke the item...".Length)
            {
                Msg.Chars.RemoveRange(Msg.Chars.Count - 5, 5);
            }

            Msg.Chars.InsertRange(0, new DrawerLine(DateTime.Now.ToShortTimeString() + "> ", ConsoleColor.DarkGreen).Chars);
            Msg.Chars.AddRange(new DrawerLine(" {" + TimeManager.Steps + "}", ConsoleColor.DarkGreen).Chars);

            Logger.Add(Msg);

            for (int i = Msg.Chars.Count; i < 68; i++)
            {
                Msg.Chars.Add(new DrawerChar()
                {
                    Icon = ' '
                });
            }
            LastLines.Insert(0, Msg);
            LastLines.RemoveRange(10, 1);
            Draw();
        }
示例#22
0
        private static void ClassSpecials(Int32 PlusHp, Int32 MinDmg, Int32 MaxDmg)
        {
            switch ((Class)State.Current.Hero.Class.Enum())
            {
            case Class.Alchemist:
                SPUniq("Elements", ConsoleColor.Magenta, 25);
                StartVision('@', ConsoleColor.Magenta, ConsoleColor.Yellow); LevelUpRates(PlusHp, 1, MinDmg, MaxDmg); break;

            case Class.Bard:
                StartVision('♫', ConsoleColor.Yellow, ConsoleColor.Green); LevelUpRates(PlusHp, 1, MinDmg, MaxDmg); break;

            case Class.BloodMage:
                SPUniq("Blood", ConsoleColor.DarkRed, State.Current.Hero.Mhp);
                State.Current.Hero.Csp.OnSet((Int32 Prev) =>
                {
                    State.Current.Hero.Chp -= Prev;
                    return(Prev);
                });
                StartVision('¤', ConsoleColor.Red, ConsoleColor.DarkRed); LevelUpRates(PlusHp, PlusHp, MinDmg, MaxDmg); break;

            case Class.Engineer:
                StartVision('☼', ConsoleColor.DarkYellow, ConsoleColor.Black); LevelUpRates(PlusHp, 4, MinDmg, MaxDmg); break;

            case Class.Exorcist:
                StartVision('√', ConsoleColor.Cyan, ConsoleColor.Yellow); LevelUpRates(PlusHp, 2, MinDmg, MaxDmg); break;

            case Class.FireMage:
                SPUniq("Mana", ConsoleColor.Blue, 200);
                StartVision('‼', ConsoleColor.Red, ConsoleColor.Yellow); LevelUpRates(PlusHp, 10, MinDmg, MaxDmg); break;

            case Class.Monk:
                StartVision('§', ConsoleColor.Yellow, ConsoleColor.Black); LevelUpRates(PlusHp, 5, MinDmg, MaxDmg); break;

            case Class.Necromancer:
                StartVision('↨', ConsoleColor.Green, ConsoleColor.DarkMagenta); LevelUpRates(PlusHp, 1, MinDmg, MaxDmg); break;

            case Class.Paladin:
                SPUniq("Mana", ConsoleColor.Blue, 100);
                State.Current.Hero.Chp.OnSet((Int32 Prev) =>
                {
                    if (State.Current.Hero.Chp.Int() - Prev <= 0)
                    {
                        if (State.Current.Hero.Csp.Int() - Prev >= 0)
                        {
                            State.Current.Hero.Csp     -= Prev;
                            DrawerLine Line             = new DrawerLine();
                            Line.DefaultForegroundColor = ConsoleColor.Blue;
                            Line.DefaultBackgroundColor = ConsoleColor.White;
                            Line += "Mana shield absorbed fatal damage.";
                            Temp.State.Current.Chat.Message(Line);
                            return(0);
                        }
                    }
                    return(Prev);
                });
                StartVision('P', ConsoleColor.Yellow, ConsoleColor.DarkYellow); LevelUpRates(PlusHp, 8, MinDmg, MaxDmg); break;

            case Class.Rogue:
                SPUniq("Poison", ConsoleColor.Green, 3);
                Input.OnInput += () =>
                {
                    if (State.Random.Next(4) == 0)
                    {
                        if (State.Current.Hero.Csp.Int() < State.Current.Hero.Msp.Int())
                        {
                            State.Current.Hero.Csp += 1;
                            State.Current.Chat.Message(new DrawerLine("You find out what to cook poison!", ConsoleColor.Green));
                        }
                    }
                };
                StartVision('&', ConsoleColor.Green, ConsoleColor.Black); LevelUpRates(PlusHp, 0, MinDmg, MaxDmg); break;

            case Class.Shaman:
                StartVision('@', ConsoleColor.Blue, ConsoleColor.DarkGray); LevelUpRates(PlusHp, 25, MinDmg, MaxDmg); break;

            case Class.Warrior:
                StartVision('☻', ConsoleColor.Red, ConsoleColor.Black); LevelUpRates(PlusHp, 0, MinDmg, MaxDmg); break;

            default: break;
            }
        }
示例#23
0
        //methods
        public void Use(ITargetable Target)
        {
            String       stat         = "";
            ConsoleColor ElementColor = ConsoleColor.Black;

            Dmged = 1;

            switch (Element = State.Random.Next(4))
            {
            case 0:
            {
                stat            = "improve dmg"; ElementColor = ConsoleColor.Red;
                HeroRef.MinDmg += 1;
                HeroRef.MaxDmg += 1;
                PressedNow      = Input.Pressed;
                Input.OnInput  += Input_OnInput;
                break;
            }

            case 1:
            {
                stat = "heal hp"; ElementColor = ConsoleColor.Blue;
                if (HeroRef.Chp.Int() < HeroRef.Mhp.Int())
                {
                    if (HeroRef.Chp.Int() + 1 > HeroRef.Mhp.Int())
                    {
                        HeroRef.Chp = HeroRef.Mhp;
                    }
                    else
                    {
                        HeroRef.Chp += 1;
                    }
                }
                break;
            }

            case 2:
            {
                stat         = "add element"; ElementColor = ConsoleColor.Cyan;
                HeroRef.Msp += 1;
                HeroRef.Csp += 1;
                break;
            }

            case 3:
            {
                stat         = "add mhp"; ElementColor = ConsoleColor.DarkYellow;
                HeroRef.Mhp += 1;
                HeroRef.Chp += 1;
                break;
            }
            }

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += DCLine.New(stat, ElementColor, ConsoleColor.Black);
            Line += " !";
            Temp.State.Current.Chat.Message(Line);
        }
示例#24
0
 public static void Add(DrawerLine Line)
 {
     Log.Add(Line);
 }
示例#25
0
        //methods
        public void Use(ITargetable Target)
        {
            if (!CanCast())
            {
                return;
            }

            //costing
            HeroRef.Csp -= Cost;

            //dmg
            Int32 Dmg = this.Dmg(Target);

            Target.Chp -= Dmg;

            //additional (heal)
            Int32 HDmg = (Int32)(Dmg * 1.3);

            if (HeroRef.Chp.Int() < HeroRef.Mhp.Int())
            {
                if (HeroRef.Chp.Int() + HDmg > HeroRef.Mhp.Int())
                {
                    HeroRef.Chp = HeroRef.Mhp;
                }
                else
                {
                    HeroRef.Chp += HDmg;
                }
            }

            //msg
            DrawerLine Line = new DrawerLine();

            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " deal ";
            Line += DCLine.New(Dmg.ToString(), Color, Back);
            Line += " damage!";
            Temp.State.Current.Chat.Message(Line);

            for (int i = 0; i < HeroRef.R.Level + 1; i++)
            {
                //dmg
                Dmg             = 1;
                Target.Armor   -= 1;
                Target.Barrier -= 1;

                //msg
                Line = new DrawerLine();
                Line.DefaultForegroundColor = HeroRef.Color;
                Line.DefaultBackgroundColor = HeroRef.Back;
                Line += DCLine.New(Name, Color, Back);
                Line += " decreases ";
                Line += DCLine.New((Target as IThing).Name, (Target as IThing).Color, (Target as IThing).Back);
                Line += " arm and bar by 1!";
                Temp.State.Current.Chat.Message(Line);
            }

            Line = new DrawerLine();
            Line.DefaultForegroundColor = HeroRef.Color;
            Line.DefaultBackgroundColor = HeroRef.Back;
            Line += DCLine.New(Name, Color, Back);
            Line += " heal ";
            Line += DCLine.New(HDmg.ToString(), Color, Back);
            Line += " your hp!";
            Temp.State.Current.Chat.Message(Line);


            if (HeroRef.R.Level > 0)
            {
                new Blessingoftheelements().Use(null);
            }
        }