名字竞技场蒟蒻版
蒟蒻竞技场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();
}