名字竞技场蒟蒻版

· · 个人记录

蒟蒻竞技场v3.7 修改护盾和最低伤害机制,Debug

#include <iostream>
#include <string>
#include <ctime>
#include <algorithm>
#include <unistd.h>
#include <cmath>
#include <cstdio>
#include <conio.h>
#include <cstdlib>
using namespace std;
bool fastplay = false;
int downnumber = 0, minion = 0;
struct names {
    string name;
    int hp;//血 能承受的伤害
    int atk;//攻 普攻和物理技能伤害
    int def;//防 物理减伤,真正计算时要除以3
    int magic;//魔 技能伤害
    int mdef;//抗 对于法术攻击的抗性
    int spd;//速 行动频率
    int dodge;//敏 躲避概率
    int itl;//智 发动技能概率
    string ab1;
    string ab2;
    string ab3;
    string ab4;
    bool freeze = false;
    int poison = 0; //投毒
    bool anger = 0; //狂暴
    bool fire = 0; //收到过火系伤害
    bool acc = 0; //蓄力
    int faster = 0; //疾走还剩几回合
    int slower = 0; //迟缓还剩几回合
    int iron = 0; //铁壁还剩几回合
    int actpoints = 0; //行动点
    int abpoints = 0; //技能点
    int owner;//(召唤兽的)主人
    int angerfrom;//狂暴施法者
    bool backstab = false; //背刺
    int cursed = 0; //诅咒
    int shield = 0; //护甲
    int stabtarget;
    int kills;
    string deathfrom;
    bool minion = false;
    int score = 0;
};
int random(int st, int ed) {
    srand(time(0) + rand());
    return rand() % (ed - st + 1) + st;
}
names unit[1001];
int number;
int gethpmax() {
    int rt = 0;

    for (int i = 1; i < number + minion; i++) {
        if (unit[i].hp > unit[rt].hp) {
            rt = i;
        }
    }

    return rt;
}

int gethpmin() {
    int rt = 0;

    while (unit[rt].hp <= 0) {
        rt++;
    }

    for (int i = 1; i < number + minion; i++) {
        if (unit[i].hp < unit[rt].hp && unit[i].hp > 0) {
            rt = i;
        }
    }

    return rt;
}

void init(int num, string name) { //计算属性
    int tmp, tot = 0;

    for (int i = 0; i < name.size(); i++) {
        unsigned char x = name[i];
        tot += x;
    }

    tot = tot / name.size();
    tmp = tot * 26;
    unit[num].hp = tmp % 400 + 300;
    unsigned char first = name[0], last = name[name.size() - 1];
    tmp = first + last;
    tmp = tmp * 19;
    unit[num].atk = tmp % 50 + 66;
    tmp = last * 34;
    unit[num].def = tmp % 80 + 12;
    tmp = first * 39;
    unit[num].dodge = tmp % 50 + 7;
    unit[num].magic = 200 - (first * 8) % 130 ;
    unit[num].mdef = 150 - (first * 7) % 110 ;
    unit[num].spd = 600 - (tot * 4) % 600 + 138;
    unit[num].itl = 500 - (tot * 3) % 400 + 77;
    int kkk = first % 7;

    if (kkk == 0)
        unit[num].ab1 = "火球术"; //魔法130% 如果受到过火系伤害,伤害增加25%

    if (kkk == 1)
        unit[num].ab1 = "冰冻术"; //魔法70% 冰冻1回合

    if (kkk == 2)
        unit[num].ab1 = "地裂术"; //魔法140% 伤害平分给所有人

    if (kkk == 3)
        unit[num].ab1 = "雷击术"; //魔法35% 4~6次

    if (kkk == 4)
        unit[num].ab1 = "净化"; //魔法 100% 清除有益效果 对召唤兽伤害加倍

    if (kkk == 5)
        unit[num].ab1 = "狂暴术"; //魔法 80%

    if (kkk == 6)
        unit[num].ab1 = "诅咒";//魔法100%

    int sss = last % 6;

    if (sss == 0)
        unit[num].ab2 = "背刺"; //物理 500%

    if (sss == 1)
        unit[num].ab2 = "会心一击"; //物理 145%

    if (sss == 2)
        unit[num].ab2 = "连击"; //物理 75% 2~3次

    if (sss == 3)
        unit[num].ab2 = "投毒"; //物理 90% 使目标每回合损失20~40体力

    if (sss == 4)
        unit[num].ab2 = "瘟疫"; //使目标损失40%~99%体力

    if (sss == 5)
        unit[num].ab2 = "吸血攻击"; //魔法115%

    int rrr = tot % 9;

    if (rrr == 0)
        unit[num].ab3 = "聚气"; //攻击提高60%

    if (rrr == 1)
        unit[num].ab3 = "蓄力"; //下次攻击伤害300%

    if (rrr == 2)
        unit[num].ab3 = "加速术"; //速度加倍 持续3回合

    if (rrr == 3)
        unit[num].ab3 = "减速术"; //速度减半 持续2回合

    if (rrr == 4)
        unit[num].ab3 = "治愈术"; //回复等同于80%魔法的体力并除去负面效果

    if (rrr == 5)
        unit[num].ab3 = "铁壁"; //防御300% 持续2回合

    if (rrr == 6)
        unit[num].ab3 = "幻术";//召唤幻影

    if (rrr == 7)
        unit[num].ab3 = "血祭";//召唤使魔

    if (rrr == 8) {
        unit[num].ab3 = "生命之轮";//交换生命值
    }

    int mmm = (last + first + tot) % 8;

    if (mmm == 0)
        unit[num].ab4 = "反击"; //被攻击后普攻对手

    if (mmm == 1)
        unit[num].ab4 = "防御"; //伤害减半

    if (mmm == 2)
        unit[num].ab4 = "伤害反弹";

    if (mmm == 3)
        unit[num].ab4 = "护身符";

    if (mmm == 4)
        unit[num].ab4 = "垂死抗争"; //受到伤害且体力小于100,提高全属性

    if (mmm == 6)
        unit[num].ab4 = "吞噬"; //击杀对手提升各属性

    if (mmm == 7)
        unit[num].ab4 = "召唤亡灵";

    if (mmm == 8) {
        unit[num].ab4 = "护甲";
        unit[num].shield = (tot * 3 - first - last) % 35;
    }

    unit[num].owner = num;

    if (unit[num].name == "学神") {
        unit[num].hp += 199;
        unit[num].atk = 199;
        unit[num].def = 199;
        unit[num].magic = 199;
        unit[num].mdef = 199;
        unit[num].spd = 999;
        unit[num].dodge = 79;
        unit[num].itl = 999;
        unit[num].shield = 99;
        unit[num].ab1 = "诅咒";
        unit[num].ab2 = "瘟疫";
        unit[num].ab3 = "幻术";
        unit[num].ab4 = "护身符";
    }

    if (unit[num].name == "蔡徐坤") {
        unit[num].ab1 = "鸡你太美";
        unit[num].itl = 666;
        unit[num].atk += 19;
        unit[num].dodge += 9;
        unit[num].shield += 8;
    }
}

