QString TrustAI::askForKingdom() { QString role; ServerPlayer *lord = room->getLord(); QStringList kingdoms = Sanguosha->getKingdoms(); kingdoms.removeOne("god"); if (!lord) return kingdoms.at(qrand() % kingdoms.length()); switch (self->getRoleEnum()) { case Player::Lord: role = kingdoms.at(qrand() % kingdoms.length()); break; case Player::Renegade: case Player::Rebel: { if ((lord->hasLordSkill("xueyi") && self->getRoleEnum() == Player::Rebel) || lord->hasLordSkill("shichou")) role = "wei"; else role = lord->getKingdom(); break; } case Player::Loyalist: { if (lord->getGeneral()->isLord()) role = lord->getKingdom(); else if (lord->getGeneral2() && lord->getGeneral2()->isLord()) role = lord->getGeneral2()->getKingdom(); else { if (lord->hasSkill("yongsi")) kingdoms.removeOne(lord->getKingdom()); role = kingdoms.at(qrand() % kingdoms.length()); } break; } default: break; } return role; }
void HuangtianCard::use(Room *room, ServerPlayer *source, QList<ServerPlayer *> &targets) const { ServerPlayer *zhangjiao = targets.first(); if (zhangjiao->hasLordSkill("huangtian")) { room->setPlayerFlag(zhangjiao, "HuangtianInvoked"); if (!zhangjiao->isLord() && zhangjiao->hasSkill("weidi")) room->broadcastSkillInvoke("weidi"); else { int index = qrand() % 2 + 1; if (Player::isNostalGeneral(zhangjiao, "zhangjiao")) index += 2; room->broadcastSkillInvoke("huangtian", index); } room->notifySkillInvoked(zhangjiao, "huangtian"); CardMoveReason reason(CardMoveReason::S_REASON_GIVE, source->objectName(), zhangjiao->objectName(), "huangtian", QString()); room->obtainCard(zhangjiao, this, reason); QList<ServerPlayer *> zhangjiaos; QList<ServerPlayer *> players = room->getOtherPlayers(source); foreach (ServerPlayer *p, players) { if (p->hasLordSkill("huangtian") && !p->hasFlag("HuangtianInvoked")) zhangjiaos << p; } if (zhangjiaos.isEmpty()) room->setPlayerFlag(source, "ForbidHuangtian"); }
void HuangtianCard::use(Room *room, ServerPlayer *, const QList<ServerPlayer *> &targets) const{ ServerPlayer *zhangjiao = targets.first(); if(zhangjiao->hasLordSkill("huangtian")){ zhangjiao->obtainCard(this); room->setEmotion(zhangjiao, "good"); } }
void HuangtianCard::use(Room *room, ServerPlayer *, const QList<ServerPlayer *> &targets) const{ ServerPlayer *zhangjiao = targets.first(); if(zhangjiao->hasLordSkill("huangtian")){ zhangjiao->obtainCard(this); QList<int> subcards = this->getSubcards(); foreach(int card_id, subcards) room->setCardFlag(card_id,"visible"); room->setEmotion(zhangjiao, "good"); }
void HuangtianCard::use(Room *room, ServerPlayer *source, QList<ServerPlayer *> &targets) const{ ServerPlayer *zhangjiao = targets.first(); if (zhangjiao->hasLordSkill("huangtian")) { room->setPlayerFlag(zhangjiao, "HuangtianInvoked"); room->broadcastSkillInvoke("huangtian"); room->notifySkillInvoked(zhangjiao, "huangtian"); zhangjiao->obtainCard(this); QList<ServerPlayer *> zhangjiaos; QList<ServerPlayer *> players = room->getOtherPlayers(source); foreach (ServerPlayer *p, players) { if (p->hasLordSkill("huangtian") && !p->hasFlag("HuangtianInvoked")) zhangjiaos << p; } if (zhangjiaos.empty()) room->setPlayerFlag(source, "ForbidHuangtian"); }
void HuangtianCard::use(Room *room, ServerPlayer *source, QList<ServerPlayer *> &targets) const{ ServerPlayer *zhangjiao = targets.first(); if(zhangjiao->hasLordSkill("huangtian")){ room->setPlayerFlag(zhangjiao, "HuangtianInvoked"); room->broadcastSkillInvoke("huangtian"); zhangjiao->obtainCard(this); QList<int> subcards = this->getSubcards(); foreach(int card_id, subcards) room->setCardFlag(card_id,"visible"); room->setEmotion(zhangjiao, "good"); QList<ServerPlayer *> zhangjiaos; QList<ServerPlayer *> players = room->getOtherPlayers(source); foreach(ServerPlayer *p, players){ if(p->hasLordSkill("huangtian") && !p->hasFlag("HuangtianInvoked")){ zhangjiaos << p; } } if(zhangjiaos.empty()) room->setPlayerFlag(source, "ForbidHuangtian"); }