void NosJujianCard::onEffect(const CardEffectStruct &effect) const{ int n = subcardsLength(); effect.to->drawCards(n); Room *room = effect.from->getRoom(); room->broadcastSkillInvoke("jujian"); if(n == 3){ QSet<Card::CardType> types; foreach(int card_id, effect.card->getSubcards()){ const Card *card = Sanguosha->getCard(card_id); types << card->getTypeId(); } if(types.size() == 1){ LogMessage log; log.type = "#JujianRecover"; log.from = effect.from; const Card *card = Sanguosha->getCard(subcards.first()); log.arg = card->getType(); room->sendLog(log); RecoverStruct recover; recover.card = this; recover.who = effect.from; room->recover(effect.from, recover); } }
void NosJujianCard::onEffect(const CardEffectStruct &effect) const{ int n = subcardsLength(); effect.to->drawCards(n); Room *room = effect.from->getRoom(); if(effect.to->getGeneral()->isCaoCao("zhugeliang")) room->playSkillEffect(skill_name, 3); else room->playSkillEffect(skill_name, qrand() % 2 + 1); if(n == 3){ QSet<Card::CardType> types; foreach(int card_id, effect.card->getSubcards()){ const Card *card = Sanguosha->getCard(card_id); types << card->getTypeId(); } if(types.size() == 1){ LogMessage log; log.type = "#JujianRecover"; log.from = effect.from; const Card *card = Sanguosha->getCard(subcards.first()); log.arg = card->getType(); room->sendLog(log); RecoverStruct recover; recover.card = this; recover.who = effect.from; room->recover(effect.from, recover); } }
int Card::getNumber() const{ if (m_number > 0) return m_number; if (isVirtualCard()) { if (subcardsLength() == 0) return 0; else { int num = 0; foreach (int id, subcards) { num += Sanguosha->getCard(id)->getNumber(); } return num; } } else