void battle() {
    int i;

    while (1) {
        for (i = 0; i < number + minion; i++) {
            if (unit[i].faster > 0) {
                unit[i].actpoints += unit[i].spd;
            }

            if (unit[i].slower > 0) {
                unit[i].actpoints -= unit[i].spd / 2;
            }

            unit[i].actpoints += unit[i].spd;

            unit[i].abpoints += unit[i].itl / 2;

            if (unit[i].actpoints > 10000 && unit[i].hp > 0 && unit[unit[i].owner].hp > 0) {
                if (unit[i].ab4 == "护甲" || unit[i].name == "学神") {
                    unit[i].shield += random(5, 8);
                }

                if (unit[i].name == "蔡徐坤") {
                    unit[i].shield += random(2, 3);
                }

                cout << endl;

                if (unit[i].freeze == true) {
                    cout << unit[i].name << "从冰冻中解除" << endl << endl;
                    unit[i].freeze = false;
                    unit[i].actpoints -= 10000;
                    continue;
                }

                if (unit[i].cursed > 0) {
                    unit[i].cursed -= 10;

                    if (unit[i].cursed <= 0) {
                        unit[i].cursed = 0;
                        cout << unit[i].name << "从诅咒中解除" << endl << endl;
                    }
                }

                if (unit[i].hp <= 50) {
                    if (unit[i].ab4 == "垂死抗争") {
                        cout << unit[i].name << "发起垂死抗争" << endl;
                        unit[i].atk *= 1.5;
                        unit[i].def *= 1.5;
                        unit[i].spd *= 1.5;
                        unit[i].magic *= 1.5;
                        unit[i].mdef *= 1.5;
                        unit[i].itl *= 1.5;
                        unit[i].dodge *= 1.5;
                        unit[i].dodge=min(90,unit[i].dodge);
                        unit[i].ab4 = "空技能";
                    }
                }

                if (unit[i].name == "学神" && unit[i].hp < 100) {
                    cout << "学神使用属性修改器,全属性上升" << endl << endl;
                    unit[i].hp += 100;
                    unit[i].atk += 49;
                    unit[i].def += 49;
                    unit[i].magic += 49;
                    unit[i].mdef += 49;
                    unit[i].spd += 49;
                    unit[i].itl += 49;
                }

                if (unit[i].poison > 0) {
                    int atktmp = unit[i].poison;
                    unit[i].poison -= random(1, 5);
                    unit[i].hp -= atktmp;
                    unit[i].hp = max(1, unit[i].hp);
                    cout << unit[i].name << "(" << unit[i].hp << ")" << "毒性发作!受到了" << atktmp << "伤害!\n" << endl;

                    if (unit[i].poison <= 0) {
                        cout << unit[i].name << "从中毒中解除" << endl;
                    }
                }

                if (unit[i].backstab && unit[unit[i].stabtarget].hp > 0) {
                    cout << unit[i].name << "发起背刺!";
                    int target = unit[i].stabtarget;
                    int atktmp = max(unit[i].atk * 5, 1);

                    if (atktmp > unit[target].shield) {
                        atktmp -= unit[target].shield;
                        unit[target].shield = 0;
                    } else {
                        unit[target].shield -= atktmp;
                        atktmp = 0;
                    }

                    unit[target].hp -= atktmp;
                    unit[target].hp = max(0, unit[target].hp);
                    cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << max(unit[i].atk * 5, 1) <<
                         "点伤害";
                    unit[i].backstab = false;

                    if (atktmp > 200 && atktmp <= 500) {
                        cout << ")#°3°)";
                    } else if (atktmp > 500) {
                        cout << "(TAT)";
                    }

                    cout << endl << endl;

                    if (unit[target].hp <= 0) {
                        if (unit[target].minion) {
                            cout << unit[target].name << "消失了";
                            continue;
                        }

                        cout << unit[target].name << "被击倒了" << endl << endl;

                        if (unit[target].ab4 == "护身符") {
                            int healtmp = random(10, 20);
                            cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                            unit[target].hp += healtmp;
                            unit[target].ab4 = "空技能";
                            continue;
                        }

                        downnumber ++;
                        unit[i].kills++;
                        unit[target].deathfrom = unit[i].name;
                        unit[i].score += unit[target].score/10+100;

                        for (int k = 0; k < number; k++) {
                            if (unit[k].hp > 0) {
                                unit[k].score += unit[k].hp / 30 + downnumber;
                            }
                        }

                        for (int k = number; k < number + minion; k++) {
                            if (unit[k].owner == target) {
                                cout << unit[k].name << "消失了" << endl;
                                unit[k].hp = 0;
                            }
                        }

                        if (unit[i].ab4 == "吞噬") {
                            cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                            unit[i].hp += random(10, 20);
                            unit[i].atk += unit[target].atk / 10;
                            unit[i].def += unit[target].def / 10;
                            unit[i].magic += unit[target].magic / 10;
                            unit[i].mdef += unit[target].mdef / 10;
                            unit[i].spd += unit[target].spd / 10;
                            unit[i].itl += unit[target].itl / 10;
                            unit[i].dodge += unit[target].dodge / 10;
                            unit[i].dodge = min(90, unit[i].dodge);
                        }

                        if (unit[i].ab4 == "召唤亡灵") {
                            cout << unit[i].name << "使用了召唤亡灵,";
                            int place = number + minion;
                            minion++;
                            unit[place].name = "丧尸";
                            unit[place].hp = unit[i].magic;
                            unit[place].atk = unit[target].atk * 0.5;
                            unit[place].def = unit[target].def * 0.5;
                            unit[place].magic = unit[target].magic * 0.5;
                            unit[place].mdef = unit[target].mdef * 0.5;
                            unit[place].spd = unit[target].spd * 0.5;
                            unit[place].itl = unit[target].itl * 0.5;
                            unit[place].ab1 = unit[target].ab1;
                            unit[place].ab2 = unit[target].ab2;
                            unit[place].ab3 = unit[target].ab3;
                            unit[place].ab4 = unit[target].ab4;
                            unit[place].minion = true;
                            unit[place].owner = i;
                            cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                        }

                        if (downnumber >= number - 1) {
                            cout << unit[unit[i].owner].name << "胜利了!" << endl;
                            return;
                        }
                    }

                    if (unit[target].iron > 0) {
                        unit[target].iron--;

                        if (unit[target].iron <= 0) {
                            cout << unit[target].name << "的铁壁被打消了" << endl;
                            unit[target].def = unit[target].def / 3;
                        }
                    }

                    unit[i].backstab = false;
                    unit[i].actpoints -= 10000;
                    continue;
                }

                if (unit[i].anger == true) {
                    int target = random(0, number + minion - 1);

                    while (unit[target].hp <= 0 || unit[i].angerfrom == target) {
                        target++;

                        if (target == number + minion)
                            target = 0;
                    }

                    cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")发起了狂暴攻击," ;

                    if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[i].spd / 100) {
                        cout << unit[target].name << "闪避了攻击" << endl << endl;
                    } else {
                        int atktmp = max(unit[i].atk - unit[target].def / 3 + random(10, 20), 1);

                        if (random(1, 100) < unit[target].cursed) {
                            cout << "诅咒使伤害加倍,";
                            atktmp *= 2;
                        }

                        if (atktmp > unit[target].shield) {
                            atktmp -= unit[target].shield;
                            unit[target].shield = 0;
                        } else {
                            unit[target].shield -= atktmp;
                            atktmp = 0;
                        }

                        unit[target].hp -= atktmp;
                        unit[target].hp = max(0, unit[target].hp);
                        cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                             "点伤害";

                        if (atktmp > 200) {
                            cout << ")#°3°)";
                        }

                        cout << endl << endl;

                        if (unit[target].hp <= 0) {
                            if (unit[target].minion) {
                                cout << unit[target].name << "消失了";
                                continue;
                            }

                            cout << unit[target].name << "被击倒了" << endl << endl;

                            if (unit[target].ab4 == "护身符") {
                                int healtmp = random(10, 20);
                                cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                unit[target].hp += healtmp;
                                unit[target].ab4 = "空技能";
                                continue;
                            }

                            downnumber ++;
                            unit[i].kills++;
                            unit[target].deathfrom = unit[i].name;
                            unit[i].score += unit[target].score/10+100;

                            for (int k = 0; k < number; k++) {
                                if (unit[k].hp > 0) {
                                    unit[k].score += unit[k].hp / 30 + downnumber;
                                }
                            }

                            for (int k = number; k < number + minion; k++) {
                                if (unit[k].owner == target) {
                                    cout << unit[k].name << "消失了" << endl;
                                    unit[k].hp = 0;
                                }
                            }

                            if (downnumber >= number - 1) {
                                cout << unit[unit[i].angerfrom].name << "胜利了!" << endl;
                                return;
                            }
                        }

                        if (unit[target].backstab) {
                            cout << unit[target].name << "的潜行被识破!\n" << endl;
                            unit[target].backstab = false;
                        }

                        if (unit[target].iron > 0) {
                            unit[target].iron--;

                            if (unit[target].iron <= 0) {
                                cout << unit[target].name << "的铁壁被打消了" << endl;
                                unit[target].def = unit[target].def / 3;
                            }
                        }
                    }

                    unit[i].anger = false;
                    unit[i].actpoints = 0;
                    unit[i].abpoints = 0;

                    if (fastplay) {
                        usleep(5000);
                    } else {
                        sleep(1);
                    }

                    continue;
                }

                int target = random(0, number + minion - 1);

                while (unit[target].hp <= 0 || target == i || target == unit[i].owner || unit[target].owner == i) {

                    if (target >= number + minion - 1)
                        target = 0;
                    else
                        target++;
                }

                int minhp = gethpmin();

                if (unit[i].itl > 399 && random(0, 500) < unit[i].itl) {
                    if (!(minhp == i || minhp == unit[i].owner || unit[minhp].owner == i)) {
                        target = minhp;
                    }
                }

                if (unit[i].name == "使魔" && unit[i].minion && unit[i].hp < 50) {
                    cout << unit[i].name << "自爆," ;

                    int atktmp = (unit[i].magic * (1.5 + 0.5 * (unit[target].fire))) - unit[target].mdef / 3;
                    atktmp = max(atktmp, 1);

                    if (random(1, 100) < unit[target].cursed) {
                        cout << "诅咒使伤害加倍,";
                        atktmp *= 2;
                    }

                    if (atktmp > unit[target].shield) {
                        atktmp -= unit[target].shield;
                        unit[target].shield = 0;
                    } else {
                        unit[target].shield -= atktmp;
                        atktmp = 0;
                    }

                    unit[target].hp -= atktmp;
                    unit[target].hp = max(0, unit[target].hp);
                    cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                         "点伤害" ;

                    if (atktmp > 200) {
                        cout << ")#°3°)";
                    }

                    cout << endl << endl;

                    if (unit[target].hp <= 0) {
                        if (unit[target].minion) {
                            cout << unit[target].name << "消失了";
                            continue;
                        }

                        cout << unit[target].name << "被击倒了" << endl << endl;

                        if (unit[target].ab4 == "护身符") {
                            int healtmp = random(10, 20);
                            cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                            unit[target].hp += healtmp;
                            unit[target].ab4 = "空技能";
                            continue;
                        }

                        downnumber ++;
                        unit[i].kills++;
                        unit[target].deathfrom = unit[i].name;
                        unit[i].score += unit[target].score/10+100;

                        for (int k = 0; k < number; k++) {
                            if (unit[k].hp > 0) {
                                unit[k].score += unit[k].hp / 30 + downnumber;
                            }
                        }

                        for (int k = number; k < number + minion; k++) {
                            if (unit[k].owner == target) {
                                cout << unit[k].name << "消失了" << endl;
                                unit[k].hp = 0;
                            }
                        }

                        if (downnumber >= number - 1) {
                            cout << unit[unit[i].owner].name << "胜利了!" << endl;
                            return;
                        }
                    }

                    if (unit[target].backstab) {
                        cout << unit[target].name << "的潜行被识破!\n" << endl;
                        unit[target].backstab = false;
                    }

                    if (unit[target].iron > 0) {
                        unit[target].iron--;

                        if (unit[target].iron <= 0) {
                            cout << unit[target].name << "的铁壁被打消了" << endl;
                            unit[target].def = unit[target].def / 3;
                        }
                    }

                    unit[i].hp = 0;
                    cout << "使魔消失了" << endl << endl;
                    continue;
                }

                if (unit[i].name == "幻影" && unit[i].minion && unit[i].hp < 50) {
                    cout << unit[i].name << "使用附体," ;
                    unit[target].anger = true;
                    unit[target].angerfrom = unit[i].owner;
                    cout << unit[target].name << "进入狂暴状态" << endl << endl;
                    unit[i].hp = 0;
                    cout << "幻影消失了" << endl << endl;
                    continue;
                }

                if (unit[i].abpoints > 10000) {
                    int rp = random(1, 100);

                    if (rp <= 40) {
                        if (unit[i].ab1 == "鸡你太美") {
                            cout << unit[i].name << "使用了鸡你太美,";
                            int tmptarget=gethpmax();
                            if(tmptarget!=i) target=tmptarget;
                            if (random(1, 150) < unit[target].dodge) {
                                cout << unit[target].name << "闪避了攻击" << endl;
                            } else {
                                cout << unit[target].name << "的智商下降了!( ‵▽′)" << endl;
                                unit[target].itl -= unit[i].magic;
                                unit[target].dodge -= random(20, 30);
                            }
                        }

                        if (unit[i].ab1 == "火球术") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了火球术," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[i].itl / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = (unit[i].magic * (1.3 + 0.25 * (unit[target].fire))) - unit[target].mdef / 3;
                                atktmp = max(atktmp, 1);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                }

                                if (atktmp > unit[target].shield) {
                                    atktmp -= unit[target].shield;
                                    unit[target].shield = 0;
                                } else {
                                    unit[target].shield -= atktmp;
                                    atktmp = 0;
                                }

                                unit[target].hp -= atktmp;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害";

                                if (atktmp > 200) {
                                    cout << ")#°3°)";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                        }

                        if (unit[i].ab1 == "冰冻术") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了冰冻术," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[i].spd / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = (unit[i].magic * 0.7) - unit[target].mdef / 3;
                                atktmp = max(atktmp, 1);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                }

                                unit[target].hp -= atktmp;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害";

                                if (atktmp > 100) {
                                    cout << "{{{(>_<)}}}";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                } else {
                                    cout << unit[target].name << "被冰冻了" << endl << endl;
                                    unit[target].freeze = true;
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                        }

                        if (unit[i].ab1 == "诅咒") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了诅咒," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = unit[i].magic - unit[target].mdef / 3;
                                atktmp = max(atktmp, 1);
                                unit[target].hp -= atktmp;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害" ;

                                if (atktmp > 200) {
                                    cout << ")#°3°)";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                } else {
                                    cout << unit[target].name << "被诅咒了" << endl << endl;
                                    unit[target].cursed += unit[i].magic / 3;

                                    if (unit[i].name == "学神")
                                        unit[target].cursed = 99;
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                        }

                        if (unit[i].ab1 == "地裂术") {
                            cout << unit[i].name << "使用了地裂术," << endl;
                            int atktmp = (unit[i].magic * 1.4) / (number - downnumber - 1 + minion) + random(10, 20);

                            for (target = 0; target < number + minion; target++) {
                                if (target == i || unit[target].hp <= 0) {
                                    continue;
                                }

                                if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].spd / 50) {
                                    cout << unit[target].name << "闪避了攻击" << endl << endl;
                                } else {
                                    int tmpatktmp = atktmp;

                                    if (random(1, 100) < unit[target].cursed) {
                                        cout << "诅咒使伤害加倍,";
                                        tmpatktmp *= 2;
                                    }
                                    tmpatktmp=max(atktmp - unit[target].def / 3, 1);
                                    unit[target].hp -= tmpatktmp ;
                                    unit[target].hp = max(0, unit[target].hp);
                                    cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << tmpatktmp <<
                                         "点伤害";

                                    if (atktmp > 200) {
                                        cout << ")#°3°)";
                                    }

                                    cout << endl << endl;
                                    atktmp = tmpatktmp;

                                    if (unit[target].hp <= 0) {
                                        if (unit[target].minion) {
                                            cout << unit[target].name << "消失了";
                                            continue;
                                        }

                                        cout << unit[target].name << "被击倒了" << endl << endl;

                                        if (unit[target].ab4 == "护身符") {
                                            int healtmp = random(10, 20);
                                            cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                            unit[target].hp += healtmp;
                                            unit[target].ab4 = "空技能";
                                            continue;
                                        }

                                        downnumber ++;
                                        unit[i].kills++;
                                        unit[target].deathfrom = unit[i].name;
                                        unit[i].score += unit[target].score/10+100;

                                        for (int k = 0; k < number; k++) {
                                            if (unit[k].hp > 0) {
                                                unit[k].score += unit[k].hp / 30 + downnumber;
                                            }
                                        }

                                        for (int k = number; k < number + minion; k++) {
                                            if (unit[k].owner == target) {
                                                cout << unit[k].name << "消失了" << endl;
                                                unit[k].hp = 0;
                                            }
                                        }

                                        if (unit[i].ab4 == "吞噬") {
                                            cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                            unit[i].hp += random(10, 20);
                                            unit[i].atk += unit[target].atk / 10;
                                            unit[i].def += unit[target].def / 10;
                                            unit[i].magic += unit[target].magic / 10;
                                            unit[i].mdef += unit[target].mdef / 10;
                                            unit[i].spd += unit[target].spd / 10;
                                            unit[i].itl += unit[target].itl / 10;
                                            unit[i].dodge += unit[target].dodge / 10;
                                            unit[i].dodge = min(90, unit[i].dodge);
                                        }

                                        if (unit[i].ab4 == "召唤亡灵") {
                                            cout << unit[i].name << "使用了召唤亡灵,";
                                            int place = number + minion;
                                            minion++;
                                            unit[place].name = "丧尸";
                                            unit[place].hp = unit[i].magic;
                                            unit[place].atk = unit[target].atk * 0.5;
                                            unit[place].def = unit[target].def * 0.5;
                                            unit[place].magic = unit[target].magic * 0.5;
                                            unit[place].mdef = unit[target].mdef * 0.5;
                                            unit[place].spd = unit[target].spd * 0.5;
                                            unit[place].itl = unit[target].itl * 0.5;
                                            unit[place].ab1 = unit[target].ab1;
                                            unit[place].ab2 = unit[target].ab2;
                                            unit[place].ab3 = unit[target].ab3;
                                            unit[place].ab4 = unit[target].ab4;
                                            unit[place].minion = true;
                                            unit[place].owner = i;
                                            cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                        }

                                        if (downnumber >= number - 1) {
                                            cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                            return;
                                        }
                                    }

                                    if (unit[target].backstab) {
                                        cout << unit[target].name << "的潜行被识破!\n" << endl;
                                        unit[target].backstab = false;
                                    }

                                    if (unit[target].iron > 0) {
                                        unit[target].iron--;

                                        if (unit[target].iron <= 0) {
                                            cout << unit[target].name << "的铁壁被打消了" << endl;
                                            unit[target].def = unit[target].def / 3;
                                        }
                                    }
                                }

                                usleep(5000);
                            }
                        }

                        if (unit[i].ab1 == "雷击术") {
                            cout << unit[i].name << "使用了雷击术," << endl;
                            int atktmp = (unit[i].magic * random(25, 35) / 100);
                            if (random(1, 100) < unit[target].cursed) {
                                cout << "诅咒使伤害加倍,";
                                atktmp *= 2;
                            }

                            int times = random(4, 6);

                            for (int j = 0; j < times; j++) {
                                if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                                    cout << unit[target].name << "闪避了攻击" << endl << endl;
                                } else {
                                    unit[target].hp -= max(atktmp - unit[target].mdef / 3, 1);
                                    unit[target].hp = max(0, unit[target].hp);
                                    cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << max(atktmp - unit[target].mdef / 3, 1) <<
                                         "点伤害\n" << endl ;
                                    atktmp -= random(1, 5);

                                    if (unit[target].hp <= 0) {
                                        if (unit[target].minion) {
                                            cout << unit[target].name << "消失了";
                                            break;
                                        }

                                        cout << unit[target].name << "被击倒了";

                                        if (atktmp * times > 200) {
                                            cout << "(っ °Д °;)っ";
                                        }

                                        cout << endl << endl;

                                        if (unit[target].ab4 == "护身符") {
                                            int healtmp = random(10, 20);
                                            cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                            unit[target].hp += healtmp;
                                            unit[target].ab4 = "空技能";
                                            break;
                                        }

                                        downnumber ++;
                                        unit[i].kills++;
                                        unit[target].deathfrom = unit[i].name;
                                        unit[i].score += unit[target].score/10+100;

                                        for (int k = 0; k < number; k++) {
                                            if (unit[k].hp > 0) {
                                                unit[k].score += unit[k].hp / 30 + downnumber;
                                            }
                                        }

                                        for (int k = number; k < number + minion; k++) {
                                            if (unit[k].owner == target) {
                                                cout << unit[k].name << "消失了" << endl;
                                                unit[k].hp = 0;
                                            }
                                        }

                                        if (unit[i].ab4 == "吞噬") {
                                            cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                            unit[i].hp += random(10, 20);
                                            unit[i].atk += unit[target].atk / 10;
                                            unit[i].def += unit[target].def / 10;
                                            unit[i].magic += unit[target].magic / 10;
                                            unit[i].mdef += unit[target].mdef / 10;
                                            unit[i].spd += unit[target].spd / 10;
                                            unit[i].itl += unit[target].itl / 10;
                                            unit[i].dodge += unit[target].dodge / 10;
                                            unit[i].dodge = min(90, unit[i].dodge);
                                        }

                                        if (unit[i].ab4 == "召唤亡灵") {
                                            cout << unit[i].name << "使用了召唤亡灵,";
                                            int place = number + minion;
                                            minion++;
                                            unit[place].name = "丧尸";
                                            unit[place].hp = unit[i].magic;
                                            unit[place].atk = unit[target].atk * 0.5;
                                            unit[place].def = unit[target].def * 0.5;
                                            unit[place].magic = unit[target].magic * 0.5;
                                            unit[place].mdef = unit[target].mdef * 0.5;
                                            unit[place].spd = unit[target].spd * 0.5;
                                            unit[place].itl = unit[target].itl * 0.5;
                                            unit[place].ab1 = unit[target].ab1;
                                            unit[place].ab2 = unit[target].ab2;
                                            unit[place].ab3 = unit[target].ab3;
                                            unit[place].ab4 = unit[target].ab4;
                                            unit[place].minion = true;
                                            unit[place].owner = i;
                                            cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                        }

                                        if (downnumber >= number - 1) {
                                            cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                            return;
                                        }

                                        break;
                                    }
                                }

                                usleep(5000);
                            }

                            if (unit[target].backstab) {
                                cout << unit[target].name << "的潜行被识破!\n" << endl;
                                unit[target].backstab = false;
                            }

                            if (unit[target].iron > 0) {
                                unit[target].iron--;

                                if (unit[target].iron <= 0) {
                                    cout << unit[target].name << "的铁壁被打消了" << endl;
                                    unit[target].def = unit[target].def / 3;
                                }
                            }
                        }

                        if (unit[i].ab1 == "净化") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了净化," ;

                            if (random(0, 100) < 0) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = (unit[i].magic) - unit[target].mdef / 3;
                                atktmp = max(atktmp, 1);

                                if (unit[target].minion)
                                    atktmp *= 2;

                                unit[target].hp -= atktmp;
                                unit[target].faster = false;
                                unit[target].acc = false;
                                unit[target].iron = false;
                                unit[target].abpoints = 0;
                                unit[target].actpoints = 0;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害" ;

                                if (atktmp > 200 && unit[target].hp <= 0) {
                                    cout << "(TAT)";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }
                        }

                        if (unit[i].ab1 == "狂暴术") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了狂暴术," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = (unit[i].magic * 0.8) - unit[target].mdef / 3;
                                atktmp = max(atktmp, 1);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                }

                                unit[target].hp -= atktmp;
                                unit[target].anger = true;
                                unit[target].angerfrom = i;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害";

                                if (atktmp > 100) {
                                    cout << "(╬▔皿▔)╯";
                                }

                                cout << "," << unit[target].name << "进入狂暴状态" << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }
                        }

                    } else if (rp <= 80) {
                        if (unit[i].ab2 == "背刺") {
                            int maxhp = gethpmax();

                            if (maxhp != i)
                                target = gethpmax();

                            cout << unit[i].name << "潜行到" << unit[target].name << "(" << unit[target].hp << ")的身后," << endl << endl;
                            unit[i].stabtarget = target;
                            unit[i].backstab = true;

                        }

                        if (unit[i].ab2 == "会心一击") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")发起了会心一击," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].spd / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = max(int(unit[i].atk * 1.45 - unit[target].def / 3), 1);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                }

                                if (atktmp > unit[target].shield) {
                                    atktmp -= unit[target].shield;
                                    unit[target].shield = 0;
                                } else {
                                    unit[target].shield -= atktmp;
                                    atktmp = 0;
                                }

                                unit[target].hp -=  atktmp;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp
                                     <<
                                     "点伤害" ;

                                if (atktmp > 200) {
                                    cout << ")#°3°)";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                            unit[i].actpoints += 2000;
                            unit[i].abpoints += 2000;
                        }

                        if (unit[i].ab2 == "连击") {
                            cout << unit[i].name << "攻击了" << unit[target].name << "(" << unit[target].hp << ")," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].spd / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = unit[i].atk - unit[target].def / 3;
                                atktmp = max(1, atktmp);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                }

                                if (atktmp > unit[target].shield) {
                                    atktmp -= unit[target].shield;
                                    unit[target].shield = 0;
                                } else {
                                    unit[target].shield -= atktmp;
                                    atktmp = 0;
                                }

                                unit[target].hp -= atktmp;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害" ;

                                if (atktmp > 200) {
                                    cout << ")#°3°)";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }

                                    continue;
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }

                            }

                            int atktmp = (unit[i].atk * 0.85);
                            int times = random(1, 3);

                            for (int j = 0; j < times; j++) {
                                cout << unit[i].name << "连击,";

                                if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                                    cout << unit[target].name << "闪避了攻击" << endl << endl;
                                } else {
                                    int tmpatktmp = max(atktmp - unit[target].def / 3 + random(-5, 5), 1);

                                    if (random(1, 100) < unit[target].cursed) {
                                        cout << "诅咒使伤害加倍,";
                                        tmpatktmp *= 2;
                                    }

                                    if (tmpatktmp > unit[target].shield) {
                                        tmpatktmp -= unit[target].shield;
                                        unit[target].shield = 0;
                                    } else {
                                        unit[target].shield -= tmpatktmp;
                                        tmpatktmp = 0;
                                    }

                                    unit[target].hp -= tmpatktmp;
                                    unit[target].hp = max(0, unit[target].hp);
                                    cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << tmpatktmp <<
                                         "点伤害" ;

                                    if (atktmp > 200) {
                                        cout << ")#°3°)";
                                    }

                                    cout << endl << endl;
                                    atktmp = tmpatktmp;
                                    atktmp*=0.85; 
                                    if (unit[target].hp <= 0) {
                                        if (unit[target].minion) {
                                            cout << unit[target].name << "消失了";
                                            break;
                                        }

                                        cout << unit[target].name << "被击倒了" << endl << endl;

                                        if (unit[target].ab4 == "护身符") {
                                            int healtmp = random(10, 20);
                                            cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                            unit[target].hp += healtmp;
                                            unit[target].ab4 = "空技能";
                                            continue;
                                        }

                                        downnumber ++;
                                        unit[i].kills++;
                                        unit[target].deathfrom = unit[i].name;
                                        unit[i].score += unit[target].score/10+100;

                                        for (int k = 0; k < number; k++) {
                                            if (unit[k].hp > 0) {
                                                unit[k].score += unit[k].hp / 30 + downnumber;
                                            }
                                        }

                                        for (int k = number; k < number + minion; k++) {
                                            if (unit[k].owner == target) {
                                                cout << unit[k].name << "消失了" << endl;
                                                unit[k].hp = 0;
                                            }
                                        }

                                        if (unit[i].ab4 == "吞噬") {
                                            cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                            unit[i].hp += random(10, 20);
                                            unit[i].atk += unit[target].atk / 10;
                                            unit[i].def += unit[target].def / 10;
                                            unit[i].magic += unit[target].magic / 10;
                                            unit[i].mdef += unit[target].mdef / 10;
                                            unit[i].spd += unit[target].spd / 10;
                                            unit[i].itl += unit[target].itl / 10;
                                            unit[i].dodge += unit[target].dodge / 10;
                                            unit[i].dodge = min(90, unit[i].dodge);
                                        }

                                        if (unit[i].ab4 == "召唤亡灵") {
                                            cout << unit[i].name << "使用了召唤亡灵,";
                                            int place = number + minion;
                                            minion++;
                                            unit[place].name = "丧尸";
                                            unit[place].hp = unit[i].magic;
                                            unit[place].atk = unit[target].atk * 0.5;
                                            unit[place].def = unit[target].def * 0.5;
                                            unit[place].magic = unit[target].magic * 0.5;
                                            unit[place].mdef = unit[target].mdef * 0.5;
                                            unit[place].spd = unit[target].spd * 0.5;
                                            unit[place].itl = unit[target].itl * 0.5;
                                            unit[place].ab1 = unit[target].ab1;
                                            unit[place].ab2 = unit[target].ab2;
                                            unit[place].ab3 = unit[target].ab3;
                                            unit[place].ab4 = unit[target].ab4;
                                            unit[place].minion = true;
                                            unit[place].owner = i;
                                            cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                        }

                                        if (downnumber >= number - 1) {
                                            cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                            return;
                                        }

                                        break;
                                    }
                                }

                                usleep(5000);
                            }

                            if (unit[target].backstab) {
                                cout << unit[target].name << "的潜行被识破!\n" << endl;
                                unit[target].backstab = false;
                            }

                            if (unit[target].iron > 0) {
                                unit[target].iron--;

                                if (unit[target].iron <= 0) {
                                    cout << unit[target].name << "的铁壁被打消了" << endl;
                                    unit[target].def = unit[target].def / 3;
                                }
                            }
                        }

                        if (unit[i].ab2 == "投毒") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了投毒," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int poisontmp = int(unit[i].magic * 0.15);
                                int atktmp = int(unit[i].magic * 0.9 - unit[target].def / 3);
                                atktmp = max(1, atktmp);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                    poisontmp *= 2;
                                }

                                unit[target].hp -= atktmp ;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp
                                     << "点伤害," ;
                                cout << unit[target].name << "中毒(〃>目<)" << endl << endl;
                                unit[target].poison += poisontmp;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                        }

                        if (unit[i].ab2 == "瘟疫") {
                            int maxi=gethpmax();
                            if(unit[i].itl>349){
                                if(maxi!=i&&unit[maxi].hp>0&&unit[maxi].owner!=i&&unit[i].owner!=maxi) target=maxi;
                            } 
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")使用了瘟疫," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atkperc = random(40, 99);

                                if (unit[i].name == "学神")
                                    atkperc = 99;

                                unit[target].hp = unit[target].hp * (100 - atkperc) / 100 ;
                                unit[target].hp = max(1, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "损失了" << atkperc << "%HP" ;

                                if (atkperc > 80) {
                                    cout << "(;′TT ДTT`)";
                                }

                                cout << endl << endl;

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                        }

                        if (unit[i].ab2 == "吸血攻击") {
                            cout << unit[i].name << "对" << unit[target].name << "(" << unit[target].hp << ")发起了吸血攻击," ;

                            if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].spd / 100) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                int atktmp = int(unit[i].magic * 0.85 - unit[target].def / 3 ) ;
                                atktmp = max(atktmp, 1);

                                if (random(1, 100) < unit[target].cursed) {
                                    cout << "诅咒使伤害加倍,";
                                    atktmp *= 2;
                                }

                                if (atktmp > unit[target].shield) {
                                    atktmp -= unit[target].shield;
                                    unit[target].shield = 0;
                                } else {
                                    unit[target].shield -= atktmp;
                                    atktmp = 0;
                                }
                                int healtmp=min(int(atktmp * 0.5),unit[target].hp);
                                unit[target].hp -= atktmp;
                                unit[target].hp = max(0, unit[target].hp);
                                cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                     "点伤害\n" << endl;
                                unit[i].hp += healtmp;
                                cout << unit[i].name << "(" << unit[i].hp << ")" << "回复了" << healtmp <<"HP" ;

                                if (atktmp > 200) {
                                    cout << "(~ -▽-)~";
                                }

                                cout << endl << endl;

                                if (unit[target].hp <= 0) {
                                    if (unit[target].minion) {
                                        cout << unit[target].name << "消失了";
                                        continue;
                                    }

                                    cout << unit[target].name << "被击倒了" << endl << endl;

                                    if (unit[target].ab4 == "护身符") {
                                        int healtmp = random(10, 20);
                                        cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                        unit[target].hp += healtmp;
                                        unit[target].ab4 = "空技能";
                                        continue;
                                    }

                                    downnumber ++;
                                    unit[i].kills++;
                                    unit[target].deathfrom = unit[i].name;
                                    unit[i].score += unit[target].score/10+100;

                                    for (int k = 0; k < number; k++) {
                                        if (unit[k].hp > 0) {
                                            unit[k].score += unit[k].hp / 30 + downnumber;
                                        }
                                    }

                                    for (int k = number; k < number + minion; k++) {
                                        if (unit[k].owner == target) {
                                            cout << unit[k].name << "消失了" << endl;
                                            unit[k].hp = 0;
                                        }
                                    }

                                    if (unit[i].ab4 == "吞噬") {
                                        cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                                        unit[i].hp += random(10, 20);
                                        unit[i].atk += unit[target].atk / 10;
                                        unit[i].def += unit[target].def / 10;
                                        unit[i].magic += unit[target].magic / 10;
                                        unit[i].mdef += unit[target].mdef / 10;
                                        unit[i].spd += unit[target].spd / 10;
                                        unit[i].itl += unit[target].itl / 10;
                                        unit[i].dodge += unit[target].dodge / 10;
                                        unit[i].dodge = min(90, unit[i].dodge);
                                    }

                                    if (unit[i].ab4 == "召唤亡灵") {
                                        cout << unit[i].name << "使用了召唤亡灵,";
                                        int place = number + minion;
                                        minion++;
                                        unit[place].name = "丧尸";
                                        unit[place].hp = unit[i].magic;
                                        unit[place].atk = unit[target].atk * 0.5;
                                        unit[place].def = unit[target].def * 0.5;
                                        unit[place].magic = unit[target].magic * 0.5;
                                        unit[place].mdef = unit[target].mdef * 0.5;
                                        unit[place].spd = unit[target].spd * 0.5;
                                        unit[place].itl = unit[target].itl * 0.5;
                                        unit[place].ab1 = unit[target].ab1;
                                        unit[place].ab2 = unit[target].ab2;
                                        unit[place].ab3 = unit[target].ab3;
                                        unit[place].ab4 = unit[target].ab4;
                                        unit[place].minion = true;
                                        unit[place].owner = i;
                                        cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                                    }

                                    if (downnumber >= number - 1) {
                                        cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                        return;
                                    }
                                }

                                if (unit[target].backstab) {
                                    cout << unit[target].name << "的潜行被识破!\n" << endl;
                                    unit[target].backstab = false;
                                }

                                if (unit[target].iron > 0) {
                                    unit[target].iron--;

                                    if (unit[target].iron <= 0) {
                                        cout << unit[target].name << "的铁壁被打消了" << endl;
                                        unit[target].def = unit[target].def / 3;
                                    }
                                }
                            }

                        }
                    } else {
                        if (unit[i].ab3 == "聚气") {
                            cout << unit[i].name << "开始聚气" << endl << endl ;
                            unit[i].atk = unit[i].atk * 1.6;
                        }

                        if (unit[i].ab3 == "蓄力") {
                            cout << unit[i].name << "开始蓄力" << endl << endl;
                            unit[i].acc = true;
                        }

                        if (unit[i].ab3 == "加速术") {
                            cout << unit[i].name << "使用了加速术," << unit[i].name << "进入疾走状态" << endl << endl;
                            unit[i].faster += 4;
                        }

                        if (unit[i].ab3 == "减速术") {
                            cout << unit[i].name << "使用了减速术," << unit[target].name << "进入迟缓状态" << endl << endl;
                            unit[target].slower += 2;
                        }

                        if (unit[i].ab3 == "治愈术") {
                            cout << unit[i].name << "(" << unit[i].hp << ")使用了治愈魔法,";
                            unit[i].hp += int(unit[i].magic * 0.8);
                            cout << unit[i].name << "(" << unit[i].hp << ")回复了" << int(unit[i].magic * 0.8) << "HP" << endl << endl;
                        }

                        if (unit[i].ab3 == "铁壁") {
                            cout << unit[i].name << "使用了铁壁," << unit[i].name << "防御力大幅度提升" << endl << endl;
                            unit[i].iron += 2;
                            unit[i].def = unit[i].def * 3;
                        }

                        if (unit[i].ab3 == "幻术") {
                            cout << unit[i].name << "使用了幻术,";
                            int place = number + minion;
                            minion++;
                            unit[place].name = "幻影";
                            unit[place].hp = random(70, 150);
                            unit[place].atk = unit[i].magic * 0.7;

                            if (unit[i].name == "学神")
                                unit[place].atk += 99;

                            unit[place].def = unit[i].magic * 0.4;
                            unit[place].magic = unit[i].magic * 0.95;

                            if (unit[i].name == "学神")
                                unit[place].magic += 99;

                            unit[place].mdef = unit[i].magic * 0.6;
                            unit[place].spd = unit[i].magic * 3.6 ;

                            if (unit[i].name == "学神")
                                unit[place].spd += 99;

                            unit[place].itl = unit[i].magic / 4;

                            if (unit[i].name == "学神")
                                unit[place].itl += 99;

                            unit[place].ab1 = unit[i].ab1;
                            unit[place].ab2 = unit[i].ab2;
                            unit[place].ab3 = unit[i].ab3;
                            unit[place].ab4 = unit[i].ab4;
                            unit[place].minion = true;
                            unit[place].owner = i;
                            unit[place].actpoints = -20000; 
                            cout << "幻影(" << unit[place].hp << ")出现了" << endl;
                        }

                        if (unit[i].ab3 == "血祭") {
                            cout << unit[i].name << "使用了血祭,";
                            int place = number + minion;
                            minion++;
                            unit[i].hp -= random(10, 30);
                            unit[i].hp = max(unit[i].hp, 1);
                            unit[place].name = "使魔";
                            unit[place].hp = unit[i].magic;
                            unit[place].atk = unit[i].atk * 0.6;
                            unit[place].def = unit[i].def * 0.6;
                            unit[place].magic = unit[i].magic * 0.8;
                            unit[place].mdef = unit[i].mdef * 0.6;
                            unit[place].spd = unit[i].spd * 0.8;
                            unit[place].itl = 0;
                            unit[place].minion = true;
                            unit[place].owner = i;
                            cout << "使魔(" << unit[place].hp << ")出现了" << endl;
                        }

                        if (unit[i].ab3 == "生命之轮") {
                            target = gethpmax();

                            if (target == i)
                                continue;

                            if (unit[i].hp - unit[target].hp < unit[i].itl / 10 || unit[i].hp > unit[i].itl * 1.5)
                                continue;

                            cout << unit[i].name << "(" << unit[i].hp << ")对" << unit[target].name << "(" << unit[target].hp << ")使用了生命之轮,";

                            if (random(0, 100) < unit[target].dodge - int(unit[i].name == "学神") * 20) {
                                cout << unit[target].name << "闪避了攻击" << endl << endl;
                            } else {
                                swap(unit[i].hp, unit[target].hp);
                                cout << unit[i].name << "(" << unit[i].hp << ")的HP与" << unit[target].name << "(" << unit[target].hp << ")互换:P" <<
                                     endl
                                     << endl;
                            }
                        }
                    }

                    unit[i].abpoints -= 10000;
                    unit[i].actpoints -= 10000;

                    if (unit[i].faster) {
                        unit[i].faster--;

                        if (unit[i].faster <= 0)
                            cout << unit[i].name << "从疾走中解除" << endl << endl;
                    }

                    if (unit[i].slower) {
                        unit[i].slower--;

                        if (unit[i].slower <= 0)
                            cout << unit[i].name << "从迟缓中解除" << endl << endl;
                    }

                    if (fastplay) {
                        usleep(5000);
                    } else {
                        sleep(1);
                    }

                    continue;
                }

                cout << unit[i].name << "攻击了" << unit[target].name << "(" << unit[target].hp << ")," ;

                if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].spd / 100) {
                    cout << unit[target].name << "闪避了攻击" << endl << endl;
                    if(unit[i].acc){
                        unit[i].acc = false;
                        cout<<unit[i].name<<"的蓄力被打消了"<<endl<<endl;
                    }
                } else {
                    int atktmp = unit[i].atk - unit[target].def / 3, magictmp = unit[i].magic * 0.8 - unit[target].mdef / 3;

                    if (magictmp >= atktmp) {
                        if (random(0, 900) < unit[i].itl) {
                            atktmp = magictmp;
                        }
                    } else {
                        if (random(0, 600) > unit[i].itl) {
                            atktmp = magictmp;
                        }
                    }

                    if (unit[i].acc) {
                        atktmp = atktmp * 3;
                        unit[i].acc = false;
                    }

                    atktmp = max(1, atktmp);

                    if ((unit[target].ab4 == "伤害反弹" || unit[target].name == "学神") && random(0, 1000) < unit[target].itl / 2) {
                        cout << unit[target].name << "使用了伤害反弹:P,";
                        swap(target, i);
                    }

                    if (random(1, 100) < unit[target].cursed) {
                        cout << "诅咒使伤害加倍,";
                        atktmp *= 2;
                    }

                    if (atktmp > unit[target].shield) {
                        atktmp -= unit[target].shield;
                        unit[target].shield = 0;
                    } else {
                        unit[target].shield -= atktmp;
                        atktmp = 0;
                    }

                    if ((unit[target].ab4 == "防御" || unit[target].name == "学神") && random(1, 800) < unit[i].itl) {
                        cout << unit[target].name << "防御,";
                        atktmp /= 2;
                    }

                    unit[target].hp -= atktmp;
                    unit[target].hp = max(0, unit[target].hp);
                    cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                         "点伤害" ;

                    if (atktmp > 200) {
                        cout << ")#°3°)";
                    }

                    cout << endl << endl;

                    if (unit[target].hp <= 0) {
                        if (unit[target].minion) {
                            cout << unit[target].name << "消失了";
                            continue;
                        }

                        cout << unit[target].name << "被击倒了" << endl << endl;

                        if (unit[target].ab4 == "护身符") {
                            int healtmp = random(10, 20);
                            cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                            unit[target].hp += healtmp;
                            unit[target].ab4 = "空技能";
                            continue;
                        }

                        downnumber ++;
                        unit[i].kills++;
                        unit[target].deathfrom = unit[i].name;
                        unit[i].score += unit[target].score/10+100;

                        for (int k = 0; k < number; k++) {
                            if (unit[k].hp > 0) {
                                unit[k].score += unit[k].hp / 30 + downnumber;
                            }
                        }

                        for (int k = number; k < number + minion; k++) {
                            if (unit[k].owner == target) {
                                cout << unit[k].name << "消失了" << endl;
                                unit[k].hp = 0;
                            }
                        }

                        if (unit[i].ab4 == "吞噬") {
                            cout << unit[i].name << "吞噬了" << unit[target].name << endl << endl;
                            unit[i].hp += random(10, 20);
                            unit[i].atk += unit[target].atk / 10;
                            unit[i].def += unit[target].def / 10;
                            unit[i].magic += unit[target].magic / 10;
                            unit[i].mdef += unit[target].mdef / 10;
                            unit[i].spd += unit[target].spd / 10;
                            unit[i].itl += unit[target].itl / 10;
                            unit[i].dodge += unit[target].dodge / 10;
                            unit[i].dodge = min(90, unit[i].dodge);
                        }

                        if (unit[i].ab4 == "召唤亡灵") {
                            cout << unit[i].name << "使用了召唤亡灵,";
                            int place = number + minion;
                            minion++;
                            unit[place].name = "丧尸";
                            unit[place].hp = unit[i].magic;
                            unit[place].atk = unit[target].atk * 0.5;
                            unit[place].def = unit[target].def * 0.5;
                            unit[place].magic = unit[target].magic * 0.5;
                            unit[place].mdef = unit[target].mdef * 0.5;
                            unit[place].spd = unit[target].spd * 0.5;
                            unit[place].itl = unit[target].itl * 0.5;
                            unit[place].ab1 = unit[target].ab1;
                            unit[place].ab2 = unit[target].ab2;
                            unit[place].ab3 = unit[target].ab3;
                            unit[place].ab4 = unit[target].ab4;
                            unit[place].minion = true;
                            unit[place].owner = i;
                            cout << "丧尸(" << unit[place].hp << ")出现了" << endl;
                        }

                        if (downnumber >= number - 1) {
                            cout << unit[unit[i].owner].name << "胜利了!" << endl;
                            return;
                        }
                        continue; 
                    }

                    if (unit[target].backstab) {
                        cout << unit[target].name << "的潜行被识破!\n" << endl;
                        unit[target].backstab = false;
                    }

                    if (unit[target].iron > 0) {
                        unit[target].iron--;

                        if (unit[target].iron <= 0) {
                            cout << unit[target].name << "的铁壁被打消了" << endl;
                            unit[target].def = unit[target].def / 3;
                        }
                    }

                    if (unit[target].ab4 == "反击" && random(1, 1000) < unit[i].itl * 2) {
                        cout << unit[target].name << "发起反击,";
                        swap(target, i);

                        if (random(0, 100) < unit[target].dodge - unit[i].itl / 50 + unit[target].itl / 100) {
                            cout << unit[target].name << "闪避了攻击" << endl << endl;
                        } else {
                            int atktmp = unit[i].atk - unit[target].def / 3;
                            atktmp=max(1,atktmp);
                            if (random(1, 100) < unit[target].cursed) {
                                cout << "诅咒使伤害加倍,";
                                atktmp *= 2;
                            }

                            if (atktmp > unit[target].shield) {
                                atktmp -= unit[target].shield;
                                unit[target].shield = 0;
                            } else {
                                unit[target].shield -= atktmp;
                                atktmp = 0;
                            }

                            unit[target].hp -= atktmp;
                            unit[target].hp = max(0, unit[target].hp);
                            cout << unit[target].name << "(" << unit[target].hp << ")" << "受到了" << atktmp <<
                                 "点伤害\n" << endl;

                            if (unit[target].hp <= 0) {
                                if (unit[target].minion) {
                                    cout << unit[target].name << "消失了";
                                    continue;
                                }

                                cout << unit[target].name << "被击倒了" << endl << endl;

                                if (unit[target].ab4 == "护身符") {
                                    int healtmp = random(10, 20);
                                    cout << unit[target].name << "使用护身符抵挡了一次死亡,回复" << healtmp << "HP" << endl;
                                    unit[target].hp += healtmp;
                                    unit[target].ab4 = "空技能";
                                    continue;
                                }

                                downnumber ++;
                                unit[i].kills++;
                                unit[target].deathfrom = unit[i].name;
                                unit[i].score += unit[target].score/10+100;

                                for (int k = 0; k < number; k++) {
                                    if (unit[k].hp > 0) {
                                        unit[k].score += unit[k].hp / 30 + downnumber;
                                    }
                                }

                                for (int k = number; k < number + minion; k++) {
                                    if (unit[k].owner == target) {
                                        cout << unit[k].name << "消失了" << endl;
                                        unit[k].hp = 0;
                                    }
                                }

                                if (downnumber >= number - 1) {
                                    cout << unit[unit[i].owner].name << "胜利了!" << endl;
                                    return;
                                }
                            }

                            if (unit[target].iron > 0) {
                                unit[target].iron--;

                                if (unit[target].iron <= 0) {
                                    cout << unit[target].name << "的铁壁被打消了" << endl;
                                    unit[target].def = unit[target].def / 3;
                                }
                            }

                            swap(target, i);
                        }
                    }
                }

                unit[i].actpoints -= 10000;

                if (unit[i].faster) {
                    unit[i].faster--;

                    if (unit[i].faster <= 0)
                        cout << unit[i].name << "从疾走中解除" << endl;
                }

                if (unit[i].slower) {
                    unit[i].slower--;

                    if (unit[i].slower <= 0)
                        cout << unit[i].name << "从迟缓中解除" << endl << endl;
                }

                if (fastplay) {
                    usleep(5000);
                } else {
                    sleep(1);
                }
            }
        }
    }
}

bool mycmp(names a, names b) {
    return a.score + a.hp > b.score + b.hp;
}

void welcome() {

    cout << "输入人数:" << endl;
    cin >> number;

    if (number > 1000)
        return;

    cout << "输入名字(一行一个)" << endl;

    for (int i = 0; i < number; i++) {
        cin >> unit[i].name;
        init(i, unit[i].name);
    }

    for (int i = 0; i < number; i++) {
        cout << unit[i].name << " HP" << unit[i].hp << " 攻" << unit[i].atk << " 防" << unit[i].def << " 魔" << unit[i].magic
             << " 抗" << unit[i].mdef << " 速" << unit[i].spd << " 敏" << unit[i].dodge << " 智" << unit[i].itl << endl;
    }

    downnumber = 0;
    cout << "是否开启加速模式?(y/n)" << endl;
    char f = getch();

    if (f == 'y')
        fastplay = true;

    battle();
    sort(unit, unit + number, mycmp);
    cout << endl << endl << endl << "-----------------------------------------------" << endl;

    for (int i = 0; i < number; i++) {
        cout << unit[i].name;
        cout << " 击杀数" << unit[i].kills;

        if (unit[i].hp > 0)
            cout << " 剩余生命" << unit[i].hp;
        else
            cout << " 致命一击:" << unit[i].deathfrom;

        cout << " 最终得分:" << unit[i].score + unit[i].hp << endl;
    }

    cout << "-----------------------------------------------" << endl;

    while (1) {
        ;
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    welcome();
}